私の最初のタスクは、コーデックを変更せずにh264 \ aacビデオファイルを分割し、HLSで再生できるようにするWindows用のセグメンターを見つけることでした。
私のために働いた最良の方法は、次のようにffmpegを使用することです:
ffmpeg -i encoded.mp4 -c copy -map 0 -vbsf h264_mp4toannexb -flags -global_header -f segment -segment_time 10 -segment_format mpegts stream%d.ts
さて、これはファイルを多かれ少なかれ正しく分割しますがmediastreamvalidator
、いくつかの警告を投げましたが、それでも私はビデオを再生することができました。
しかし、ここで注意が必要な部分があります。ffmpegは.m3u8ファイルを作成できません。私が必要としているバリアントプレイリストファイルを作成する必要がない限り、これは問題ではありません。だから今、私は模倣するWindows用のアプリを見つけるか書く必要がありますvarianplaylistcreator
たとえば、64、150、300、500、800、1200、2400の異なる帯域幅ごとに同じビデオがエンコードされているとします。各ビデオをセグメント化した後、これらのセグメントをプレイリストファイルを含む個別のフォルダーに配置します。レンディションごとに。
これで、バリアントプレイリストファイルを作成できます。このファイルには、すべてのレンディションと、異なるレンディションの提供を自動的に切り替える帯域幅サーバーに関する指示がリストされています。
通常、バリアントプレイリストは次のようになります。
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=512376
500/500k_512x384_x264_372_quicktime_128.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=68795
64/64k_256x192_x264_32_quicktime_32.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=155580
150/150k_256x192_x264_118_quicktime_32.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=308895
300/300k_512x384_x264_172_quicktime_128.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=811310
800/800k_512x384_x264_672_quicktime_128.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1210182
1200/1200k_1024x768_x264_1072_quicktime_128.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2408106
2400/2400k_1024x768_x264_2272_quicktime_128.m3u8
BANDWITH属性値に注意してください。これらは、によって計算された値だと思いますvarinatplaylistcreator
。
そして、私はそれがどのようにそれを行うのかわかりません。どういうわけか、各レンディションのビデオ(セグメント)の平均ビットレートが必要であり、それに基づいてそれが行われます。
だから私の質問は:それらがどのように計算されるかです。あるいは、誰かがWindowsで実行して、さまざまなプレイリストを作成できるツールをすでに作成しているかもしれません。