使用video.js的低延迟RTMP播放

时间:2019-06-12 09:34:30

标签: video.js rtmp

我正在尝试播放低延迟的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
 }
});

1 个答案:

答案 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的路径。

这可以显着减少延迟,但是根据我的经验,延迟可能因连接而异。