【问题标题】:VideoJS doesn´t play after pause RTMP live stream暂停 RTMP 直播后 VideoJS 不播放
【发布时间】:2014-10-16 07:10:35
【问题描述】:

我正在使用 VideoJS 来自 Wowza 服务器的实时流,但是当我暂停播放器和他们我再次播放时,播放器无法恢复流。我需要重新加载网页才能重新开始直播。

<video id="videoID" class="video-js vjs-default-skin vjs-big-play-centered" poster="/images/image.png"  controls="controls" width="320" height="240" data-setup='{"techOrder": ["flash"]}'>
<source src="rtmp://www.myhost.com:1935/live/live.stream" type="rtmp/mp4" />
</video>

当暂停事件出现时,有什么方法可以停止或重新加载 VideoJS?

编辑:我遇到了使用此脚本的解决方案:

<script type="text/javascript">
var myPlayer = videojs('videoID');
videojs("videoID").ready(function(){
var myPlayer = this;
myPlayer.on("pause", function () {
myPlayer.on("play", function () { myPlayer.load (); myPlayer.off("play"); });
});
});
</script>

【问题讨论】:

  • 您好,我遇到了与您相同的问题,您的解决方案似乎是正确的方向,但并没有完全解决问题。第二次点击播放后,许多其他功能停止工作。大播放按钮不会消失,也不会工作,时间也不会更新。你认为有一种方法可以对 myPlayer.off("play") 进行更多限制吗?我也不完全确定该功能中发生了什么。它删除了所有附加到“播放”元素的事件处理程序?还是删除事件“播放”之后的所有动作?
  • "off" 删除指定的事件。不确定,为什么 play 事件在这里被删除。

标签: html5-video rtmp video.js


【解决方案1】:

好的,所以我找到了解决方案。而不是从播放器中剥离所有播放事件,您实际上只需要在第 7337 行的 video.dev.js 中编辑 flash 播放事件(我认为是 4.11.4 版)。这句话说:

vjs.Flash.prototype.play = function(){
    this.el_.vjs_play();
};

应该改成:

vjs.Flash.prototype.play = function(){
    this.el_.vjs_load();
    this.el_.vjs_play();
};

以便在播放事件之前调用加载事件。

【讨论】:

  • 这对 flash 工具有好处 - 任何人都解决了 html5 视频元素后备的问题?
【解决方案2】:

我在这里找到了解决方案

$(document).ready(function(){
    var player = videojs('really-cool-video', { /* Options */}, function () {
        // ...

        var player = this;
        player.on("pause", function () {
            player.one("play", function () {
                player.load();
                player.play();
            });
        });
    });
});

【讨论】:

  • 在回答一个老问题时,如果您包含一些上下文来解释您的答案如何提供帮助,那么您的答案对其他 StackOverflow 用户会更有用。请参阅:How do I write a good answer
猜你喜欢
  • 2017-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-20
  • 1970-01-01
  • 1970-01-01
  • 2012-03-26
相关资源
最近更新 更多