概要
High-Effiency Video Coding(HEVC)は、H.265とも呼ばれ、ビデオファイルサイズを縮小するビデオ圧縮規格で、より高品質な再生を可能にします。
Android 版 Brightcove ネイティブ SDK では、次の HEVC 選択プロセスが使用されます。
HEVC ソース選択
HEVC ソース選択プロセスは、Catalog
Brightcoveを使用して動画を要求した後に開始されます。
アカウント設定によっては、HEVC レンディションの有無にかかわらず、Catalog
応答に複数のソースが含まれる場合があります。例を次に示します。
"sources": [
{
"type": "application/dash+xml",
"src": "http://manifest.prod.boltdns.net/manifest/v1/dash/live-baseurl/clear/4800266849001/11023209-08e4-40d4-9a8b-25aa659421e2/2s/manifest.mpd?fastly_token=ZYZ",
"profiles": "urn:mpeg:dash:profile:isoff-live:2011"
},
{
"type": "application/dash+xml",
"src": "https://manifest.prod.boltdns.net/manifest/v1/dash/live-baseurl/clear/4800266849001/11023209-08e4-40d4-9a8b-25aa659421e2/2s/manifest.mpd?fastly_token=XYZ",
"profiles": "urn:mpeg:dash:profile:isoff-live:2011"
},
{
"type": "application/dash+xml",
"src": "http://manifest.prod.boltdns.net/manifest/v2/dash/live-baseurl/clear/avc1_hvc1_mp4a/4800266849001/11023209-08e4-40d4-9a8b-25aa659421e2/2s/manifest.mpd?fastly_token=XYZ",
"profiles": "urn:mpeg:dash:profile:isoff-live:2011"
},
{
"type": "application/dash+xml",
"src": "https://manifest.prod.boltdns.net/manifest/v2/dash/live-baseurl/clear/avc1_hvc1_mp4a/4800266849001/11023209-08e4-40d4-9a8b-25aa659421e2/2s/manifest.mpd?fastly_token=XYZ",
"profiles": "urn:mpeg:dash:profile:isoff-live:2011"
}
]
この例では、次の 4 つの DASH ソースがあります。
- 1つの非 HEVC HTTP ソース
- 1つの非HEVCHTTPSソース
- 1つのHEVC HTTPソース
- 1つのHEVC HTTPSソース
HEVC ソースには、URL hvc
に文字列が含まれていることに注意してください。
Android 用ネイティブ SDK ソースセレクタは HEVC ソースを好みます。上記の例では、HEVC HTTPS ソースを選択します。
ネイティブ SDK は、 Android で定義されているデフォルトの選択プロセスを続行します。ソース選択ドキュメント :
- HTTPよりHTTPSを優先する
- HLSよりDASHを好む
- 再生する HLS を選択する場合は、利用可能な最高バージョンの HLS を優先します。
HEVC レンディションの選択
取り込みの設定によっては、HEVC ソースが異なるレンディションに含まれている場合があります。次のものがあるかもしれません。
HEVC レンディションのみ
ビデオソースのレンディションに HEVC コーデックしかない場合、レンディションの選択は行われません。ExoPlayer は、デバイスの機能と使用可能な帯域幅に応じて、適切なレンディションを選択します。
HEVC と他のコーデックのミックス
ビデオソースに HEVC と他のコーデック(AVC など)が混在したレンディションがある場合、レンディション選択プロセスが呼び出されます。ネイティブ SDK がソースを ExoPlayer にロードすると、ビデオレンディションの SelectionOverride が実行され、他のコーデックよりも HEVC が優先されます。
レンディションフォーマットがデバイスでサポートされているビデオの場合、レンディションプロセスは次のとおりです。
- ネイティブ SDK は、すべての HEVC レンディションを選択します。
- これは、同じ解像度で既存の HEVC を複製する HEVC 以外のレンディションを無視します。
これにより、ほとんどの場合ExoPlayerがHEVCを好むことが強制されます。考えられるシナリオは 2 つあります。
コーデックミックス複製
このシナリオでは、HEVC および AVC コーデックの解像度がほとんど複製されます。例は次のとおりです。
AVC <Representation bandwidth="453000" height="270" width="480">
AVC <Representation bandwidth="704000" height="360" width="640">
AVC <Representation bandwidth="903000" height="360" width="640">
AVC <Representation bandwidth="1202000" height="540" width="960">
AVC <Representation bandwidth="1989000" height="720" width="1280">
AVC <Representation bandwidth="2478000" height="720" width="1280">
AVC <Representation bandwidth="3458000" height="720" width="1280">
AVC <Representation bandwidth="3761000" height="720" width="1280">
HVC <Representation bandwidth="304000" height="270" width="480">
HVC <Representation bandwidth="548000" height="360" width="640">
HVC <Representation bandwidth="993000" height="432" width="768">
HVC <Representation bandwidth="1301000" height="576" width="1024">
HVC <Representation bandwidth="1605000" height="720" width="1280">
HVC <Representation bandwidth="2809000" height="720" width="1280">
上記の動画レンディションを考慮すると、Brightcove Natvie SDK は次のレンディションを選択します。
AVC <Representation bandwidth="1202000" height="540" width="960">
HVC <Representation bandwidth="304000" height="270" width="480">
HVC <Representation bandwidth="548000" height="360" width="640">
HVC <Representation bandwidth="993000" height="432" width="768">
HVC <Representation bandwidth="1301000" height="576" width="1024">
HVC <Representation bandwidth="1605000" height="720" width="1280">
HVC <Representation bandwidth="2809000" height="720" width="1280">
AVC レンディションは既存の HEVC レンディションと重複しないため、AVC レンディションが 1 つだけ選択されていることに注意してください。
半分と半分
このシナリオでは、AVC コーデックを使用した低解像度のレンディションと、HVC コーデックを使用した高解像度のレンディションがあります。例は次のとおりです。
AVC <Representation bandwidth="453000" height="270" width="480">
AVC <Representation bandwidth="704000" height="360" width="640">
AVC <Representation bandwidth="903000" height="360" width="640">
AVC <Representation bandwidth="1202000" height="540" width="960">
AVC <Representation bandwidth="3761000" height="720" width="1280">
HVC <Representation bandwidth="1301000" height="576" width="1024">
HVC <Representation bandwidth="1605000" height="720" width="1280">
HVC <Representation bandwidth="2809000" height="720" width="1280">
この場合、HEVC レンディションを複製する解像度を持つ AVC コーデックがないため、ネイティブ SDK はすべてのレンディションを選択し、ExoPlayer が使用可能な帯域幅に基づいてレンディションを選択できます。
Native SDK は、このシナリオのすべてのケースで HEVC 選択を強制しません。これは、最も低いレンディションを高ビットレートの HEVC レンディションにキャップすることを回避します。これにより、ネットワーク接続が悪いと、ユーザーエクスペリエンスが悪くなる可能性があります。