Я хотел бы обернуть 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 ответ1

1

Нашел решение. MP4 не может записывать в канал и, следовательно, не может передавать поток. Чтобы быть в потоке, он должен иметь возможность поиска в начале файла, чтобы записать выходной заголовок, когда он закончится.

Я нашел решение, чтобы это исправить. Просто добавьте опцию -movflags frag_keyframe+empty_moov.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .