2017-07-06 2 views
1

J'utilise l'étiquette video pour lire la vidéo HLS, et la taille de la vidéo est 0 toujours.Comment obtenir hls largeur/hauteur vidéo en javascript?

<video id=video src="http://xxx.m3u8" autoplay controls/> 
<script> 
    const video = document.getElementById('video') 
    video.addEventListener('play',() => { 
     console.log(video.videoWidth, video.videoHeight) 
     // both is 0 
    }) 
</script> 
+0

Avez-vous essayé les événements CANPLAY et canplaythrough? Si la vidéo n'est pas de la même origine, il se peut que les métadonnées ne soient pas disponibles –

+0

@JaromandaX J'ai essayé de lire un fichier mp4 d'un autre domaine, puis j'ai pu lire correctement la propriété 'videoWidth' et' videoHeight'. – kcats

Répondre

1

navigateurs de bureau Actuellement ne pas support jouant un vidéo HLS directement en utilisant simplement la balise vidéo. (Peut-être que cela fonctionne sur Safari ou IOS).

Pour reproduire un flux HLS, vous devez utiliser l'un des lecteurs vidéo disponibles. Vous avez des projets open source, comme hlsjs: https://github.com/video-dev/hls.js. Ou des joueurs comerciaux comme flowplayer, ou jwplayer.

code html de base en utilisant lecteur hlsjs:

<script src="https://cdn.jsdelivr.net/npm/[email protected]"></script> 
<video id="video"></video> 
<script> 
    if(Hls.isSupported()) { 
    var video = document.getElementById('video'); 
    var hls = new Hls(); 
    hls.loadSource('https://video-dev.github.io/streams/x36xhzz/x36xhzz.m3u8'); 
    hls.attachMedia(video); 
    hls.on(Hls.Events.MANIFEST_PARSED,function() { 
     video.play(); 
    }); 
} 
</script> 
+0

Source HLS dans la balise vidéo fonctionnera directement sur Safari (Desktop) ainsi que iOS et certains navigateurs Android. Pour les autres navigateurs de bureau comme Chrome ou Firefox, hls.js fonctionne plutôt bien comme vous l'avez mentionné dans votre réponse. – ami91

+0

Je veux juste obtenir la taille de la vidéo, ou la radio, n'ont pas besoin d'un joueur pour le jouer. – kcats