2017-07-06 16 views
1

videoタグを使用してHLSビデオを再生し、ビデオサイズは常に0です。JavaScriptのhlsビデオの幅/高さを取得するには?

<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

あなたはcanplayとcanplaythroughイベントを試してみましたか?ビデオが同じ起源でない場合は、メタデータが利用できない可能性があります。 –

+0

@JaromandaX他のドメインからmp4ファイルを再生しようとしましたが、 'videoWidth'と' videoHeight'プロパティを正しく読み取ることができました。 – kcats

答えて

1

現在のデスクトップのブラウザでは、直接ちょうどvideoタグを使用してHLSのビデオを再生ないサポートを行います。 (SafariやIOSで動作するかもしれない)。

HLSストリームを再生するには、使用できるビデオプレーヤの1つを使用する必要があります。 hlsjs:https://github.com/video-dev/hls.jsのようなオープンソースプロジェクトがいくつかあります。または、フロープレーヤーやjwplayerのような商業的プレーヤー。 hlsjsプレーヤー使用

基本的なHTMLコード:

<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

ビデオタグのHLSソースは、Safari(デスクトップ)、iOS、一部のAndroidブラウザで直接動作します。 ChromeやFirefoxのような他のデスクトップブラウザの場合、hls.jsはあなたの答えに言及したようにうまく機能します。 – ami91

+0

私はちょうどビデオサイズ、またはラジオを取得したい、それを再生するためにプレイヤーを必要としません。 – kcats

関連する問題