html页面通过flv.js实现视频监控直播和点播功能。

最近在做关于视频平台的直播和点播功能,服务端使用的是SRS版本,计划手机APP使用PLDroidPlayer来通过http-flv的方式实现视频的直播和点播,Web端可以使用flv.js。目前手机端没有什么问题,介绍下使用html5页面方式通过http-flv来进行视频的直播和点播,直播和点播都使用flv。

1、在点播的时候,使用yamdi对flv视频文件添加关键帧,然后将视频文件存储在nginx服务器上,同样将html页面存储在nginx的目录下,具体代码如下:

flvVod.html
<!DOCTYPE html>
<html>
<head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
    <title>flv.js demo</title>
    <style>
        .mainContainer {
    display: block;
    width: 1024px;
    margin-left: auto;
    margin-right: auto;
}

.urlInput {
    display: block;
    width: 100%;
    margin-left: auto;
    margin-right: auto;
    margin-top: 8px;
    margin-bottom: 8px;
}

.centeredVideo {
    display: block;
    width: 100%;
    height: 576px;
    margin-left: auto;
    margin-right: auto;
    margin-bottom: auto;
}

.controls {
    display: block;
    width: 100%;
    text-align: left;
    margin-left: auto;
    margin-right: auto;
}
</style>
</head>

<body>
    <div class="mainContainer">
        <video id="videoElement" class="centeredVideo" controls autoplay width="1024" height="576">Your browser is too old which doesn't support HTML5 video.</video>
    </div>
    <br>
    <div class="controls">
        <!--<button onclick="flv_load()">加载</button>-->
        <button onclick="flv_start()">开始</button>
        <button onclick="flv_pause()">暂停</button>
        <button onclick="flv_destroy()">停止</button>
        <input style="width:100px" type="text" name="seekpoint" />
        <button onclick="flv_seekto()">跳转</button>
    </div>
   <script src="flv.min.js"></script>    
    <script>
        var player = document.getElementById('videoElement');
        if (flvjs.isSupported()) {
            var flvPlayer = flvjs.createPlayer({
                type: 'flv',
                url: 'http://192.168.0.100/flv/fkdwc_with_meta.flv'
            });
            flvPlayer.attachMediaElement(videoElement);
            flvPlayer.load(); //加载
        }

        function flv_start() {
            player.play();
        }

        function flv_pause() {
            player.pause();
        }

        function flv_destroy() {
            player.pause();
            player.unload();
            player.detachMediaElement();
            player.destroy();
            player = null;
        }

        function flv_seekto() {
            player.currentTime = parseFloat(document.getElementsByName('seekpoint')[0].value);
        }
    </script>
</body>

</html>

2、在直播的时候,如果使用的是SRS2版本时候,会遇到CORS 头缺少 'Access-Control-Allow-Origin'问题,通过在SRS上查找问题,发现是SRS2版本上不支持第三方网站的跨域访问,在SRS3版本上已有修复w->header()->set("Access-Control-Allow-Origin", "*");,直播的html代码如下:

flvLive.html
<!DOCTYPE html>
<html>

<head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
    <title>flv.js demo</title>

    <style>
        .mainContainer {
            display: block;
            width: 1024px;
            margin-left: auto;
            margin-right: auto;
        }

        .urlInput {
            display: block;
            width: 100%;
            margin-left: auto;
            margin-right: auto;
            margin-top: 8px;
            margin-bottom: 8px;
        }

        .centeredVideo {
            display: block;
            width: 100%;
            height: 576px;
            margin-left: auto;
            margin-right: auto;
            margin-bottom: auto;
        }

        .controls {
            display: block;
            width: 100%;
            text-align: left;
            margin-left: auto;
            margin-right: auto;
            margin-top: 8px;
            margin-bottom: 10px;
        }

        .logcatBox {
            border-color: #CCCCCC;
            font-size: 11px;
            font-family: Menlo, Consolas, monospace;
            display: block;
            width: 100%;
            text-align: left;
            margin-left: auto;
            margin-right: auto;
        }
    </style>
</head>

<body>
    
    <div class="mainContainer">
        <video name="videoElement" class="centeredVideo" id="videoElement" controls width="1024" height="576" autoplay>
            Your browser is too old which doesn't support HTML5 video.
        </video>

    </div>

	<script src="flv.1.5.0.js"></script>
    
    <script>
         if (flvjs.isSupported()) {
            startVideo()
        }

        function startVideo(){
            var videoElement = document.getElementById('videoElement');
            var flvPlayer = flvjs.createPlayer({
                type: 'flv',
                isLive: true,
                hasAudio: true,
                hasVideo: true,
                enableStashBuffer: true,
                url: 'http://10.139.19.55:18080/live/livestreams.flv'
            });
            flvPlayer.attachMediaElement(videoElement);
            flvPlayer.load();
            flvPlayer.play();
        }

        videoElement.addEventListener('click', function(){
            alert( '是否支持点播视频:' + flvjs.getFeatureList().mseFlvPlayback + ' 是否支持httpflv直播流:' + flvjs.getFeatureList().mseLiveFlvPlayback )
        })

        function destoryVideo(){
            flvPlayer.pause();
            flvPlayer.unload();
            flvPlayer.detachMediaElement();
            flvPlayer.destroy();
            flvPlayer = null;
        }

        function reloadVideo(){
            destoryVideo()
            startVideo()
        }
    </script>
    
</body>

</html>

直播效果页面如下:

3、设备侧推流代码如下:

ffmpeg -re -i fkdwc.flv -vcodec copy -acodec copy -f flv -y rtmp://10.139.19.55/live/livestreams

 

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
FLV.js 是一个 JavaScript 库,用于在 Web 浏览器中解码和播放 FLV 视频文件。它可以与 HTML5 Video 标签结合使用,提供了跨平台和跨浏览器的视频播放体验。同时,FLV.js 还支持各种流媒体协议,如 HTTP-FLV、WebSocket-FLV 和 HLS,可以实现低延迟的视频直播。 使用 FLV.js,你需要先在 HTML 文件中引入 FLV.js 库,然后在 JavaScript 中创建一个 FLV 播放器实例,设置视频源和相关参数,最后将播放器实例添加到页面中即可。 以下是一个简单的 FLV.js 播放器示例: ```html <!DOCTYPE html> <html> <head> <title>FLV.js Player</title> <script src="flv.min.js"></script> </head> <body> <video id="videoElement" controls></video> <script> if (flvjs.isSupported()) { var videoElement = document.getElementById('videoElement'); var flvPlayer = flvjs.createPlayer({ type: 'flv', url: 'example.flv' }); flvPlayer.attachMediaElement(videoElement); flvPlayer.load(); flvPlayer.play(); } </script> </body> </html> ``` 在这个例子中,我们首先在 `<head>` 中引入了 FLV.js 库,然后在 `<body>` 中创建了一个 `<video>` 元素作为播放器容器。在 JavaScript 中,我们检查浏览器是否支持 FLV.js,如果支持则创建一个 FLV 播放器实例,设置视频源为 `example.flv`,并将播放器实例与 `<video>` 元素绑定。最后,我们调用 `load()` 方法加载视频,再调用 `play()` 方法开始播放。 需要注意的是,由于浏览器对视频格式的支持情况不同,FLV.js 可能无法在某些浏览器中正常工作。此外,FLV.js 仅提供了视频解码和播放功能,如果你需要在视频中添加广告、字幕等内容,需要使用其他工具或库来完成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值