我正在尝试使用HTML5、vido.js和videojs-flash播放低延迟的RTMP流。目前,我可以让流以3-4秒的延迟显示,但使用ffplay播放相同的流会有亚秒级的延迟。
看一下较旧的videojs版本,一些允许指定flashvar传递给swf对象的代码似乎从未合并过。在较新的video.js版本中,可以使用videojs-flash插件来播放flash视频,该插件似乎在播放器选项中支持flashVars,并将此变量传递给swf对象。
是否有人使用过此功能?我如何为videojs对象提供flashVars选项。
这是我到目前为止尝试的代码:
var player = videojs('my-video', {
autoplay: true,
muted: true,
preload: "auto",
sources: [{
type: "rtmp/flv",
}],
flashVars: {
buffertime: 0
}
});发布于 2019-06-15 21:53:49
如果找到了我自己的问题的答案,就可以大大减少延迟。它现在不是很稳定,因为我有时会得到~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的路径即可。
这大大减少了延迟,但根据我的经验,每个连接的延迟可能会有所不同。
https://stackoverflow.com/questions/56558969
复制相似问题