javascript - videojs 无法更改 rtmp src

标签 javascript live rtmp video.js

我正在使用Videojs作为我的客户端播放器,正在研究一种动态更改实时 RTMP 源的方法,最终目标是检测带宽并将源视频更改为更高或更低的比特率。

我遇到的问题是,当我尝试使用通过其他帖子找到的示例简单地更改源代码时,会导致 video.js 代码中抛出错误。

这是一个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);
});

错误是“TypeError:this.ge 不是函数”

所以我的问题是我在尝试更改源代码时是否犯了错误,或者这是我应该在他们的 git issues 下报告的错误吗?

最佳答案

尝试将您的代码更改为如下所示:

    if (this.techName === "Html5"){
        this.src(new_source.src);
    } else {
        this.loadTech(this.techName, {src: new_source.src});
    }

此外,techName 仅在 videojs 的开发版本中可用(或通过 uglify/uglify2 缩小)。您应该在 videojs 的缩小版本(在 videojs.com 上提供)中将 techName 替换为 xa

关于javascript - videojs 无法更改 rtmp src,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24973342/

相关文章:

javascript - 使用 JQuery 自定义路径动画

jquery - $.live() 和 $.die() 绑定(bind)和解除绑定(bind)

ffmpeg - linux ffmpeg 获取 rtmp 流并转换为实时网络摄像头 v4l2

ffmpeg - crtmpserver 错误,appselector 可以是最终目的地

javascript - 与本地存储一起使用的 Hook 调用无效

javascript - IndexedDB 的包装函数

javascript - 实时点击显示另一个 div

使用 "live"的 jQuery 插件模式

java - 通过 RTMP 从 Java OpenCV 流式传输

javascript - 使用javascript在HTML Canvas 中获取手写数字矩阵