videojs无法更改rtmp src

时间:2014-07-26 16:53:27

标签: javascript live rtmp video.js

我使用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问题报告的错误?

1 个答案:

答案 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上找到)