首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缺少HLS PLaylist的PLaylist事件

缺少HLS PLaylist的PLaylist事件
EN

Stack Overflow用户
提问于 2019-02-24 23:27:57
回答 2查看 8.9K关注 0票数 1

如果我有一个VideoJS播放器非常高兴地播放了一个HLS播放列表,突然间就会中断,它将永久地反复重新加载该播放列表文件,并在控制台中打印:

代码语言:javascript
复制
VIDEOJS: WARN: Problem encountered with the current HLS playlist. Trying again since it is the final playlist.

通常,我有一个事件处理程序,因为当您第一次加载页面时,没有可用的源,但是我不知道如何在播放视频时听源消失。有这样的活动吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-26 17:11:24

我需要的触发器是retryplaylist,在Coffeescript中像这样使用:

代码语言:javascript
复制
player.tech_.on("retryplaylist", ->
    blah
)

如果有人感兴趣的话,这就是我要做的:

代码语言:javascript
复制
# Configure player
videojs("stream", {
    controlBar: {
        playToggle: false
    }
    hls: {
      smoothQualityChange: true
    }
}).ready(->
    player = this

    # Display a modal on error
    player.on("error", ->
        $('.vjs-modal-dialog-content').remove()
        displayError()
    )

    requestStream = ->
        FailCount = 0
        # Check if the remote is live
        # @formatter:off
        $.ajax({
            url: __HLS_URI__

            # If so add the source to videojs
            success: ->
                $('.vjs-poster').removeClass('vjs-hidden')
                $(".vjs-poster").css({'background-image': 'url("/branding/poster-online.png")'})
                $(".vjs-big-play-button").show()
                player.src([{src: __HLS_URI__, type: "application/x-mpegURL"}])
                player.hlsQualitySelector()
                #player.play()
                player.volume(0.5)
                player.tech_.on("retryplaylist", ->
                    if FailCount>=5
                        window.location.reload()
                    else
                        FailCount++
                        console.log(FailCount)
                )


            # If not display the error
            error: ->
                displayError()
                setTimeout((-> requestStream()), 5000)
        })
        #@formatter:on

    requestStream()
)

# Helper to display errors on the player
displayError = ->
    $(".vjs-big-play-button").hide()
    $('.vjs-controls-disabled').removeClass('vjs-controls-disabled')

    $(".vjs-poster").css({'background-image': 'url("/branding/poster-offline.png")'})
    $('.vjs-poster').removeClass('vjs-hidden')

我试图找到一种方法,重新设置VideoJS一旦完成,但最终我放弃了,只是强迫一个页面重新加载。

票数 3
EN

Stack Overflow用户

发布于 2019-02-25 22:37:26

为什么不直接使用HLS.JS呢?除了MacOS上的Safari和任何iOS设备之外,每个浏览器都能工作。那些甚至不需要HLS.JS,hls在它们中进行本地工作。

https://github.com/video-dev/hls.js/

我有一个脚本,可以检测浏览器,然后决定加载哪个版本:使用HLS.JS或仅插入m3u8作为视频源。

备注: Hls.Js令人惊叹,背后有一个庞大的社区。它允许您将HLS播放列表放在本地播放器中,供大多数浏览器使用。

除非你没有视频,否则就去找Hls.Js吧。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54857588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档