Использование ffmpeg для объединения сегментов из нескольких видео - PullRequest
0 голосов
/ 05 июля 2018

Мы пытаемся настроить процесс, позволяющий пользователю объединять сегменты из нескольких видео. Наш процесс настроен на использование ffmpeg для создания отдельных файлов mp4 для каждого сегмента, а затем для их присоединения с использованием процесса демультиплексора ffmpeg concat. При создании файлов сегмента mp4 мы пытаемся сделать их одинаковыми с точки зрения кодекса, измерений и т. Д., Чтобы сцепление было успешным. Вот пример вызова для создания одного из сегментов mp4s.

ffmpeg -ss 0.5 -t 299.5 -i /tmp/vid1.mp4 -c:v libx264 -c:a aac -framerate 29.97 -b:v 540k -maxrate 540k -minrate 540k -bufsize 540k -vf scale=640:480,fade=t=out:st=294.5:d=5 /tmp/vid1_new.mp4

Этот процесс работает в некоторых случаях, но в других присоединенный файл будет правильно воспроизводить первый сегмент, но на более поздних сегментах видео будет иногда зависать, или аудио будет ускорено. У кого-нибудь есть предложения, как сделать вышеупомянутую команду ffmpeg более «пуленепробиваемой», чтобы все файлы были совместимы?


Команда, которую мы используем для объединения файлов:

/var/ffmpg/bin/ffmpeg -f concat -safe 0 -i /tmp/files.txt -c copy /tmp/combined.mp4

Вывод ffprobe для одного файла:

{
  "format": {
    "filename": "vid2.mp4",
    "nb_streams": 2,
    "nb_programs": 0,
    "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
    "format_long_name": "QuickTime / MOV",
    "start_time": "0.000000",
    "duration": "1004.944000",
    "size": "109489681",
    "bit_rate": "871608",
    "probe_score": 100,
    "tags": {
      "major_brand": "isom",
      "minor_version": "512",
      "compatible_brands": "isomiso2avc1mp41",
      "encoder": "Lavf54.63.103"
    }
  }
}

Вывод ffprobe второго файла:

{
  "format": {
    "filename": "vid1.mp4",
    "nb_streams": 2,
    "nb_programs": 0,
    "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
    "format_long_name": "QuickTime / MOV",
    "start_time": "0.000000",
    "duration": "1159.164000",
    "size": "63903454",
    "bit_rate": "441031",
    "probe_score": 100,
    "tags": {
      "major_brand": "isom",
      "minor_version": "512",
      "compatible_brands": "isomiso2avc1mp41",
      "encoder": "Lavf56.40.100"
    }
  }
}
...