1. 程式人生 > >Java+WebSocket+WebRTC實現視訊通話例項

Java+WebSocket+WebRTC實現視訊通話例項

function initialize() {
console.log("Initializing; room=${roomKey}.");
card = document.getElementById("card");
localVideo = document.getElementById("localVideo");
miniVideo = document.getElementById("miniVideo");
remoteVideo = document.getElementById("remoteVideo");
resetStatus();
openChannel();
getUserMedia();
}

function
getUserMedia() {
try { navigator.webkitGetUserMedia({ 'audio' : true, 'video' : true }, onUserMediaSuccess, onUserMediaError); console.log("Requested access to local media with new syntax."); } catch (e) { try { navigator.webkitGetUserMedia("video,audio", onUserMediaSuccess, onUserMediaError); console .log("Requested access to local media with old syntax."
); } catch (e) { alert("webkitGetUserMedia() failed. Is the MediaStream flag enabled in about:flags?"); console.log("webkitGetUserMedia failed with exception: " + e.message); } } } function onUserMediaSuccess(stream) { console.log("User has granted access to local media."); var url = webkitURL.createObjectURL(stream); localVideo.style.opacity = 1
; localVideo.src = url; localStream = stream; // Caller creates PeerConnection. if (initiator) maybeStart(); } function maybeStart() { if (!started && localStream && channelReady) { setStatus("Connecting..."); console.log("Creating PeerConnection."); createPeerConnection(); console.log("Adding local stream."); pc.addStream(localStream); started = true; // Caller initiates offer to peer. if (initiator) doCall(); } } function doCall() { console.log("Sending offer to peer."); if (isRTCPeerConnection) { pc.createOffer(setLocalAndSendMessage, null, mediaConstraints); } else { var offer = pc.createOffer(mediaConstraints); pc.setLocalDescription(pc.SDP_OFFER, offer); sendMessage({ type : 'offer', sdp : offer.toSdp() }); pc.startIce(); } } function setLocalAndSendMessage(sessionDescription) { pc.setLocalDescription(sessionDescription); sendMessage(sessionDescription); } function sendMessage(message) { var msgString = JSON.stringify(message); console.log('發出資訊 : ' + msgString); path = 'message?r=${roomKey}' + '&u=${user}'; var xhr = new XMLHttpRequest(); xhr.open('POST', path, true); xhr.send(msgString); }
頁面載入完之後會呼叫initialize方法,initialize方法中呼叫了getUserMedia方法,這個方法是通過本地攝像頭獲取視訊的方法,在成功獲取視訊之後傳送連線請求,並在客戶端建立連線管道,最後通過sendMessage向另外一個客戶端傳送連線的請求,引數為當前通話的房間號和當前登陸人,下圖是連線產生的日誌:

相關推薦

Java+WebSocket+WebRTC實現視訊通話例項

function initialize() { console.log("Initializing; room=${roomKey}."); card = document.getElementById("card"); localVideo = document.getElementById("local

Java通過WebSocket WebRTC實現視訊通話例項

package org.rtc.servlet; import java.io.IOException; import java.util.UUID; import javax.servlet.ServletException; import javax.servlet.annotation.WebSe

Java使用websocketWebRTC實現視訊通話

最近這段時間折騰了一下WebRTC,這兩天終於是抽了時間把WebRTC搞定了,去年就想弄的,但是確實沒時間。看了網上的https://apprtc.appspot.com/的例子(可能需要翻牆訪問),這個例子是部署在Google App Engine上的應用程式

基於socket.io即時通訊IM實現webRTC實現視訊通話

Socket.io-FLSocketIM-iOS 基於Socket.io iOS即時通訊客戶端 iOS IM Client based on Socket.io 實現功能 文字傳送 圖片傳送(從相簿選取,或者拍攝) 短視

iOS WebRTC語音視訊通話實現與demo

pod install AppRTC 從那裡你可以看到在這個回購ARTCVideoChatViewController類。以下步驟詳細具體更改您將需要在您的應用程式新增視訊聊天。 Initialize SSL Peer ConnectionWebRTC可以通過SSL安全通訊。這是必需的,如果你想測試在ht

webRtc+websocket多人視訊通話

webRTc+ websocket實現多人視訊通話,目前此demo只支援crome瀏覽器, 版本僅僅支援:ChromeStandalone_46.0.2490.80_Setup.1445829883 tomcat要8,jdk要1.7,不需要資料庫 192.168.1.118

使用Resiprocate 部署 WebRTC IM 視訊通話平臺

為什麼選用SIP協議來部署WebRTC 通訊系統? 1,互通性,基於sip 協議有大量的軟硬體裝置,例如: ip 話機,軟電話,ip攝像頭等等,MCU 裝置等。 2,穩定性,sip 協議歷史悠久,且大量的公司使用它開發ip 通訊系統,文件豐富,功能強大。 3,支援與電話系統

iOS下WebRTC視訊通話(一)

在iOS下做IM功能時,難免都會涉及到音訊通話和視訊通話。QQ中的QQ電話和視訊通話效果就非常好,但是如果你沒有非常深厚的技術,也沒有那麼大的團隊,很難做到QQ那麼快速和穩定的通話效果。 但是利用WebRTC技術,即使一個人也能夠實現效果不錯的音視訊通話。本篇

100行Javascript程式碼實現視訊通話

視訊聊天室 上一篇文章通過JavaScript呼叫AnyChat實現視訊聊天室 簡單地講述瞭如何通過AnyChat做視訊聊天室。通過學習,我自己也做了個簡單的小例子,幾十行JavaScript指令碼就能輕鬆實現視訊通話;也不用去下載指定的什麼瀏覽器,因為IE、firefo

AnyChatSDK 實現視訊通話

package com.bairuitech.main; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.app.Dialog; import android.

x-lite asterisk 成功實現視訊通話

       首先,在此感謝asterisk協會的各位大牛們,沒有他們的幫助,我也不可能在這麼短的時間內實現,x-lite+asterisk音視訊通話。在此將實現的過程記錄如下,分享給asterisk的愛好者們。        1. 修改asterisk伺服器的sip.co

FreeSwitch 1.9.0 安裝配置及使用MySQL管理賬戶,並實現視訊通話

最近因為專案上的需要入手了FreeSwitch。 之前嘗試過Asterisk,但個人感覺對H264的支援不是特別友好,所以用才選擇了FreeSwitch。 安裝FreeSwitch前的準備工作: 1、VMare上安裝一個CentOS的虛擬機器 安裝CentOS 7:

Java Socket通訊實現私聊、群聊 WebSocket+Java 私聊、群聊例項

   前言   閒言少敘,上程式碼!     程式碼編寫    server服務端 /** * 服務端 */ public class Server { private static ServerSocket server = null;

基於socketio實現webrtc視訊通話的流程

按照發起方A往下走流程,呼叫requestServerCreateRoom方法,在這個方法裡建立socket連線,將發起方A和接收方B的使用者id傳遞給伺服器,傳送事件為“videoChat”。伺服器接收到videoChat事件,按照請求生成房間,並將房間號返回給發起方A。發起方A收到房間號後,執行conne

使用WebRTC實現電腦與手機通過瀏覽器進行視訊通話

      最近一直在研究WebRTC,做了一個小專案:www.meet58.com,這個專案利用WebRTC、WebSocket可以讓各種裝置只通過瀏覽器進行視訊聊天,無論是電腦、手機或者是平板。下面就是手機和電腦進行視訊通話的截圖:PC端手機端這個專案目前只有簡單的視訊通

java實現非同步呼叫例項

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

webrtc 實時視訊 .net websocket後臺

這篇文章主要參考了 Webrtc WebSocket實現音視訊通訊,非常感謝提供程式碼 前端部分完全是從這篇文章複製過來的,只是修改了webscket的url與stun伺服器的地址,還有加入了webrtc-adapterjs ,至於做什麼,可以點選連結進行了解   前端程式

Java實現RPC框架例項

一、RPC簡介 RPC,全稱為Remote Procedure Call,即遠端過程呼叫,它是一個計算機通訊協議。它允許像呼叫本地服務一樣呼叫遠端服務。它可以有不同的實現方式。如RMI(遠端方法呼叫)、Hessian、Http invoker等。另外,RPC是與語言無關的。 RPC示意圖

ffmpeg例項實現視訊對稱效果,鏡面水面效果,上下對稱,左右對稱

上下對稱,水面效果 ffmpeg -i 1.mp4 -filter_complex "[0:v]pad=h=2*ih[a];[0:v]vflip[b];[a][b]overlay=y=h" duichen3.mp4 -y 左右對稱,鏡面效果

Android 為例編寫一個 OpenGL ES 3.0 例項,Native & Java 兩種實現

一、簡介 通過這個 Sample,你將瞭解到 Android 中是怎麼使用 OpenGL ES 通過繪製一個簡單的靜態三角形,來簡單入門和了解它大致的流程(類似於 HelloWorld 工程) 介紹使用 Native 層 和 Java 層 兩種方式來分別實現