[UE4] Electra Media PlayerにおけるHLSの作り方
Electra Media Playerとは
UE4.26.1より使えるようになった、HLSが再生できるようになるメディアプレーヤーのプラグイン
基本的な使い方は以下の公式ドキュメントをご参照いただきたい。
再生できるHLSの制約
上記ドキュメントの「バリアント ストリームの制約事項」の記載でもわかる通り、Electra Media Playerで再生できるストリームの制約はかなり多いです。
hls.js等で再生できても、Electra Media Playerでは再生できないということが往々にして発生します。
詰まりポイント
ここでは主に自らがElectra Media Playerで再生する際に詰まったポイントを記載します。
オーディオグループの作成
Electra Media Playerで再生するhlsストリームには、AACのオーディオストリームが1つ含まれているオーディオグループを作成する必要があります。
-
ffmpegのオプションでは、以下のように指定して作成します。
-map 0:v -map 0:a -c:v:0 h264 -c:a:0 aac -hls_list_size 0 -var_stream_map "v:0,agroup:audio_group a:0,agroup:audio_group,language:JP"
-
AWS Elemental MediaLiveでは、オーディオレンディショングループを作成します。
Fragmented MP4でのフォーマット
ドキュメントでは以下の記載があります。
バリアント ストリームは、ISO/IEC-14496-12 または CMAF セグメントとしてフォーマットされている必要がある
これはつまり、Fragmented MP4(.m4s)でフォーマットされている必要があるということです。
一般的なTransport Stream(.ts)でフォーマットされたものは再生できないということとなります。
-
ffmpegのオプションでは、以下のように指定して作成します。
hls_segment_type fmp4
-
AWS Elemental MediaLiveでは、HLS出力の設定をfmp4 HLSにします。
サンプル
参考までに当方で再生が確認できた(2022年1月時点)ffmpegコマンドを以下に掲載しておきます。
ffmpeg -i (入力パス) -map 0:v -map 0:a -c:v:0 h264 -c:a:0 aac -hls_segment_type fmp4 -f hls -master_pl_name (マスタープレイリストの名前) -hls_fmp4_init_resend 1 -var_stream_map "v:0,agroup:audio_group a:0,agroup:audio_group,language:JP" (出力パス)
参考になった資料
もし不明点等ございましたら、お気軽にTwitter(@gagagahaku)等でお声かけください!
Discussion