Python 함수로 비디오에서 오디오를 추출하기 위한 ffmpeg 래핑

Python 함수로 비디오에서 오디오를 추출하기 위한 ffmpeg 래핑

비디오에서 오디오를 추출하기 위해 Python 함수에 ffmpeg를 래핑하고 싶습니다. 명령줄을 통해 mp4 비디오에서 오디오를 성공적으로 추출할 수 있습니다.

ffmpeg -i sourcevideo.mp4 -vn -acodec copy audiotrack.m4a

하지만 아래 함수에서 이상한 오류가 발생하여 해결책을 찾을 수 없습니다.

def extractAudioTrack(self,inputFilename):
    print "extract audio from of: " + inputFilename
    command = [ FFMPEG_BIN,
                '-i', inputFilename,
                '-vn', 
                '-acodec', 'copy', 
                '-f', 'm4a',
                '-'
                ]
    pipe = sp.Popen(command, stdout = sp.PIPE)
    return StringIO(pipe.proc.stdout.read())

오류:

[NULL @ 0x657480] Requested output format 'm4a' is not a suitable output format
pipe:: Invalid argument

내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변1

해결책을 찾았습니다. MP4는 파이프에 쓸 수 없으므로 스트리밍할 수 없습니다. 스트리밍하려면 파일 시작 부분을 다시 검색하여 파일이 완료되었을 때 출력 헤더를 쓸 수 있어야 합니다.

이 문제를 해결할 해결책을 찾았습니다. -movflags frag_keyframe+empty_moov 옵션을 추가하기만 하면 됩니다.

관련 정보