Я хотел бы обернуть ffmpeg в функцию python для извлечения аудио из видео. Я могу успешно извлекать аудио из видео 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.