2016-02-12 1 views
1

Je travaille sur un projet qui peut diffuser des flux audio en playlist .m3u8 (lecture HLS). J'utilise videojs pour le but indiqué ci-dessus. Tout allait bien quand j'utilisais .m3u8 avec des vidéos au format (.ts). Les flux jouaient dans tous les principaux navigateurs. Le code est ci-dessous:Je souhaite diffuser l'audio au format .m3u8 via la vidéo js

<script src="video.js"></script> 
<script src="videojs.hls.min.js"></script> 
<script> 
    //myPlayer is my object for videosjs 
    myPlayer.src({ 
      type: "application/x-mpegURL", 
      src:"a_valid_HLS_stream.m3u8" 
    }); 
    myPlayer.play(); 
</script> 

et en html

<video id="myvideo"></video> 

Ce code fonctionne très bien pour HLS contenant des bits de .ts flux vidéo.

Maintenant, mon fournisseur de flux a changé les flux HLS en me donnant .m3u8 flux contenant des morceaux de fichiers audio au format .aac. Alors maintenant, tous les navigateurs sauf safari dans les appareils Apple sont capables de lire un tel flux. Eh bien, je sais que HLS supporte nativement la lecture HLS mais puisque videojs est pour ceux qui ne supportent pas la même chose par native.

Bien que je l'ai fait quelques changements dans mon code comme ci-dessous

<script> 
    //myPlayer is my object for videosjs 
    myPlayer.src({ 
      type: "application/x-mpegURL; audio/x-aac", 
      src:"another_valid_HLS_stream.m3u8" 
    }); 
    myPlayer.play(); 
</script> 

et dans la page html

<audio id="myvideo"></audio> 

j'ai essayé aussi en changeant le type src à application/vnd.apple.mpegurl qui a été effectivement mis en tête de le flux .m3u8 mais pas de chance là aussi. Toute aide serait appréciée.

Répondre

2

Le problème ne se situe pas dans la configuration côté client mais dans le conteneur média. Les ressources se terminant par .ts contiennent des flux multimédias (audio/vidéo) à l'intérieur d'un conteneur MPEG-TS. Les ressources éditées dans .aac contiennent un seul flux audio à l'intérieur d'un conteneur . videojs-contrib-hls ne prend pas en charge ADTS et la configuration du client n'est pas pertinente. L'utilisation d'ADTS au lieu de MPEG-TS offre une réduction de deux pour cent du temps système. C'est probablement la raison pour laquelle votre fournisseur est passé à l'utiliser. IMHO vos meilleures options maintenant est de contacter votre fournisseur et lui demander un flux MPEG-TS au lieu de ADTS un. Sinon, vous pouvez signaler cela aux développeurs de videojs-contrib-hls et voir s'ils sont intéressés par la mise en œuvre de ce cas. Votre troisième option consiste à abandonner videojs-contrib-hls et à payer pour une solution commerciale offrant cette fonctionnalité. Viblast Player est la solution avec laquelle j'ai de l'expérience. Vous pouvez voir et exemple de jouer ADTS flux here.

+0

J'ai essayé d'utiliser le lecteur viblast avec leur clé publique, ce qui a amené mon navigateur à rester immobile et à faire de mon ordinateur une virgule. –

+0

C'est un projet commercial donc si vous rencontrez des problèmes, contactez leur support et signalez vos problèmes. Se plaindre dans SO ne fera pas beaucoup de bien. –