У меня есть 2 файла .webm, один содержит видео, другой аудио. Мне нужно создать один файл mp4, содержащий как видео, так и аудио, в синхронизации. Вот то, что я пытаюсь сделать:ffmpeg аудио и видео не синхронизированы при использовании необработанного формата
ffmpeg -ss 00:00:00.33 -i user_17624_1-1762.webm -i user_17624_2-1767.webm -r 15 output_good.mp4
-ss по 0.33s потому, что видео началось 0.33s перед тем аудио - 1762 и 1767 являются номера кадров, поэтому они 5 кадров прочь, и 15 кадров в секунду.
Выполняя это, я получаю идеальную запись, где видео и аудио синхронизируются по всему файлу.
Но все дело в том, что мне нужно сделать некоторые изменения видеокадров, и я делаю это своим приложением C, управляющим байтами в необработанном потоке видео, поэтому я не могу сделать это таким образом, мне нужно сначала перекодируйте в RAW, затем обработайте, затем закодируйте mp4 обратно из raw. Удаление моего C приложения из сети, чтобы убедиться, что это не проблема, это сводится к:
ffmpeg -ss 00:00:00.33 -i user_17624_1-1762.webm -an -r 15 -f rawvideo -pix_fmt yuv420p -s 1920x1080 ./video.pipe &
ffmpeg -i user_17624_2-1767.webm -vn -ar 44100 -ac 2 -f s16le -acodec pcm_s16le ./audio.pipe &
ffmpeg -an -r 15 -f rawvideo -pix_fmt yuv420p -s 1920x1080 -i ./video.pipe -vn -ar 44100 -ac 2 -f s16le -acodec pcm_s16le -i ./audio.pipe -r 15 output_bad.mp4
в результате да, запись, где аудио и видео далеко друг от друга, и, кажется, также колебаться длительность файла.
Что я делаю неправильно с этими перекодировками видео? Помогите мне пожалуйста :)
Михаил
Конечно, первое, что я попробовал это преобразовать их, WebM файлы в MP4s, а затем использовать их для конвертации в них сырой ... это не помогло. Даже с -g 1. –