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/

 

John Van Sickle - FFmpeg Static Builds

Welcome! Here you'll find the latest versions of FFmpeg for Linux kernels 3.2.0 and up. For installation instructions please read the FAQ. Note: it's highly recommended to use git master builds, because bug fixes and other improvements are added daily. All

johnvansickle.com

여기서 다운로드가 가능합니다. 여기서 다른 필터는 다 버리고 ffmpeg와 ffprobe만 복사해서 해당 실행을 하는 파이썬 스크립트와 같은 곳에 넣어두면  ffmpeg를 실행하는데 문제를 해결 할 수 있습니다.

 

윈도우라면 역시 https://www.gyan.dev/ffmpeg/builds/ 여기서 바이너리를 다운로드받아 복사하고 cmd=["ffmpeg.exe"]로 하면됩니다.

 

 

Builds - CODEX FFMPEG @ gyan.dev

FFmpeg is a widely-used cross-platform multimedia framework which can process almost all common and many uncommon media formats. It has over 1000 internal components to capture, decode, encode, modify, combine, stream media, and it can make use of dozens o

www.gyan.dev

 

,