Sélection HEVC avec le SDK natif pour Android

Dans cette rubrique, vous apprendrez comment le SDK natif Brightcove pour Android sélectionne les sources HEVC et les formats associés.

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 :

  1. Sélection de la source HEVC
  2. Sélection de rendu HEVC

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 :

  1. Préférez HTTPS à HTTP
  2. Préférez DASH à HLS
  3. 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 :

  1. Le SDK natif sélectionne tous les rendus HEVC.
  2. 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.