好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > HTML5中的websocket實現直播功能

HTML5中的websocket實現直播功能

熱門標簽:江蘇智能電銷機器人哪家好 成都智能外呼系統平臺 黃島區地圖標注 四川點撥外呼系統 云南大理400電話申請官方 南寧點撥外呼系統哪家公司做的好 當涂高德地圖標注 鎮江智能外呼系統有效果嗎 電銷機器人電話用什么卡

做視頻直播這一塊,前期研究了很多方案,包括websocket,因為各種原因最后沒有采取這個方案,但還是想記錄一下學習的心得。

WebSocket是HTML5開始提供的一種在單個 TCP 連接上進行全雙工通訊的協議。

在WebSocket API中,瀏覽器和服務器只需要做一個握手的動作,然后,瀏覽器和服務器之間就形成了一條快速通道。兩者之間就直接可以數據互相傳送。

瀏覽器通過 JavaScript 向服務器發出建立 WebSocket 連接的請求,連接建立以后,客戶端和服務器端就可以通過 TCP 連接直接交換數據。

當你獲取 Web Socket 連接后,你可以通過send()方法來向服務器發送數據,并通過onmessage事件來接收服務器返回的數據。

做的過程中,主要的思維是:在錄像頁面利用setTimeout()每隔固定的時間通過canvas將視頻轉化為一幀一幀的圖像,然后用websocket的socket.send()將圖片數據發送給服務器。在直播頁面就是先創建一個<img>的結構,通過websocket的socket.onmessage()獲取到圖像數據,并展示<img>標簽上,形成直播。

附上代碼

錄像頁面HTML結構

<video autoplay id="sourcevid" style="width:1600;height:900px"></video>  
    <canvas id="output" style="display:none"></canvas>  

錄像頁面js

<script type="text/javascript" charset="utf-8">  
        //創建一個+實例  
        var socket = new WebSocket("ws://"+document.domain+":8080");  
        var back = document.getElementById('output');  
        //返回一個用于在畫布上繪圖的環境。  
        var backcontext = back.getContext('2d');  
        var video = document.getElementsByTagName('video')[0];  
        var success = function(stream){  
            //獲取視屏流,轉換為url  
            video.src = window.URL.createObjectURL(stream);  
        }  
        //打開socket  
        socket.onopen = function(){  
            draw();  
            console.log("open success")  
        }  
        // 將視頻幀繪制到Canvas對象上,Canvas每100ms切換幀,形成肉眼視頻效果    
        var draw = function(){  
            try{  
                backcontext.drawImage(video,0,0, back.width, back.height);  
            }catch(e){  
                if (e.name == "NS_ERROR_NOT_AVAILABLE") {  
                    return setTimeout(draw, 100);  
                } else {  
                    throw e;  
                }  
            }  
            if(video.src){  
                // Canvas的內容轉化成PNG data URI并發送到服務器,0.5為和壓縮系數  
                socket.send(back.toDataURL("image/jpeg", 0.5));  
            }  
            setTimeout(draw, 100);  
        }  
        //調用設備的攝像頭,并將資源放入video標簽  
        navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||  
        navigator.mozGetUserMedia || navigator.msGetUserMedia;  
        navigator.getUserMedia({video:true, audio:false}, success, console.log);  
    </script>  

直播頁面HTML結構:

<img id="receiver" style="width:1600px;height:900px"/>  

直播頁面JS

<script type="text/javascript" charset="utf-8">  
        //創建一個socket實例  
        var receiver_socket = new WebSocket("ws://"+document.domain+":8008");  
        alert("ws://"+document.domain+":8008")  
        var image = document.getElementById('receiver');  
         // 監聽消息  
        receiver_socket.onmessage = function(data)  
        {  
            image.src=data.data;  
        }  
    </script>  

總結

以上所述是小編給大家介紹的HTML5中的websocket實現直播功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

標簽:淮安 南京 西寧 廣西 佳木斯 咸寧 十堰 酒泉

巨人網絡通訊聲明:本文標題《HTML5中的websocket實現直播功能》,本文關鍵詞  HTML5,中的,websocket,實現,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《HTML5中的websocket實現直播功能》相關的同類信息!
  • 本頁收集關于HTML5中的websocket實現直播功能的相關信息資訊供網民參考!
  • 推薦文章