Я хочу захватить сегменты/фрагменты видео с адаптивным битрейтом (ABR) из проигрывателя (HLS/DASH), работающего в моем браузере, чтобы объединить все фрагменты в одно бесшовное видео для последующего анализа QoE (качества восприятия) видео целиком, т. е. VMAF. Для этого все сегменты должны быть частью одного видеофайла.
Как правило, объединение фрагментов видео с одинаковым разрешением может быть выполнено с помощью команды cat
в ОС на базе Linux, например,
cat init.mp4 video1.mp4 video2.mp4 > fullvideo.mp4
Однако я хочу объединить видео, когда проигрыватель ABR переключается между профилями/разрешениями, например,
800x600init.mp4
800x600video1.mp4
1920x1024init.mp4
1920x1024video2.mp4
1920x1024video3.mp4
На проигрывателях HLS/DASH процесс переключения происходит плавно, и я хотел бы воспроизвести это поведение в комбинированном файле. Однако, когда я пытаюсь объединить все сегменты, используя cat
, вывод неправильно обрабатывается проигрывателями mp4, такими как VLC. Насколько я понимаю, кажется, что формат .mp4
просто поддерживает конкатенацию видеокадров в одном разрешении.
Кстати, если я делаю конкатенацию, группируя сегменты по разрешению, то выходные файлы корректно воспроизводятся видеоплеерами.
Ниже приведен пример того, что я пробовал изначально. Порядок файлов определяется порядком, в котором видеофрагменты запрашиваются проигрывателем.
[administrator@PlayerMedia mediaFiles]$ cat NGK_The_Owl_Y_Co_T1_E02_HD_STR-video=800000-init.mp4 \
NGK_The_Owl_Y_Co_T1_E02_HD_STR-video=800000-0.mp4 \
NGK_The_Owl_Y_Co_T1_E02_HD_STR-video=5993000-init.mp4 \
NGK_The_Owl_Y_Co_T1_E02_HD_STR-video=5993000-60060.mp4 \
NGK_The_Owl_Y_Co_T1_E02_HD_STR-video=5993000-120120.mp4 > final.mp4
Выходной файл final.mp4
содержит только метаданные, включенные в первый init.mp4
@ битрейт = 800000, поэтому следующие фрагменты видео с битрейтом = 5993000 (более высокое разрешение) отображаются как поврежденное видео.
Я хотел бы знать, что является лучшей альтернативой для записи видео, включая изменения разрешения, с которыми сталкиваются проигрыватели протоколов ABR, таких как HLS или DASH.