HLSかMP4か?
新しい Brightcove Player を使用する場合は、最も多くのデバイスやブラウザにリーチするために、HLS と MP4 の両方のレンディションを持つトランスコードプロファイルを選択または作成することをお勧めします。この表は、プレイヤーが実行時に特定のブラウザでどのレンディションを再生するかを決定する方法を示しています。
ブラウザの種類 | デフォルトで使用される再生技術 |
---|---|
Android 5.0+でデスクトップChrome 34+、デスクトップFirefox 42+、EdgeとChrome 34+ | HTML ベースの HLS (MSE を使用) |
デスクトップ(macOS)Safari、モバイル(iOS)Safari | ネイティブ HLS (ブラウザによって実装) |
古いFirefoxとChrome | フラッシュベースのHLS。フラッシュ10.3以降が必要(フラッシュが無効になっている場合は、MP4にフォールバックする) |
Windows 8.1+でIE 11 | HTML ベースの HLS (MSE を使用) |
HLS & DASHレンディションの選択
HLS と DASH ビデオはセグメントに分割されます。通常、セグメントの長さは約 10 秒ですが、これより長い場合も短い場合もあります。帯域幅と解像度がわかっている場合、プレーヤーはこれらの条件に基づいてレンディションを選択します。解像度または帯域幅が不明な場合 (たとえば、display:none
でプレーヤーを作成する場合など)、プレーヤーは.5 MB/秒 (4000 kbs に相当) に最も近いレンディションから開始します。セグメント境界では、以下のテキストとイメージで説明するより高いレンディションまたは低いレンディションに切り替わります。
HLS と DASH は、利用可能な帯域幅とエンコーディングを考慮し、同時にプレーヤーのサイズを考慮して、可能な限り最高品質の視聴体験を確保しようとします。これは、常に利用可能な最高のビットレートのレンディションを使用することを意味するわけではありません。たとえば、プレーヤーが300px × 150pxの場合、4Kストリームをダウンロードするには帯域幅の無駄になります。
デフォルトでは、プレーヤーは、最後に検出されたセグメント帯域幅よりも小さい最も高いビットレートのバリアントをロードしようとします。ただし、1つ条件があります: 現在のプレーヤーサイズより大きいサイズのバリアンとが複数ある場合、現在のプレーヤーサイズより1サイズ大きいものだけに切り替えます。
再生中、プレーヤーは次のアルゴリズムに基づいて、より高いレンディションまたは低いレンディションに切り替わります。このアルゴリズムへの入力は次のとおりです。
- 使用可能な帯域幅
- プレーヤーの寸法
高レベルのアルゴリズムの概要
- 測定された帯域幅よりもビットレートが高いレンディションをすべて削除します。
- 残りのレンディションを解像度 (水平線数) で高い順に並べ替えます。
- プレーヤーの寸法に最も近いものを指定します。
- そのものより1つ高いものを選択します。
このプロセスを以下に示します。
- 新しいセグメントがダウンロードされるたびに、ダウンロードビットレートはセグメントのサイズとダウンロードに要した時間を基に計算されます。
- 新しい測定値よりもビットレートが高いすべてのレンディションが除外されます。
- 現在のプレーヤーのサイズよりも大きいレンディションはすべて除外されます。
- プレーヤーが1ピクセル小さいからと言って、画質が大幅に低下することは好ましくないので、次に高い解像度を追加しています。その結果、最も高いビットレートのレンディションが使用されます。
上記のフィルタリングに基づいて許容できるレンディションがないことが判明した場合は、マスタープレイリストにリストされている最初のエンコーディングが使用されます。
プレーヤーに別の優先度のセットを使用したい場合は、レンディション選択ロジックを完全に置き換えることができます。たとえば、再生中にストールが多くなる可能性がありますが、解像度によって常に最適なレンディションを選択できます。詳細については、 Player.hls.SelectPlaylist のマニュアルを参照してください。
MP4 レンディション選択
モバイル端末でMP4を再生する場合(上記のルールに基づいて)、プレーヤーは0.5 MB/秒に最も近いビットレートを持つMP4を選択します。デスクトップまたはラップトップデバイスでは、3 MB/秒に最も近いものが選択されます。
オーディオトラックの選択
マニフェストは、選択したビデオトラックに応じて、読み込むオーディオトラックを決定します。
例
プレイリスト-1.m3u8
#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="stereo",LANGUAGE="en",NAME="English",DEFAULT=YES,AUTOSELECT=YES,URI="audio/stereo/en/128kbit.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="stereo",LANGUAGE="dubbing",NAME="Dubbing",DEFAULT=NO,AUTOSELECT=YES,URI="audio/stereo/none/128kbit.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="surround",LANGUAGE="en",NAME="English",DEFAULT=YES,AUTOSELECT=YES,URI="audio/surround/en/320kbit.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="surround",LANGUAGE="dubbing",NAME="Dubbing",DEFAULT=NO,AUTOSELECT=YES,URI="audio/stereo/none/128kbit.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Deutsch",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,LANGUAGE="de",URI="subtitles_de.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="English",DEFAULT=YES,AUTOSELECT=YES,FORCED=NO,LANGUAGE="en",URI="subtitles_en.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Espanol",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,LANGUAGE="es",URI="subtitles_es.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Français",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,LANGUAGE="fr",URI="subtitles_fr.m3u8"
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=258157,CODECS="avc1.4d400d,mp4a.40.2",AUDIO="stereo",RESOLUTION=422x180,SUBTITLES="subs"
video/250kbit.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=520929,CODECS="avc1.4d4015,mp4a.40.2",AUDIO="stereo",RESOLUTION=638x272,SUBTITLES="subs"
video/500kbit.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=831270,CODECS="avc1.4d4015,mp4a.40.2",AUDIO="stereo",RESOLUTION=638x272,SUBTITLES="subs"
video/800kbit.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1144430,CODECS="avc1.4d401f,mp4a.40.2",AUDIO="surround",RESOLUTION=958x408,SUBTITLES="subs"
video/1100kbit.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1558322,CODECS="avc1.4d401f,mp4a.40.2",AUDIO="surround",RESOLUTION=1277x554,SUBTITLES="subs"
video/1500kbit.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=4149264,CODECS="avc1.4d4028,mp4a.40.2",AUDIO="surround",RESOLUTION=1921x818,SUBTITLES="subs"
video/4000kbit.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=6214307,CODECS="avc1.4d4028,mp4a.40.2",AUDIO="surround",RESOLUTION=1921x818,SUBTITLES="subs"
video/6000kbit.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=10285391,CODECS="avc1.4d4033,mp4a.40.2",AUDIO="surround",RESOLUTION=4096x1744,SUBTITLES="subs"
video/10000kbit.m3u8
上記のサンプルには、2つのオーディオグループはステレオそしてサラウンドの2つです。また、映像の解像度は6種類、ビットレートは8種類です:
- 3 つの低いビットレートは、ステレオオーディオグループ
- 5 つの高いビットレートは、サラウンドオーディオグループを使用します
2 つのオーディオグループには、言語と名前の異なる 2 つのストリームがあります。これが存在すると、プレーヤーのメニューに代替オーディオトラックとして表示されます。
備考
-
HLS では、Demuxed Audioシナリオでオーディオストリームを適合させることはできません。したがって、上記の例のように、異なるオーディオグループや代替オーディオがある場合、ステレオトラックまたはサラウンドトラックの複数の品質レンディションを指定することはできません。
ただし、プレイリストがオーディオ専用の場合は、通常の
EXT-X-STREAM-INF
タグを使用してオーディオが提供されていれば可能です。 - DASH では、アダプティブオーディオを使用できますが、オーディオ専用のマニフェストでない限り、現在アダプティブははサポートされていません。ビデオレンディションに関連付けられたレンディションを 1 つ選択します。これは、私たちが見つけた最初のオーディオレンディションです。