python에서 ffmpeg를 사용하는 제일 좋은 방법은 사실 os.system으로 그냥 ffmpeg를 커맨드로 날리는 겁니다.
하지만 이건 불편하기도 하고 보안상 위협도 되면서 파라미터를 다 알기도 어려우니 절대로 추천하지 않습니다
그래서 여러가지 관련 패키지가 있는데
python-ffmpeg
ffmpeg-python
등이 있습니다.
신기하게도 다
import ffmpeg
이렇게 임포트를 합니다.
그래서 적당히 잘 알아서 써야 합니다. 제가 쓰고자 하는건 ffmpeg-python 패키지 입니다.
뭐.. 대충 사용법은
out, _ = ( ffmpeg.input(file, threads=0) .output("-", format="f32le", acodec="pcm_f32le", ac=1, ar=sr) .run(cmd=["./ffmpeg", "-nostdin"], capture_stdout=True, capture_stderr=True) ) |
대충 이런식입니다. numpy형태로 out객체를 돌려줍니다.
그런데 여기서 유심히 봐야하는건 .run안의 cmd=["ffmpeg","-nostdin"]입니다.
-nostdin은 표준입력을 사용하지 않겠다는 의미입니다.
바로 앞의 "ffmpeg"는 ffmpeg를 실행하는 명령어를 의미합니다.
즉, 이 패키지는 ffmpeg를 실행해서 영상이나 음성을 numpy 형태로 바꿔주는 역할을 합니다. 그래서 ffmpeg가 설치되어야 합니다.
그래서 리눅스에서는 ffmpeg를 저장소에서 설치하라고 되어있습니다만...
어찌된 영문인지 제 PC에서는 설치되어있는 ffmpeg를 실행을 못하고 오류를 뿜더군요.
그래서 머리를 쓴게 cmd=["ffmpeg"]를 cmd["./ffmpeg"]로 고치고 ffmpeg 바이너리를 실행하는 모듈과 같은 폴더에 넣는 것이었습니다.
아 물론 chmod +x로 실행 옵션은 주고요.
리눅스에서 바로 실행 가능한 바이너리는
https://johnvansickle.com/ffmpeg/
여기서 다운로드가 가능합니다. 여기서 다른 필터는 다 버리고 ffmpeg와 ffprobe만 복사해서 해당 실행을 하는 파이썬 스크립트와 같은 곳에 넣어두면 ffmpeg를 실행하는데 문제를 해결 할 수 있습니다.
윈도우라면 역시 https://www.gyan.dev/ffmpeg/builds/ 여기서 바이너리를 다운로드받아 복사하고 cmd=["ffmpeg.exe"]로 하면됩니다.
'기타 삽질' 카테고리의 다른 글
fairseq 모듈을 Pyinstaller로 패키징시 오류 (1) | 2024.09.07 |
---|---|
리눅스에서 Kinnect인식이 안 될때 (0) | 2023.12.24 |
무선 리피터와 Mesh네트워크의 차이 (1) | 2023.12.06 |
옛날게임을 돌리려고 하면 일어나는 사소한 문제들 (해결함) (4) | 2022.05.14 |
Chrome에서 Youtube 메뉴와 재생버튼등이 클릭이 안 될때 (0) | 2022.04.04 |