Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript html5不停止视频背景循环,即使网络速度/缓冲区较低_Javascript_Css_Html_Video_Buffer - Fatal编程技术网

Javascript html5不停止视频背景循环,即使网络速度/缓冲区较低

Javascript html5不停止视频背景循环,即使网络速度/缓冲区较低,javascript,css,html,video,buffer,Javascript,Css,Html,Video,Buffer,我正在为div使用一些不错的html5视频背景,但是在非常慢的连接上,它每秒都会暂停缓冲。 我想创建这样的逻辑:在缓冲10秒后开始播放,如果播放速度更快并且开始缓冲,则平滑地寻找视频开始(或缓冲范围),以允许更多缓冲,并且不停止播放(位置无关紧要) 因此,我们的目标是拥有一个永远播放循环视频,即使缓冲区很低 我在这个问题中发现了一些代码: 并以这样的方式进行了尝试: var checkInterval = 50.0 var lastPlayPos = 0 var currentPlayP

我正在为div使用一些不错的html5视频背景,但是在非常慢的连接上,它每秒都会暂停缓冲。 我想创建这样的逻辑:在缓冲10秒后开始播放,如果播放速度更快并且开始缓冲,则平滑地寻找视频开始(或缓冲范围),以允许更多缓冲,并且不停止播放(位置无关紧要)

因此,我们的目标是拥有一个永远播放循环视频,即使缓冲区很低

我在这个问题中发现了一些代码:

并以这样的方式进行了尝试:

var checkInterval  = 50.0
var lastPlayPos    = 0
var currentPlayPos = 0
var bufferingDetected = false

setInterval(checkBuffering, checkInterval)

function checkBuffering() {
    var player = document.getElementById('bgvideo')
    currentPlayPos = player.currentTime

    // checking offset, e.g. 1 / 50ms = 0.02
    var offset = 1 / checkInterval

    // if no buffering is currently detected,
    // and the position does not seem to increase
    // and the player isn't manually paused...
    if (
            !bufferingDetected 
            && currentPlayPos < (lastPlayPos + offset)
            && !player.paused
        ) {
        console.log("buffering")
        bufferingDetected = true
        player.currentTime=0; //seek to begin
    }

    // if we were buffering but the player has advanced,
    // then there is no buffering
    if (
        bufferingDetected 
        && currentPlayPos > (lastPlayPos + offset)
        && !player.paused
        ) {
        console.log("not buffering anymore")
        bufferingDetected = false
    }
    lastPlayPos = currentPlayPos
}
var检查间隔=50.0
var lastPlayPos=0
var currentPlayPos=0
var bufferingDetected=false
设置间隔(检查缓冲、检查间隔)
函数checkBuffering(){
var player=document.getElementById('bgvideo'))
currentPlayPos=player.currentTime
//检查偏移量,例如1/50ms=0.02
var偏移=1/检查间隔
//如果当前未检测到缓冲,
//而且这个职位似乎没有增加
//而且播放器不会被手动暂停。。。
如果(
!检测到缓冲区
&&当前播放位置<(最后播放位置+偏移)
&&!player.暂停
) {
日志(“缓冲”)
bufferingDetected=true
player.currentTime=0;//寻求开始
}
//如果我们在缓冲,但玩家已经前进了,
//那么就没有缓冲了
如果(
检测到缓冲区
&&当前播放位置>(最后播放位置+偏移)
&&!player.暂停
) {
log(“不再缓冲”)
bufferingDetected=false
}
lastPlayPos=当前播放位置
}
它不能很好地工作,因为当试图开始时,缓冲区有时会被刷新,并且它会从一开始就开始缓冲。搜索不平稳,会暂停2秒,而且此代码在开始时不会解析10s预缓冲区

我听说过MSE,但我不确定它是否得到了各地的支持,而且很难理解


专家们,请帮忙

根据视频的大小,您可以使用此技术--完全加载视频并从本地缓冲区而不是流中播放…这不是一个选项,我需要即时播放。但感谢您的回答多比特率格式(即HLS)将帮助您快速入门,并可以随着比特率的提高提高/降低质量,但要获得您想要的,您可能需要流中的一个非常低的质量选项。我知道DASH。但并非所有浏览器都支持它。我可以使用DASH和fallback吗,比如keep in tag?根据视频的大小,你可以使用这种技术--完全加载视频并从本地缓冲区而不是流中播放…这不是一个选项,我需要即时播放。但感谢您的回答多比特率格式(即HLS)将帮助您快速入门,并可以随着比特率的提高提高/降低质量,但要获得您想要的,您可能需要流中的一个非常低的质量选项。我知道DASH。但并非所有浏览器都支持它。我可以使用DASH和fallback吗,比如keep-in-tag?