zoukankan      html  css  js  c++  java
  • 乐橙的http直播

    我们公司会议室装的球机是大华的,上云需要上乐橙云,但是乐橙的播放控件我们c开发那边集成后播放不了,于是我决定用h5的直播方式播放实时视频,但是有个缺点,延时有10到30秒。

    虽然有缺点,但是亦有优点,下面开始说集成的过程。

    首先自然是把大华的球机加到乐橙的硬盘录像机里,然后再乐橙的云开放平台里加入这个硬盘录像机设备,这个可以参见我的微博:

    https://www.cnblogs.com/LcxSummer/p/13738049.html

    加入后可以在乐橙的云开放平台里看到直播的url

     

     这个地址直接放到video标签的src里后,并不能播放,需要看这个浏览器支不支持video的type="application/vnd.apple.mpegurl"

    if (video.canPlayType('application/vnd.apple.mpegurl')) {
    
        video.src = videoUrl;
    
        video.addEventListener('loadedmetadata', function() {
            video.play();
        });
    
    }

    我测试的结果:

    video.canPlayType('application/vnd.apple.mpegurl')
    ""
    video.canPlayType('video/mp4')
    "maybe"

    我的浏览器支持不了,于是采用了另一种方式,利用hls.js 来实现播放

    if (Hls.isSupported()) {
    
        var hls = new Hls();
    
        hls.loadSource(videoUrl);
    
        hls.attachMedia(video);
    
        hls.on(Hls.Events.MANIFEST_PARSED, function() {
            video.play();
        });
    
    }

    hls的下载地址:

    https://www.bootcdn.cn/hls.js/

    播放也是遇到了一定的问题,报错,提示:

    Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first.

    百度后找到了解决方案:

    给video标签加入<video muted></video> 静音即可。
    Chrome 66为了避免标签产生随机噪音。

    最后终于成功,下面见完整的测试代码:

    <html>
    <head>
    <meta charset="UTF-8">
    </head>
    <body>
    <script src="https://cdn.bootcdn.net/ajax/libs/hls.js/0.14.14-0.alpha.5887/hls.min.js"></script>
    <video muted controls id="video"></video>
    <script>
        
        var video = document.getElementById('video');
        
        if(Hls.isSupported()) {
    var m3u8_8 = "http://cmgw-vpc.lechange.com:8888/LCO/4B74/8/1/20227T155731/dev_4L3D274_20227T155731.m3u8";
            
            var hls = new Hls();
            hls.loadSource(m3u8_8);
            hls.attachMedia(video);
            
            
            hls.on(Hls.Events.MANIFEST_PARSED, () => {
                console.log("加载成功");
                video.play();
            });
            hls.on(Hls.Events.ERROR, (event, data) => {
                console.log(data);
                console.log("加载失败");
            });
            
        }
    </script>
    </body>
    </html>
  • 相关阅读:
    编程ING:人人都能学会程序设计
    以拯救之因
    使用交互环境
    使用交互环境 连载3
    深入理解Oracle Exadata
    字符编码
    多语境的操作
    挖掘用户需求
    神一样的产品经理——基于移动与互联网产品实践
    产品各类型之间的关系
  • 原文地址:https://www.cnblogs.com/LcxSummer/p/13746007.html
Copyright © 2011-2022 走看看