Видео, конвертированное с помощью FFMPEG, имеет различную продолжительность, почему?
Я конвертирую видео с помощью FFMPEG. Моя цель - преобразовать их в формат контейнера MP4 (MPEG-4, часть 14) с помощью аудиопотока, кодированного AAC, и потока видео, закодированного в MPEG-4, часть 10.
Я использую следующую строку для преобразования видео:
ffmpeg -y -i "{inputFile}" "{outputFile}"
Преобразованное видео выглядит нормально, однако длительность потоков в преобразованном файле и входном файле не всегда совпадает.
Я провел несколько экспериментов, и разница в продолжительности, несомненно, есть, но она не так уж и велика - во всяком случае, я тестирую небольшие видео. Вот мои результаты:
| InputFile | InputAudio | InputVideo | OutputAudio | OutputVideo |
|------------|------------|------------|-------------|--------------|
| h.avi | 3s 631ms | 3s 567ms | 3s 668ms | 3s 567ms |
| h.flv | 3s 631ms | 3s 558ms | 3s 668ms | 3s 567ms |
| h.mov | 3s 532ms | 3s 533ms | 3s 682ms | 3s 534ms |
| h.mp4 | 3s 605ms | 3s 534ms | 3s 682ms | 3s 567ms |
| h.mpg | 3s 605ms | 3s 533ms | 3s 563ms | 3s 534ms |
| h.wmv | 3s 620ms | 3s 633ms | 3s 659ms | 3s 567ms |
Поскольку я собирал программное обеспечение на основе FFMPEG, я был бы счастлив, если бы хотя бы мог понять причину этой разницы. Это из-за ненужного перекодирования?
В этом случае можно ли отключить эту транскодировку, чтобы FFMPEG не выполнял повторную выборку входного видеофайла?
Если я не могу его отключить, как я могу быть уверен (помимо тестирования), что эта разница не пропорциональна размеру видео?
Если я конвертирую, например, 10-часовое видео, разница в несколько секунд или даже минут мне не подходит.