मुझे यह मिल गया है
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:14
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:10.416667,
index0.ts
#EXTINF:12.625000,
index1.ts
#EXTINF:8.958333,
index2.ts
#EXTINF:10.416667,
index3.ts
#EXTINF:13.666667,
index4.ts
#EXTINF:3.916667,
index5.ts
#EXTINF-X-ENDLIST
M3u8 प्लेलिस्ट। अगर मैं इसे ब्राउज़र में चलाने की कोशिश करता हूं तो यह पूरी तरह से ठीक काम करता है। यहाँ उस वेबसाइट का कोड है जिसका उपयोग मैं स्ट्रीम चलाने के लिए करता हूँ
<!DOCTYPE html>
<html>
<head>
<title>World0</title>
</head>
<body>
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<video width="400" id="video" controls></video>
<script>
// const src = "http://localhost:8080/final/index.m3u8" // "https://d2zihajmogu5jn.cloudfront.net/bipbop-advanced/bipbop_16x9_variant.m3u8"
const src = "http://192.168.2.166:8080/final/index.m3u8"
if(Hls.isSupported()) {
var video = document.getElementById('video');
var hls = new Hls();
hls.loadSource(src);
hls.attachMedia(video);
hls.on(Hls.Events.MEDIA_ATTACHED, () => {
console.log("attached");
})
hls.on(Hls.Events.ERROR, (event, data) => {
const errorType = data.type;
const errorDetails = data.details;
const errorFatal = data.fatal;
console.log(errorType, errorDetails, errorFatal);
})
hls.on(Hls.Events.MANIFEST_PARSED,function()
{
video.play();
});
} else if (video.canPlayType('application/vnd.apple.mpegurl')) {
video.src = src;
video.addEventListener('canplay',function() {
video.play();
});
}
</script>
</body>
</html>
लेकिन अब मैं पिछले खंड (index5.ts) को फिर से दोहराना चाहता हूं। तो मैंने यह किया:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:14
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:10.416667,
index0.ts
#EXTINF:12.625000,
index1.ts
#EXTINF:8.958333,
index2.ts
#EXTINF:10.416667,
index3.ts
#EXTINF:13.666667,
index4.ts
#EXTINF:3.916667,
index5.ts
#EXTINF:3.916667,
index5.ts
#EXTINF-X-ENDLIST
जैसा कि आप देख सकते हैं कि मैंने index5.ts फ़ाइल को दो बार सूचीबद्ध किया है। तो सैद्धांतिक रूप से इस खंड को डबल खेला जाना चाहिए। लेकिन जब मैं वेबसाइट से वीडियो-प्लेयर पर जाता हूं और 1:00 अंक पर छोड़ देता हूं जहां सामान्य रूप से index5.ts अनुभाग दोहराना चाहिए। यह बस लोड होता रहता है और कुछ नहीं होता है।
1 उत्तर
आपको दोहराने से पहले एक EXT-X-DISCONTINUITY
टैग जोड़ने की जरूरत है ताकि यह इंगित किया जा सके कि टैग से पहले की मीडिया फ़ाइल और उसके बाद आने वाली मीडिया फ़ाइल के बीच एक असंतुलन है।
ऐसा इसलिए है क्योंकि दोहराए गए खंड के प्रत्येक पुनरावृत्ति के बीच एक टाइमस्टैम्प असंततता होगी, जबकि खिलाड़ी को उम्मीद है कि प्लेलिस्ट के आगे बढ़ने के साथ टाइमस्टैम्प में वृद्धि होगी।
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:14
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:10.416667,
index0.ts
#EXTINF:12.625000,
index1.ts
#EXTINF:8.958333,
index2.ts
#EXTINF:10.416667,
index3.ts
#EXTINF:13.666667,
index4.ts
#EXTINF:3.916667,
index5.ts
#EXT-X-DISCONTINUITY
#EXTINF:3.916667,
index5.ts
#EXTINF-X-ENDLIST
संबंधित सवाल
नए सवाल
video-streaming
वीडियो स्ट्रीमिंग सर्वर से क्लाइंट तक वीडियो पहुंचाने की प्रक्रिया है। यह पूरी वीडियो फ़ाइल को डाउनलोड करने से अलग है, क्योंकि ग्राहक वीडियो को डाउनलोड करते समय देख सकता है।