• 使用Hbuilder实现直播推流与直播观看


    Hbuilder的HTML5+规范确实给众多开发者带来了很多便利,目前直播应用比较多,测试了一下H5 plus的直播推流与观看API确实可用,但是比原生应用要逊色一些了,测试一下是可以的,如果要做成型的产品可能要斟酌一下了,实际测试声音还原不够好,另外推流后客户端播放使用rtmp协议是可以正常播放,如果使用m3u8则播放卡顿,而同样的播放客户端和视频直播服务器,用其他工具推流则不会出问题,不知道是不是设备兼容性问题,下面给出推流和播放的代码供参考。

    推流代码

    <!DOCTYPE html>
    <html>
        <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
        <title>Video Example</title>
        <script type="text/javascript">
            var pusher = null;
            // H5 plus事件处理
            function plusReady(){
                // 创建直播推流控件
                pusher = new plus.video.LivePusher('pusher',{
                    url:'rtmp://推流服务器地址',
                    mode:'FHD',
                    muted:false,
                });
                pusher.preview();
                // 监听状态变化事件
                pusher.addEventListener('statechange', function(e){
                    console.log('statechange: '+JSON.stringify(e));
                }, false);
            }
            document.addEventListener('plusready', plusReady, false);
            // 设置推流服务器
            function updatePusher() {
                var url= document.getElementById('pushurl').value;
                pusher.setOptions({
                    url:url
                });
            }
            // 开始推流
            function startPusher() {
                pusher.start();
            }
            
            // 切换摄像头
            function switchCamera() {
                pusher.switchCamera();
            }
        </script>
        </head>
        <body style="margin:0;padding:0;text-align:center;">
            <div id="pusher" style="100%;height:300px;background-color:#000000;margin:auto"></div>
            <br/>
            <input type="text" id="pushurl" value="rtmp://推流服务器地址"  style=" 500px;"/>  <br><br>
            <button onclick="updatePusher()">更新推流服务器</button>
            <br/><br>
            <button onclick="startPusher()">开始推流</button>  <br><br><button onclick="switchCamera()">切换摄像头</button>
            <br/><br/>
            
        </body>
    </html>

    播放代码

    <!DOCTYPE html>
    <html>
        <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
        <title>视频播放</title>
        <script type="text/javascript">
    
            var src = '播放地址支持rtmp http等协议';
            
            var video = null;
            // H5 plus事件处理
            function plusReady(){
                // 创建视频播放控件
                video = new plus.video.VideoPlayer('video',{
                    src:src
                });
                video.play();
            }
            document.addEventListener('plusready', plusReady, false);
            // 切换视频地址
            function switchVideo(src){
                document.getElementById('content').innerHTML = src;
                console.log(src);
                video.setOptions({src:src});
                video.play();
            }
    
        </script>
        </head>
        <body style="margin:0;padding:0;text-align:center;">
            <span id="content" style="color:#0000FF">默认</span><br>
            
            <div id="video" style="100%;height:300px;background-color:#ffffff;margin:auto;"></div>
            <br>
            <button onclick="switchVideo('播放地址1')">切换视频地址1</button><br /><br>
            <button onclick="switchVideo('观看地址2')">观看直播2rtmp</button><br /><br>
            <button onclick="switchVideo('观看地址3')">观看直播3m3u8</button><br />
    
        </body>
    </html>
  • 相关阅读:
    数据库的字符集和校对集
    登录和退出Mysql
    启动mysql服务器
    Numpy
    如何用navicat导入数据?
    MySQL不能连接本地数据库10061
    使用navicat连接Mysql8.0出现2059错误
    leetcode笔记11 First Unique Character in a String
    leetcode笔记10 Intersection of Two Arrays(求交集)
    leetcode笔记9 Move Zeroes
  • 原文地址:https://www.cnblogs.com/bkhdd/p/13224263.html
Copyright © 2020-2023  润新知