В таком случае (при прогрессивной асинхронности) должно помочь изменение частоты кадров видео и, следовательно, его итоговой длительности. Конечно, целью такой операции будет достижение одинаковой продолжительности аудио- и видеодорожек. В линейном видеоредакторе Avidemux это делается следующим образом.
Откройте проблемное видео и посмотрите его свойства (Файл — Свойства), вы увидите, что общая продолжительность видео и звука разная. Как я уже сказал, нам надо сделать её одинаковой. Но перед этим установите кодек аудио на MP3 (lame), потому что иначе всё нижеописанное не сработает (по крайней мере может не сработать).
Чтобы получить требуемую частоту кадров в секунду, делим количество кадров видео (указано там же в Свойствах файла) на общую продолжительность звуковой дорожки в секундах (в секунды переводить придется самостоятельно), при чем миллисекунды не отбрасывайте, они играют решающее значение.
Пример.
Продолжительность звуковой дорожки 01:28:53.159 = 88 мин. * 60 сек. + 53 сек. + 0.159 сек. = 5333.159 сек.
Пусть количество кадров будет 133339. Делим 133339 на 5333.159 = 25,001879749. Это и есть значение FPS (частоты кадров, к/с).
Так как Avidemux позволяет устанавливать частоту кадров с точностью до тысячных (3 знака после запятой), нам придется округлить значение (25,002), что не позволит нам получить точное совпадение продолжительности видео- и аудиодорожек в данном примере, но погрешность округления не должна сыграть большую роль, так что в целом звук и артикуляция должны совпасть (проверено на личном опыте, в примере настоящие цифры).
Теперь самое главное. Открываем Видео — Частота кадров и вставляем туда наше значение. После этого можете снова открыть свойства и посмотреть, что продолжительность примерно сравнялась (за минусом погрешности округления, которая ограничивается миллисекундами). Видео можно сохранять.

теги: 

