Video On Demand (çok bit oranlı) İçeriğini izleyicilerimize dağıtmak için Helix Sunucusu kullanıyoruz. Bu, birden fazla video akışı ve bir ses akışı içeren bir MP4 dosyası olduğu anlamına gelir. MP4 dosyalarımızın kaynağı Helix Producer'dır (raw videoyu bir MP4 dosyasına kodlar).
Helix Sunucusu, doğrudan Helix Producer'dan MP4 dosyasını kullanırsak, dosya içindeki birden fazla video akışını tanır. Bunun için FFprobe çıkışı:
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
Ancak dosyayı kesmemiz gerekiyor - birden fazla video akışını saklamak için FFmpeg kullanıyoruz:
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
Sorunumuz burada başlıyor. Helix Sunucusu artık farklı video akışlarını tanımıyor ve sadece birincisini müşteriye sunuyor. FFprobe bana yeni dosya hakkında şunları söyledi:
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
Ben zaten -movflags seçenekleri ve -rtpflag seçeneklerinin kayda değer miktarda kombinasyonunu denedim. Ama hiçbiri yardım etmedi.
Daha sonra major_brand'ı mp4box ile ayarlamaya çalıştım:
mp4box -brand 3gr6 out.mp4
ve mp4box ile ipucu parçaları oluşturmak için:
mp4box -hint out.mp4
Ama sıkıştım.
Çok bit hızı olan MP4 dosyaları ile birlikte Helix Sunucusu tecrübesi olan var mı? Veya MP4 dosyalarını kesip birleştirmek için başka yollar var mı?