LINUX.ORG.RU

рассинхрон видео и аудио в ffmpeg

 


0

1

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

разбор на фреймы:

ffmpeg -i orig.mp4 -qscale:v 1 -qmin 1 -qmax 1 -vsync 0 tmp_frames/frame%08d.jpg

после пропускаю кадры через апскейлер и пихаю в папку out_frames

сборка видео из фреймов с аудиодорожкой из оригинального видео:

ffmpeg -i out_frames/frame%08d.jpg -i orig.mp4 -map 0:v:0 -map 1:a:0 -c:a copy -c:v h264_nvenc -r 23.98 -pix_fmt yuv420p output_w_audio.mp4

в итоге ему почему-то не хватает кадров до окончания ролика. как будто fps выше, чем нужно. хотя у обоих роликов 23.98 fps.

короче, подскажите если кто знает что не так делаю.

-r 23.98

Про всё в целом не подскажу, но вот эта часть явно расходится с тем, что ты хочешь. -r действует не на всё целиком, он действует на то, что в параметрах идёт после него.

То есть ffmpeg -r 23.98 -i out_frames/frame%08d.jpg <...> означает «взять кадры из картинок по 23.98 кадра в секунду, передать дальше». А ffmpeg -i out_frames/frame%08d.jpg <...> -r 23.98 <...> означает «взять кадры из картинок по 25 кадров в секунду, потом отбросить кадры так, чтобы время осталось тоже, но кадров стало 23.98 штуки в секунду, потом передать дальше».

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)