Мы используем Helix Server для распространения контента по запросу (с мультибитрейтом) среди нашей аудитории. Это означает, что существует один файл MP4, который содержит несколько видеопотоков и один аудиопоток. Источником наших файлов MP4 является Helix Producer (кодирует необработанное видео в файл MP4).
Сервер Helix распознает несколько разных видеопотоков внутри файла, если мы используем файл MP4 прямо из Helix Producer. Вывод FFprobe для него:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '..\..\validate\20140225095504.mp4':
Metadata:
major_brand : 3gr6
minor_version : 0
compatible_brands: 3gr63gp63gg63gp5isom
creation_time : 2014-02-25 08:55:04
Duration: 01:35:54.14, start: 0.000000, bitrate: 1051 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 568x320, 285 kb/s, 23.80 fps, 25 tbr, 1k tbn, 50 tbc (default)
Metadata:
handler_name : Video Stream
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 47 kb/s (default)
Metadata:
handler_name : Audio Stream
Stream #0:2(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 568x320, 653 kb/s, 23.80 fps, 25 tbr, 1k tbn, 50 tbc (default)
Metadata:
handler_name : Video Stream
Stream #0:3(und): Data: none (rtp / 0x20707472), 17 kb/s (default)
Metadata:
handler_name : Video Stream
Stream #0:4(und): Data: none (rtp / 0x20707472), 8 kb/s (default)
Metadata:
handler_name : Audio Stream
Stream #0:5(und): Data: none (rtp / 0x20707472), 31 kb/s (default)
Metadata:
handler_name : Video Stream
Unsupported codec with id 0 for input stream 3
Unsupported codec with id 0 for input stream 4
Unsupported codec with id 0 for input stream 5
Однако нам нужно вырезать файл - мы используем FFmpeg, чтобы сохранить несколько видеопотоков:
ffmpeg.exe -i ..\..\validate\20140225095504.mp4 -map 0:0 -map 0:1 -map 0:2 -acodec copy -vcodec copy -ss 00:30:00 -t 00:03:00 -movflags faststart+rtphint out.mp4
Это где наша проблема начинается. Сервер Helix больше не распознает различные видеопотоки и предлагает клиенту только первый. FFprobe сообщает мне следующее о новом файле:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'out.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf55.34.101
Duration: 00:03:00.00, start: 0.000000, bitrate: 2096 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 568x320, 286 kb/s, 23.87 fps, 25 tbr, 16k tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 47 kb/s (default)
Metadata:
handler_name : SoundHandler
Stream #0:2(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 568x320, 655 kb/s, 23.87 fps, 25 tbr, 16k tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:3(eng): Data: none (rtp / 0x20707472), 335 kb/s
Metadata:
handler_name : HintHandler
Stream #0:4(eng): Data: none (rtp / 0x20707472), 3 kb/s
Metadata:
handler_name : HintHandler
Stream #0:5(eng): Data: none (rtp / 0x20707472), 762 kb/s
Metadata:
handler_name : HintHandler
Unsupported codec with id 0 for input stream 3
Unsupported codec with id 0 for input stream 4
Unsupported codec with id 0 for input stream 5
Я уже пробовал значительное количество комбинаций всех опций -movflags и -rtpflag. Но никто из них не помог.
Далее я попытался установить major_brand с помощью mp4box:
mp4box -brand 3gr6 out.mp4
и создать хинтинговые треки с помощью mp4box:
mp4box -hint out.mp4
Но я застрял.
У кого-нибудь есть опыт работы с Helix Server в сочетании с мультибитрейтными файлами MP4? Или есть другие способы вырезать и объединять файлы MP4?