video.js播放RTMP流

基于video.js
我在本地直接用rtmp流播放
导致浏览器报错
图片描述

html代码

<div class="as_video_box">

            <video id="as_video" class="video-js aosaVideo" src="rtmp://192.168.1.195/live/demo">
                <source src="rtmp://192.168.1.195/live/demo" type='rtmp/mp4'></source>
            </video>
        </div>

js代码
//生成视频

var aosaTv = videojs("as_video",{
    "techOrder" : ['html5','flash'],
    "controls": false,
    "bigPlayButton" : false,
    flash: {
        swf: 'js/video-js.swf'
    },
    controlBar: {
        muteToggle: false,
        captionsButton: false,
        chaptersButton: false,
        playbackRateMenuButton: false,
        LiveDisplay: false,
        subtitlesButton: false,
        remainingTimeDisplay: false,
        progressControl: false,
        volumeMenuButton: {
            inline: false,
            vertical: true
        },//竖着的音量条
        fullscreenToggle: false
    }
},
function() {
    /*自定义*/
    var v = this;
    $.AosaTv(v,option);
});
阅读 17.4k
2 个回答

你可以照我下面写的这段代码换成你的路径和资源试试,我测试过时OK的。

<div id="content">
    <video id="rtmpVideo" class="video-js vjs-default-skin vjs-big-play-centered" width="100%" height="100%">
        <source src="rtmp://10.129.4.250/live/2d783dfd1f0c5557bb8154a43a88191428d" type="rtmp/flv">
        <p class="vjs-no-js">
            您的浏览器不支持HTML5,请升级浏览器。
        </p>
    </video>
</div>

<script>
    videojs.options.flash.swf = "/js/video-js-5.8.2/video-js.swf";
    // 初始化视频,设为全局变量
    var myPlayer = videojs('rtmpVideo', {
        autoplay: true,
        controls: true,//控制条
        poster: "/images/camera/playStop.png",
        techOrder: ["flash"],
        muted: true,// 静音
        preload: "auto",// 预加载
        language: "zh-CN",// 初始化语言
        playbackRates: [1, 2, 3, 4, 5, 8, 10, 20]// 播放速度
    }, function () {
        console.log("--------------成功初始化视频--------------");
        myPlayer.one("playing", function () {         // 监听播放
            console.log("开始播放");
        });
        myPlayer.one("error", function (error) {      // 监听错误
            console.error("监听到异常,错误信息:%o",error);
        });
    });
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Access-Control-Allow-Origin" content="*">
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <title>测试rtmp直播源</title>
<script src="http://vjs.zencdn.net/7.6.6/video.js"></script>
<link href="http://vjs.zencdn.net/7.6.6/video-js.css" rel="stylesheet">
<!-- If you'd like to support IE8 -->
<script src="http://vjs.zencdn.net/ie8/1.1.1/videojs-ie8.min.js"></script>
 <script src="https://cdn.jsdelivr.net/npm/videojs-flash@2/dist/videojs-flash.min.js"></script>
</head>
<body>
<div class="openFlashTips" style="width:300px;position:absolute;top:20px;left:225px;z-Index:9999;color:white">视频无法正常播放,请点击下方启用flash</div>
<video id="my-video" style="color:black;width:750px;height:350px" class="video-js" autoplay controls preload="auto" width="750" height="350" data-setup="{}">
    <source src='rtmp://127.0.0.1:1935/live/' type='rtmp/flv'/>
</video>
<embed width="300" height="70" class="openFlash" style="position:absolute;top:130px;left:225px;z-Index:9999;" type="application/x-shockwave-flash">
<script type="text/javascript" language="JavaScript">
    function flashChecker() {
        var hasFlash = 0;         //是否安装了flash
        var flashVersion = 0; //flash版本
        var isIE = /*@cc_on!@*/0;      //是否IE浏览器

        if (isIE) {
            var swf = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
            if (swf) {
                hasFlash = 1;
                VSwf = swf.GetVariable("$version");
                flashVersion = parseInt(VSwf.split(" ")[1].split(",")[0]);
            }
        } else {
            if (navigator.plugins && navigator.plugins.length > 0) {
                var swf = navigator.plugins["Shockwave Flash"];
                if (swf) {
                    hasFlash = 1;
                    var words = swf.description.split(" ");
                    for (var i = 0; i < words.length; ++i) {
                        if (isNaN(parseInt(words[i]))) continue;
                        flashVersion = parseInt(words[i]);
                    }
                }
            }
        }
        return {f: hasFlash, v: flashVersion};
    }

    var fls = flashChecker();
    var s = "";
    if (fls.f) {
        document.getElementsByClassName("openFlash")[0].style.display = "none";
        document.getElementsByClassName("openFlashTips")[0].style.display = "none";
//        document.write("您安装了flash,当前flash版本为: " + fls.v + ".x");
    }
    else {
        document.getElementsByClassName("openFlash")[0].style.display = "block";
        document.getElementsByClassName("openFlashTips")[0].style.display = "block";
//        document.write("您没有安装flash");
    }
</script>
</body>
</html>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题