несогласованная частота кадров ffmpeg

#windows #video #ffmpeg #command-line-interface

Вопрос:

ffmpeg запускается с теми же аргументами, но разными входными данными в двух разных местах моего кода. Частота кадров установлена на 12 кадров в секунду с частотой кадров -. В одном случае выходное видео каждый раз довольно хорошо соответствует частоте кадров. В другом случае видео возвращается с 1 секундой видео на каждые 15 входных кадров, но опять же оно соответствует. Что может быть причиной такого расхождения?

Аргументы: -y -частота кадров 12 -ее значение -654 мс -i «C:path/d.JPG» — я «C:path/audio.mp3» -карта 0:v:0 -карта 1:a:0 -масштаб vf=1280:720:force_original_aspect_ratio=уменьшить,pad=1280:720:-1:-1:цвет=черный -acodec aac -vcodec libx264 -ar 48000 -pix_fmt yuv420p -movflags быстрый старт «C:pathoutput.mp4»

В коде, который его вызывает, есть десятки различий, но я не могу понять, как это повлияет на частоту кадров. Я попытался заменить mp3 на mp3 произвольной длины, чтобы посмотреть, возымеет ли это какой-либо эффект, но этого не произошло. Это оставляет только входные данные изображения.

правка: Так что это становится еще более странным. Я воспроизвел оба случая и изменил значение частоты кадров для каждого, чтобы проверить, что произошло. Почти в каждом случае я получал больше секунд видео, чем ожидал. Я проводил эти тесты с 400 кадрами и 5 секундами звука, чтобы убедиться, что отсутствие-кратчайшего не было фактором. Единственный раз, когда я получил совершенно точную частоту кадров, это когда она была установлена на 1. В любом другом случае (за исключением дословных 12 кадров в секунду в случае, который всегда работал) видео было слишком коротким на 5-15%. Это делает немного загадочным, как какая-либо часть моего кода когда-либо давала хорошие результаты.

Комментарии:

1. Для чего нужно его отклонение?

2. Аудио и видео записываются отдельно, то есть разница во времени начала между двумя записями для их синхронизации. Там есть проблема в том, что это не должно быть таким большим числом, но я предполагал, что это проблема в моем коде записи, а не в ffmpeg.

Ответ №1:

Что ж, оказывается, простая замена-частота кадров на-r устраняет эту проблему. Я все равно был бы признателен за некоторые разъяснения по этому поводу, если бы кто-нибудь мог объяснить.

Комментарии:

1. Хм, но-r останавливает работу смещения. Кроме того, проблема, по-видимому, частично была вызвана скоростью передачи звукового файла. Когда я изменил настройку записи звука, это, казалось, повлияло на частоту кадров, которую я получаю-частота кадров 12. Так что теперь я еще больше запутался.