Aperçu
Le codage vidéo à haute efficacité (HEVC), également connu sous le nom de H.265, est une norme de compression vidéo qui réduit la taille des fichiers vidéo permettant une lecture de meilleure qualité.
Le Brightcove Native SDK pour Android utilise le processus de sélection HEVC suivant :
Sélection de la source HEVC
Le processus de sélection de la source HEVC commence après que vous ayez fait une demande de vidéo à l'aide de Brightcove Catalog
.
Selon la configuration de votre compte, le Catalog
La réponse peut contenir plusieurs sources, avec ou sans rendus HEVC. Voici un exemple :
"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"
}
]
Dans cet exemple, il existe quatre sources DASH :
- Une source HTTP non HEVC
- Une source HTTPS non HEVC
- Une source HTTP HEVC
- Une source HTTPS HEVC
Notez que les sources HEVC contiennent la chaîne hvc
dans l'URL.
Le sélecteur de source du SDK natif pour Android préfère les sources HEVC. Dans l'exemple ci-dessus, il sélectionnera la source HEVC HTTPS.
Le SDK natif poursuit le processus de sélection par défaut tel que défini dans Android : Document de sélection de la source :
- Préférez HTTPS à HTTP
- Préférez DASH à HLS
- Si vous sélectionnez HLS pour la lecture, préférez la version la plus élevée de HLS disponible
Sélection de rendu HEVC
Selon vos configurations d'ingestion, la source HEVC peut être contenue dans différents rendus. Vous pouvez avoir les éléments suivants :
Uniquement les rendus HEVC
Lorsque les rendus de la source vidéo n'ont que des codecs HEVC, aucune sélection de rendu n'est impliquée. L'ExoPlayer sélectionne le rendu approprié en fonction des capacités de l'appareil et de la bande passante disponible.
Un mélange de HEVC et d'autres codecs
Si la source vidéo a des rendus avec un mélange de HEVC et d'autres codecs (comme AVC), alors un processus de sélection de rendu est invoqué. Lorsque le SDK natif charge la source dans l'ExoPlayer, il effectue un Remplacer la sélection pour que le rendu vidéo préfère HEVC aux autres codecs.
Étant donné une vidéo dont les formats de rendu sont pris en charge par l'appareil, voici le processus de rendu :
- Le SDK natif sélectionne tous les rendus HEVC.
- Il ignore les rendus non HEVC qui dupliquent un HEVC existant avec la même résolution.
Cela oblige ExoPlayer à préférer HEVC dans la plupart des cas. Voici deux scénarios possibles :
Duplication de mix de codecs
Dans ce scénario, la plupart des résolutions des codecs HEVC et AVC sont dupliquées. Par exemple :
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">
Compte tenu des rendus vidéo ci-dessus, le Brightcove Natvie SDK sélectionnera les rendus suivants :
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">
Notez qu'un seul rendu AVC a été sélectionné, car sa résolution ne duplique pas un rendu HEVC existant.
Moitié-moitié
Dans ce scénario, il existe des rendus de résolution inférieure avec le codec AVC et des rendus de résolution supérieure avec le codec HVC. Par exemple :
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">
Dans ce cas, comme il n'y a pas de codecs AVC avec des résolutions dupliquant les rendus HEVC, le SDK natif sélectionne tous les rendus, permettant à ExoPlayer de sélectionner les rendus en fonction de la bande passante disponible.
Le SDK natif ne force pas la sélection HEVC dans tous les cas dans ce scénario, pour éviter de limiter le rendu le plus bas à un rendu HEVC à haut débit. Cela pourrait potentiellement provoquer une mauvaise expérience utilisateur avec une mauvaise connexion réseau.