Как сохранить ffmpeg output.mp4 в файл - PullRequest
0 голосов
/ 31 марта 2020

У меня очень базовый c вопрос. Я объединил файлы .wav и .mp4 в файл output.mp4, используя ffmpeg в python:

   !ffmpeg -i /content/input.mp4 -i audio.wav -c:v copy -c:a copy output.mp4

Теперь, как мне сохранить файл output.mp4 в файле .mp4 на моем компьютере? Большое спасибо заранее

1 Ответ

1 голос
/ 31 марта 2020

Для выполнения ffmpeg с Python вы можете использовать subprocess:

import subprocess as sp
sp.run('ffmpeg -y -i /content/input.mp4 -i audio.wav -c:v copy -c:a copy output.mp4')

Проверить преобразование в командной строке ffmpeg (в консоли) перед использованием Python и проверить там нет ошибок.

В большинстве случаев вы не можете сохранить аудиокод c (используя -c:a copy) с файлом .wav в качестве входных данных и сохранить результат в .mp4 видеофайле.

Я получаю следующее сообщение об ошибке:

[mp4 @ 000001d150ea6780] Не удалось найти тег для кода c pcm_s16le в потоке # 1, код c в настоящее время не поддерживается в контейнере Не удалось записать заголовок для выходного файла # 0 (неверный код c параметры?): неверный аргумент

В случае ошибки используйте: -c:a aac.

Использование -c:a copy работает, когда код c файла wav, например, ac3 (но это редкий случай).


Тестирование решения путем генерации синтетических c входных аудио- и видеофайлов:

import subprocess as sp

sp.run('ffmpeg -y -f lavfi -i testsrc=size=192x108:rate=30 -vcodec libx264 -pix_fmt yuv420p -t 5 input1.mp4')
sp.run('ffmpeg -y -f lavfi -i sine=frequency=400 -acodec ac3 -ar 22050 -t 5 audio1.wav')
sp.run('ffmpeg -y -i input1.mp4 -i audio1.wav -c:v copy -c:a copy output1.mp4')

Приведенный выше код работает, поскольку я выбрал ac3 code c для audio1.wav.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...