У меня есть несколько видеофайлов в MPEG-PS\MPEG-4 Visual\MPEG Audio , эти файлы имеют поврежденные временные коды, что приводит к неспособности большинства проигрывателей воспроизводить его правильно. Когда я пытаюсь открыть его с помощью VLC, он воспроизводит видео нормально, но индикатор общей продолжительности файла постоянно меняется, скача вперед и назад.

Я попытался просто конвертировать файлы в MPEG-4\AVC\AAC с помощью этой команды:

ffmpeg.exe -nostdin -y -loglevel info  -i "D:\input.mp4"  -f mp4  "D:\output.mp4"

Но это привело к файлу с неправильной продолжительностью. Воспроизведение видеопотока в порядке, но общая длительность полученного файла на несколько часов больше, чем должна быть, то есть несколько часов черных кадров и тишина в конце.

Есть ли способ конвертировать MPEG-PS\MPEG-4 Visual\MPEG Audio в MPEG-4\AVC\AAC с исправлением или созданием новой временной шкалы?

1 ответ1

0

У вас есть две возможности:

  • используйте параметр -t, чтобы остановиться на желаемой конечной точке
  • Используйте входной сигнал concat : очень короткий правильный клип (например, 1 кадр черного цвета), а затем дефектный клип. При входе concat ffmpeg будет использовать временные метки с первого входа, а затем адаптирует следующие временные метки, чтобы легко добавить к нему.

Вы также можете использовать параметр -c copy чтобы избежать перекодирования, если в этом нет необходимости.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .