обрезать последний кадр при преобразовании одного изображения + звуковой дорожки в видео в ffmpeg

1

благодаря ответам на этот вопрос суперпользователя Объедините одно изображение + один аудиофайл, чтобы сделать одно видео, используя FFmpeg Мне удалось создать видео из одного изображения и звуковой дорожки.

я использовал код PJ Brunets:

ffmpeg -r 1 -loop 1 -i 00.png -i 00.wav -acodec copy -r 1 -shortest 00.avi

это работает нормально, но я заметил, что продолжительность сгенерированного видео больше, чем оригинальная звуковая дорожка. в моем случае звук составляет 36,61 секунды, а результирующее видео - 38 секунд.

Я думаю, что проблема связана с низкой частотой кадров, поэтому я поднял частоту кадров с 1 до 2 кадров в секунду до 25 кадров в секунду и сравнил результаты: с более высокой частотой кадров вы получаете большую точность по длительности.

Теперь мой вопрос: есть ли способ по-прежнему использовать 1 кадр / с, но обрезать последний кадр, когда аудио заканчивается? таким образом, вы можете добиться более быстрого времени кодирования без потери оригинальной длины.

stefano
источник
AFAIK, не возможно для AVI. AVI не хранит PTS, поэтому длительность каждого кадра равна частоте кадров, поэтому ваша длительность квантуется в соответствии с этим значением.
Gyan
Есть ли другой контейнер, как AVI, который может хранить без потерь WAV?
stefano
MOV, MKV, NUT ..
Gyan
MOV & amp; MKV менее точны, чем AVI (40-41 с). гайка 37s, но не принимаются на YouTube. я должен выпустить много длинных треков + 1 ч и других синглов, которые должны следовать друг за другом, как в миксе. я пришел к выводу использовать avi 1fps (с ошибкой + 1,5s) для длинных треков и avi 2fps (+ 1s) для одиночных треков. 10fps (+ 0,2s) или 25 fps (почти точные) были бы лучше для плавного перехода, но изображение становится блочным после 4fps и выше. если я делаю ту же работу с изображениями Сони Вегаса, они не становятся блочными, но для кодирования требуется гораздо больше времени и мин. частота кадров составляет 12 кадров в секунду.
stefano
Если вам нужно точно добавить несколько аудио / видео сегментов, используйте фильтр concat. Он должен работать с 1 к / с, но в любом случае с кодеком libx264 и 24 к / с он будет работать.
Gyan