我使用Videojs作为我的客户端播放器,并致力于动态更改实时RTMP源,最终目标是检测带宽并将源视频更改为更高或更低的比特率。
我遇到的问题是,当我尝试使用我在其他帖子中找到的示例来简单地更改源代码时,它会导致错误被抛入video.js代码中。
这里' sa jsfiddle ...只需打开浏览器的调试控制台,然后刷新页面,当超时运行并且命中$ vid_obj.src时,您将看到错误。 ..)
HTML:
<video id="video_player" class="video-js vjs-default-skin" controls preload="auto" width="640" height="264"
poster="http://video-js.zencoder.com/oceans-clip.png"
data-setup='{ "techOrder": ["html5", "flash"] }'>
<source src="rtmp://217.23.11.44/live/myStream" type='rtmp/mp4'>
</video>
使用Javascript:
videojs("video_player").ready(function () {
hsnPlayer = this;
hsnPlayer.play();
setTimeout(function () {
var $vid_obj = _V_("video_player");
$vid_obj.pause();
$vid_obj.src({ type: "rtmp/mp4", src: 'rtmp://hsn.mpl.miisolutions.net/hsn-live01/mp4:420p500kB31' });
$vid_obj.load();
$vid_obj.play();
}, 10000);
});
错误是&#34; TypeError:this.ge不是函数&#34;
所以我的问题是我在如何尝试更改源代码时犯了一个错误,或者这是我应该根据他们的git问题报告的错误?
答案 0 :(得分:0)
尝试将代码更改为以下内容:
if (this.techName === "Html5"){
this.src(new_source.src);
} else {
this.loadTech(this.techName, {src: new_source.src});
}
此外, techName 仅在videojs的dev版本中可用(或由uglify / uglify2缩小)。您应该在videojs的缩小版本中替换 techName xa (可在videojs.com上找到)