我正在尝试播放低延迟的RTMP流,例如HTML5,vido.js和videojs-flash。现在,我可以使流以3-4秒的延迟显示,但是使用ffplay播放相同的流会产生亚秒级的延迟。
查看旧的videojs版本,似乎从未合并允许指定flashvars传递给swf对象的某些代码。在较新的video.js版本中,可以使用videojs-flash插件播放Flash视频,并且该插件似乎在播放器选项中支持flashVars,并且此vars传递给swf对象。
有人使用过此功能吗,我如何为videojs对象提供flashVars选项。
这是我到目前为止尝试过的代码:
var player = videojs('my-video', {
autoplay: true,
muted: true,
preload: "auto",
sources: [{
type: "rtmp/flv",
}],
flashVars: {
buffertime: 0
}
});
答案 0 :(得分:0)
如果找到了我自己的问题的答案,可以大大减少延迟。目前它还不是很稳定,因为我有时会得到〜1s的延迟,但可能会上升到3s。解决方案是使用修补后的swf,它将解释考虑到缓冲选项。现在播放器初始化变为:
var player = videojs('my-video', {
techOrder: ['flash'],
autoplay: true,
sources: [{
type: "rtmp/flv",
}],
bufferTime: 0,
flash: {
swf: "js/video-js.swf",
flashVars: {
bufferTime: 0,
autoPlay: true,
bufferTimeMax: 0.25
}
}
});
video-js.swf是从以下修补版本编译而成的:
https://github.com/sea-kg/video-js-swf.git
只需编译此版本并使用“ swf:” flash选项即可提供此swf的路径。
这可以显着减少延迟,但是根据我的经验,延迟可能因连接而异。