Afin de calculer des mesures précises, le lecteur audio et l'application doivent effectuer les appels appropriés vers les services de streaming ou de tout en ligne. Pour limiter la quantité d'audio qui est poussée par un serveur de streaming et qui n'est pas écoutée, ou pour limiter la quantité d'audio qui est écoutée et qui n'est jamais comptabilisée dans les mesures d'audience, le lecteur et les créateurs d'applications doivent suivre ces directives.
Notez que pendant le processus d'implémentation, Triton Digital effectue des audits d'éditeurs sur tous les nouveaux clients WCM afin de s'assurer que les réseaux de diffusion de contenu (CDN) ne manipulent pas les données et que nous fournissons des mesures valables. De même, Triton Digital assure le contrôle et la vérification du respect des directives décrites ci-dessous.
Différence entre stop et pause
À moins que le serveur de diffusion en continu ne puisse réellement maintenir le flux et mettre le contenu en pause, l'application et le lecteur doivent arrêter le flux et le reprendre en appuyant une nouvelle fois sur le bouton « Lecture ». On obtient ainsi deux sessions distinctes, et aucun son n'est émis pendant que l'auditeur est sur « Stop ». (Voir aussi : HTML5 <audio> Considérations relatives aux éléments : arrêt de l’audio.)
Auto-play (lecture automatique)
Indicateur signalant si la session a été lancée à partir d'un lecteur automatique. Les valeurs possibles sont autoplay=0 (non déclenché via la lecture automatique) et autoplay=1 (déclenché via la lecture automatique). La lecture automatique du contenu audio est fortement déconseillée car dans certains cas, les flux diffusés automatiquement ne sont pas audibles, car le volume peut être mis en sourdine alors que le flux est toujours actif. Triton Digital recommande que tout déclenchement de la lecture instantanée d'un contenu audio soit déterminé par un geste direct de l'utilisateur, comme un tapotement ou un clic.
Start (lecture) et Stop au bon moment
Le flux audio ne doit commencer que lorsque l’auditeur appuie sur le bouton Lecture.
Lorsqu'un auditeur appuie sur le bouton Stop, ferme l'onglet du lecteur de son navigateur ou une application, l'audio doit cesser de son côté et la demande d'arrêt doit parvenir au serveur de diffusion en continu.
Le serveur de streaming doit signaler correctement ce moment. Tous les serveurs de streaming doivent utiliser le temps universel coordonné (UTC) officiel.
Si le lecteur/l’application utilise le service de suivi des auditeurs (LT) de Triton Digital, il doit envoyer un ping LT au moment de l'arrêt. Cela permet de mesurer le dernier extrait audio.
Voir également : HTML5 <audio> remarques importantes : préchargement/prélecture.
Critère de sourdine/d'audibilité
Le lecteur ou l’application doit tenir compte du fait que l’audibilité est une condition préalable à la mesure du contenu audio numérique. Dès lors, le lecteur ou l'application doit être en mesure de détecter les états « muet » et « non muet » du dispositif et/ou les événements « volume nul/volume non nul » de la même manière que les événements « arrêt/lecture ». Le « volume nul » doit être traité comme l'état « muet ».
Liens directs sur les navigateurs Web
Les lecteurs Web ne doivent jamais ouvrir les URL MP3 ou AAC en streaming directement dans les lecteurs internes du navigateur Web. Bien que le navigateur puisse utiliser son lecteur interne pour lire le contenu audio, on sait que ces lecteurs internes peuvent produire un trafic invalide.
Sessions longues
Du point de vue du lecteur/application, c'est une bonne pratique que de s'assurer de la bonne interaction de l'utilisateur après plusieurs heures.
Utilisation de l'identifiant du visiteur (auditeur) pour la méthodologie LT
Tel qu'indiqué dans la documentation de l'API LT, un identifiant unique est requis pour chaque auditeur afin de calculer correctement l'audience cumulée. Cet identifiant de visiteur doit représenter une clé unique qui fait référence à un abonnement de l'auditeur pour l'éditeur. Triton Digital utilise cette propriété sans modification et l'éditeur peut masquer la propriété s'il le souhaite.
Contournement de cache nécessaire à la méthodologie LT
Un numéro aléatoire ou un horodatage de contournement de cache doit être utilisé avec la méthodologie LT. Ce numéro doit être différent à chaque nouvel appel afin d'éviter tout retour en cache à partir d'un navigateur ou d'un proxy. Un numéro aléatoire ou un horodatage de 32 bits est parfaitement adapté.
Remarque HTML5 : préchargement/prélecture
Le préchargement d'un contenu audio est fortement déconseillé. Dans la plupart des cas, le flux audio ne sera pas entendu par l'auditeur et ne devrait donc pas être comptabilisé comme une session valide. La meilleure façon d'éviter les problèmes de mesure liés au chargement anticipé est tout simplement de ne pas en faire usage. Les recommandations énoncées ci-dessous devraient permettre de remédier au problème.
- Solution à privilégier : l'attribut de préchargement de l'élément <audio> doit être réglé sur none (aucun). Il ne doit jamais être réglé sur auto ou laissé vide, car ces options transfèrent la décision au navigateur lui-même. Voir l’exemple de code ci-après.
- Alternative : L'attribut de préchargement (preload) de l'élément <audio> peut également inclure l'option metadata, qui ne lit/précharge que les métadonnées audio. Cette solution ne devrait pas poser de problème.. Toutefois, si vous choisissez d'utiliser preload="metadata" au lieu de preload="none", vous devez tester minutieusement le lecteur sur plusieurs plateformes et navigateurs pour vous assurer que cette option est vraiment nécessaire et se comporte comme prévu.
Remarque HTML5 : arrêt de l'audio
Attention ! L’élément HTML5 <audio> ne dispose pas d'une vraie fonction « stop », mais seulement d'une fonction « pause ».Certains flux en direct - en particulier Icecast - sont considérés par le navigateur comme « un gros fichier à télécharger » et non comme un flux en direct. Dans de tels cas, le téléchargement peut se poursuivre en arrière-plan lorsque le flux est mis en pause. Pour contourner ce problème, certaines actions supplémentaires pour arrêter le téléchargement de flux/fichiers doivent être effectuées par la page Web où le lecteur est intégré, et ces dernières peuvent être différentes en fonction du navigateur et du système d'exploitation. Dans la plupart des cas, l’élément <audio> doit être invité à effectuer une autre action telle que « charger un autre fichier à lire » lorsque l'action de l'utilisateur pour mettre en pause est initiée. La lecture de cet « autre fichier » n'est cependant pas indispensable. .
La spécification HTML5 indique :
Si l'attribut src d'un élément multimédia est défini ou modifié, l'agent utilisateur doit invoquer l'algorithme de chargement de cet élément multimédia. (La suppression de l'attribut src n'a pas cet effet, même en présence d'éléments sources).
En raison de l'implémentation par Apple de la spécification HTML5 dans le navigateur Safari sur iOS et macOS, lorsqu'un lecteur est mis en pause dans un onglet du navigateur web Safari, l'audio s'arrête mais les données continuent d'être diffusées en arrière-plan jusqu'à ce que l'onglet du navigateur soit fermé. Il en va de même lorsqu'un appareil iOS lit un fichier en streaming via un lecteur Web dans Safari pour iOS et que l'utilisateur appuie sur le bouton de l'appareil pour éteindre l'écran. Dans le navigateur Chrome pour iOS, l'utilisateur doit interrompre tous les flux dans la navigateur.
L'exemple de code 1 ci-dessous montre comment le lecteur Web 2.9 SDK de Triton Digital permet de contourner les problèmes susmentionnés. Veuillez noter qu'iOS interrompt le flux après une minute sauf si l'onglet du navigateur est fermé (ce qui interrompt le flux immédiatement). La solution dans Safari pour iOS comprend :
- La demande de pause() sur le nœud audio
- Le maintien (non suppression) de l'attribut src du nœud audio.
Les autres actions peuvent comprendre :
- Un simple rafraîchissement de la page contenant le lecteur. (C'est la solution la plus simple et elle a donné de bons résultats dans toutes les situations que nous avons évaluées jusqu'à présent, mais elle peut ne pas convenir à tout le monde.
Cela dépend de la complexité de la page à recharger.) - La lecture d'un fichier audio valide identifié, tel qu'un fichier comportant quelques secondes de silence.
- Le chargement d'une valeur vide ("") ou "About:blank" dans l'attribut source.
- Remplacez la source par un montage fictif :
http://<YOUR-AUDIO-STREAM>/invalidmount
Consultez les exemples de code 2 et 3 ci-dessous pour obtenir plus de renseignements.
Exemples de code
Exemple de code1 : arrêt de l'audio
L'exemple de code ci-dessous interrompt l'audio et contourne le problème de « pause » du navigateur Safari.
stop: function () {
var context = this;
if ( fsm.is( STATE.STOPPED ) ) return;
this.audioNode = getAudioNode.call( this );
fsm.stop();
this.audioNode.pause();
if( OsPlatform.name !== 'Safari' || this.audioNode.src.indexOf('m3u8') > -1 || this.useHlsLibrary) {
setTimeout(function(){
context.audioNode.src = '';
context.url = null;
context.resetAudioNode();
}, 300);
}else{
setTimeout(function(){
context.url = null;
context.resetAudioNode();
}, 300);
}
if( OsPlatform.os.family === 'iOS' && OsPlatform.name === 'Chrome Mobile') {
window.stop();
}
if ( this.useHlsLibrary ) {
this.hls.detachMedia();
this.hls.stopLoad();
this.hls.destroy();
}
},
Exemple 2 : rafraîchissement de la page
Le code ci-dessous est un exemple de l'utilisation de preload="none" et du rafraîchissement de la page contenant le lecteur.
<audio controls preload="none" height="32" width="300" onpause="location.reload();" src="<PLAYER PAGE URL>" type="audio/mpeg" />
Remarques sur le code :
- Remplacez « <PLAYER PAGE URL> » par la véritable URL de la page contenant votre lecteur.
- Les attributs height et width indiqués ne sont que des exemples. Utilisez la hauteur et la largeur réelles de votre lecteur.
Exemple 3 : utilisation d'un fichier audio valide et connu
L'exemple de code ci-dessous indique l'utilisation de preload="none" et le chargement d'un fichier MP3 court (fichier audio valide connu) pour interrompre le téléchargement du fichier en arrière-plan.
<audio controls preload="none" height="32" width="300" onplay="startAudio();" onpause="stopAudio();"
src="http://download.andomedia.com/Creative/208/0/2080711_1.mp3" type="audio/mpeg" />
<script>
// -- Set audio source before playing in case the pause/stop button has cleared it
function startAudio()
{
var audio = document.getElementsByTagName("audio")[0];
if (audio.src!="http://<YOUR-AUDIO-STREAM>")
{
audio.src="<YOUR-AUDIO-STREAM>";
if(navigator.userAgent.toLowerCase().indexOf('firefox') > -1){ audio.load(); }
audio.play();
}
}
// -- Clear the audio source - this should stop the download. Pausing alone will not.
function stopAudio()
{
var audio = document.getElementsByTagName("audio")[0];
audio.src="http://download.andomedia.com/Creative/208/0/2080711_1.mp3";
if(navigator.userAgent.toLowerCase().indexOf('firefox') > -1){ audio.load(); }
}
</script>
Remarques sur le code :
- Remplacez
http://<YOUR-AUDIO-STREAM>
avec l’URL réelle de votre flux audio. - « audio.src="http://download.andomedia.com/Creative/208/0/2080711_1.mp3 » est un fichier audio silencieux en direct de trois secondes hébergé par Triton Digital que vous pouvez utiliser lors du test. Si vous souhaitez utiliser cette méthode après le test, veuillez remplacer cette URL par un lien vers votre propre fichier audio silencieux. Le fichier Triton Digital peut être renommé ou supprimé à tout moment et sans préavis.