EasyNVR H5無插件攝像機直播解決方案前端解析之:如何在播放界面添加實時雲台控制界面


如何在播放器上加一個雲台控制界面


問題:

對於實時直播的視頻播放,
由於播放頁面客觀樣式要求(一個播放器占據了整個頁面),因此很難找出很合理的空間來放置其他功能按鈕的位置(比如配合實時是平的雲台控制界面);

EasyNVR配置中設有ONVIF探測功能;因此需要在視頻播放界面添加了雲台控制界面來展示出該功能;

EasyNVR

為了保持一個良好的用戶體驗,在保證不影響播放效果和播放界面的前提下,如何合理的添加雲台控制界面成為一個問題。

解決:

由於頁面整體的樣式,在頁面其他位置添加雲台控制界面勢必會影響整體樣式美觀;

向下啟用空間添加雲台控制界面,用會影響用戶的實時體驗;

在播放的播放器頁面上添加一個可以手動觸發展示雲台控制界面的按鈕,讓雲台界面在播放器界面浮動展示出來,雲台界面實時操作結束后,可以手動關閉雲台控制界面,並且不影響視頻的直播。

通過定位確定好雲台控制界面展示的位置,並且將雲平台控制界面默認隱藏起來;再設置一個可以點擊觸發的按鈕,通過觸發按鈕對雲台控制界面進行展示和隱藏處理;

完成效果:

EasyNVR

EasyNVR

代碼:

 <div class="player-wrapper" style="margin:0 auto;width:80%;position:relative;">

                <div class="row" style="position:absolute;top:50%;margin-top:-120px;bottom:0;right:0;z-index:999;overflow: hidden;">
                    <div class="col-sm-5" style="margin-left:20px;width:100%;display:none;overflow: hidden;" id="ipcam_div">

                        <div id="ipcam_control" class="ipcam_control" style="float:left;display:none;">
                            <table width="auto" border="0" align="center" cellspacing="0">
                                <tbody>
                                    <tr>
                                        <th colspan="3" style=" text-align: center;color:#fff">雲台控制</th>
                                    </tr>
                                    <tr>
                                        <th colspan="3" style=" text-align: center;color:#fff">&nbsp;</th>
                                    </tr>
                                    <tr>
                                        <td>
                                             <a onmouseout="ptzout()" onmouseover="MM_swapImage('Image18','','images/cut.png',1)" onmousedown="ptzcmdSubmit('zoomout')" onmouseup="ptzcmdSubmit('stop')"> <img src="images/cut1.png" name="Image18" border="0" height="38" width="38" id="cut" alt="遠"></a>
                                        </td>
                                        <td> </td>
                                        <td>
                                             <a onmouseout="ptzout()" onmouseover="MM_swapImage('Image19','','images/add.png',1)" onmousedown="ptzcmdSubmit('zoomin')" onmouseup="ptzcmdSubmit('stop')"> <img src="images/add1.png" name="Image19" border="0" height="38" width="38" id="add" alt="近"></a>
                                        </td>
                                        <!--<td><img src="images/add1.png" border="0" height="38" width="38" /></td>-->
                                    </tr>
                                    <tr>
                                        <th colspan="3" style=" text-align: center;color:#fff">&nbsp;</th>
                                    </tr>
                                    <tr>
                                        <th colspan="3" style="color:#fff;border:1px dashed #fff;margin:0 4%;"></th>
                                    </tr>
                                    <tr>
                                        <th colspan="3" style=" text-align: center;color:#fff">&nbsp;</th>
                                    </tr>
                                    <tr>
                                        <td> </td>
                                        <td>
                                            <a onmouseout="ptzout()" onmouseover="MM_swapImage('Image20','','images/u.png',1)" onmousedown="ptzcmdSubmit('up')" onmouseup="ptzcmdSubmit('stop')"> <img src="images/u1.png" name="Image20" border="0" height="38" width="38" id="up" alt="上"></a>
                                        </td>
                                        <td> </td>
                                    </tr>
                                    <tr>
                                        <td>
                                            <a onmouseout="ptzout()" onmousedown="ptzcmdSubmit('left')" onmouseup="ptzcmdSubmit('stop')" onmouseover="MM_swapImage('Image22','','images/l.png',1)"> <img src="images/l1.png" name="Image22" border="0" height="38" width="38" id="left" alt="左"></a>
                                        </td>
                                        <td>
                                             <a onmouseout="ptzout()" onmousedown="ptzcmdSubmit('home')" onmouseover="MM_swapImage('Image23','','images/h.png',1)"> <img src="images/h1.png" name="Image23" border="0" height="38" width="38" id="center" alt="居中"></a>
                                        </td>
                                        <td>
                                            <a onmouseout="ptzout()" onmousedown="ptzcmdSubmit('right')" onmouseup="ptzcmdSubmit('stop')" onmouseover="MM_swapImage('Image24','','images/r.png',1)"> <img src="images/r1.png" name="Image24" border="0" height="38" width="38" id="right" alt="右"></a>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td> </td>
                                        <td>
                                            <a onmouseout="ptzout()" onmousedown="ptzcmdSubmit('down')" onmouseup="ptzcmdSubmit('stop')" onmouseover="MM_swapImage('Image26','','images/d.png',1)"> <img src="images/d1.png" name="Image26" border="0" height="38" width="38" id="down" alt="下"></a>
                                        </td>
                                        <td> </td>
                                    </tr>

                                </tbody>
                            </table>
                        </div>
                        <div style="float:left;" onclick="showCont()">
                            <img src="images/show1.png" border="0" width="100%" id="Photo"/>
                        </div>
                    </div>
                </div>

                <div class="video-wrapper" style="padding-bottom:55%;position:relative;margin:0 auto;">
                    <div class="video-inner" style="position:absolute;top:0;bottom:0;left:0;right:0;">
                        <video id="videojs" class="video-js vjs-default-skin vjs-big-play-centered" style="width: 100%; height: 100%;" controls preload="none"
                            poster="" x5-video-player-fullscreen=”true”,x5-video-player-type=”h5”>
                            <source src="" type=""></source>
                            <p class="vjs-no-js">
                                To view this video please enable JavaScript, and consider upgrading to a web browser that
                                <a href="http://videojs.com/html5-video-support/" target="_blank">
                                                    supports HTML5 video
                                                    </a>
                            </p>
                        </video>     
                    </div>
                </div>
            </div>




            function showCont(){
                    if ($("#ipcam_control").is(":hidden")) {
                        $("#ipcam_control").show("fast");
                        $("#Photo").attr("src","images/show2.png")
                    }else{
                        $("#ipcam_control").hide("fast");
                        $("#Photo").attr("src","images/show1.png")
                    }
                }

對於雲台控制功能的實現,可以通過觸發雲台控制界面對應的功能按鈕,調用對應的接口來實現功能;

EasyNVR雲台控制中包含了控制攝像頭上、下、左、右的轉動,停止功能和焦距的調節等。

關於EasyNVR

EasyNVR能夠通過簡單的網絡攝像機通道配置,將傳統監控行業里面的高清網絡攝像機IP Camera、NVR等具有RTSP協議輸出的設備接入到EasyNVR,EasyNVR能夠將這些視頻源的音視頻數據進行拉取,轉換為RTMP/HLS,進行全平台終端H5直播(Web、Android、iOS),並且EasyNVR能夠將視頻源的直播數據對接到第三方CDN網絡,實現互聯網級別的直播分發;

詳細說明:http://www.easydarwin.org/easynvr/

獲取更多信息

郵件:support@easydarwin.org

WEB:www.EasyDarwin.org

Copyright © EasyDarwin.org 2012-2017

EasyDarwin


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM