暂停 RTMP 直播后 VideoJS 不播放
Posted
技术标签:
【中文标题】暂停 RTMP 直播后 VideoJS 不播放【英文标题】:VideoJS doesn´t play after pause RTMP live stream 【发布时间】: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" 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 事件在这里被删除。 【参考方案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();
);
);
);
);
【讨论】:
在回答一个老问题时,如果您包含一些上下文来解释您的答案如何提供帮助,那么您的答案对其他 *** 用户会更有用。请参阅:How do I write a good answer。以上是关于暂停 RTMP 直播后 VideoJS 不播放的主要内容,如果未能解决你的问题,请参考以下文章
搭建rtmp直播流服务之4:videojs和ckPlayer开源播放器二次开发(播放rtmphls直播流及普通视频)