Конкатенация и транскодирование файлов MPEG-TS FFMPEG - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть видеорегистратор, который записывает эфирное ТВ и сохраняет записи в формате MPEG-TS, разбивая каждый эпизод на несколько файлов, каждый размером ~ 500 МБ.

Чтобы упростить архивирование, я пытался написать сценарий оболочки, чтобы автоматизировать процесс объединения файлов вместе и перекодирования их в более распространенный видеоформат, такой как h.264.

Вот шаги, которые я выполнил до сих пор:

  • Я хотел убедиться, что файлы, которые я получал, были действительны в первую очередь.Чтобы проверить это, каждый раздел транскодировался в Handbrake перед объединением с помощью команды concat в ffmpeg.Это работало, но было ручным и добавляло раздражающую черную рамку между каждым разделом.
  • Я написал сценарий оболочки, чтобы найти все разделы эпизода в папке и поместить имена файлов в текстовый файл, который дематер concat мог бы проанализировать.
  • Проверено этой командой:

ffmpeg -hide_banner -f concat -i video_files_tmp.txt -c:v libx264 -pix_fmt yuv420p -c:a aac $2$OUTPUT_FILE_NAME

Во время транскодирования это вызовет много предупреждений и ошибок, таких как «Несоответствие размера пакета PES».В какой-то момент он предупредит, что пропущено более 1000 кадров.Когда вывод воспроизводился, он пропускал кадры и приводил к файлу, в котором видео застыло на полпути, но звук продолжал воспроизводиться.Я также попытался добавить -vsync 0 к выводу.

  • Затем попытался разделить конкатенацию и транскодирование на два этапа:

ffmpeg -hide_banner -f concat -i video_files_tmp.txt -c copy output_tmp.ts
ffmpeg -hide_banner -i output_tmp.ts -c:v libx265 -pix_fmt yuv420p -c:a aac $2$OUTPUT_FILE_NAME

Это в основном то же самое, что и раньше.

  • Попробовал использовать кодер libx265.Тот же результат.
  • Затем я попытался просто воспроизвести сцепленный файл MPEG-TS напрямую, который также зависнет в какой-то момент во время воспроизведения.

Мне было интересно, какие флаги ffmpeg или опции установить, чтобы это работало, или другие опции, которые я мог бы попробовать?Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...