簡體   English   中英

videojs 與現場 stream ts

[英]videojs with live stream ts

我正在嘗試將來自 IPTV 服務的實時 stream 獲取到一個magicmirror 項目的網頁中。 我正在嘗試將一個新頻道嵌入到頁面中。

我發現 ts 文件正在使用這個 URL,它在 VLC 中加載良好: http://host.net:826/live/hello/413.ts

我創建了一個如下所示的 m3u8:

#EXTM3U

#EXTINF:-1

http://host.net:826/live/hello/413.ts

當我使用此代碼時,該文件永遠不會從提供程序加載 stream。

<video-js id="my_video_1" class="center" controls autoplay preload="auto" width="950" height="600">
  <source src="playlist.m3u8" type="application/x-mpegURL">
</video-js>
  </div>
<script>
  var player = videojs('my_video_1', {
    html5: {
      hls: {
        overrideNative: true
      }
    }
  });
</script>

我已經通過 ffmpeg 運行了 ZF7B44CFFAFD5C52223D5498196C8A2E7BZ,以便它在本地轉儲文件,然后創建本地 m3u8 文件。 如果我然后將上面的代碼指向該 m3u8 文件,它會加載並運行良好 - 但我不在現場,它開始從我啟動它時復制本地 stream 。 因此,如果我刷新頁面,stream 會再次從本地保存文件的開頭開始。

我知道這個問題被問到已經 6 個月了,我最近處理了類似的問題,並想我會分享我的解決方案。

您可以使用 hls.js 執行此操作,而無需創建 m3u8 索引。

在以下位置了解有關 hls.js 的更多信息: https://github.com/video-dev/hls.js/

Start by renaming.ts stream URL to.m3u8, there is no need to create m3u8 index http://host.net:826/live/hello/413.ts - > http://host.net:826/live/你好/413.m3u8

HTML:

<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>

<button type="button" onclick="PlayVideo();">Play</button>
<video id="video" controls autoplay crossorigin="anonymous" />

Javascript:

function PlayVideo() {
    var video = document.getElementById('video');
    var videoSrc = "http://host.net:826/live/hello/413.m3u8";
    if (Hls.isSupported()) {
        // The following hlsjsConfig is required for live-stream
        var hlsjsConfig = {
            "maxBufferSize": 0,
            "maxBufferLength": 30,
            "liveSyncDuration": 30,
            "liveMaxLatencyDuration": Infinity
        }
        var hls = new Hls(hlsjsConfig);
        hls.loadSource(videoSrc);
        hls.attachMedia(video);
        hls.on(Hls.Events.MANIFEST_PARSED, function () {
            video.play();
        });
    } 
    else if (elementId.canPlayType('application/vnd.apple.mpegurl')) {
        elementId.src = videoSrc;
        elementId.addEventListener('loadedmetadata', function () {
            elementId.play();
        });
    }
}

您可以通過更改 hlsjsConfig 的值來將緩沖區進一步優化為您需要的值。 在此處查看 hls.js API 詳細信息: https://github.com/dailymotion/hls.js/blob/master/docs/API.md#second-step-instantiate-hls-object-and-bind-it-to-視頻元素

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM