- 浏览: 1477793 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (691)
- linux (207)
- shell (33)
- java (42)
- 其他 (22)
- javascript (33)
- cloud (16)
- python (33)
- c (48)
- sql (12)
- 工具 (6)
- 缓存 (16)
- ubuntu (7)
- perl (3)
- lua (2)
- 超级有用 (2)
- 服务器 (2)
- mac (22)
- nginx (34)
- php (2)
- 内核 (2)
- gdb (13)
- ICTCLAS (2)
- mac android (0)
- unix (1)
- android (1)
- vim (1)
- epoll (1)
- ios (21)
- mysql (3)
- systemtap (1)
- 算法 (2)
- 汇编 (2)
- arm (3)
- 我的数据结构 (8)
- websocket (12)
- hadoop (5)
- thrift (2)
- hbase (1)
- graphviz (1)
- redis (1)
- raspberry (2)
- qemu (31)
- opencv (4)
- socket (1)
- opengl (1)
- ibeacons (1)
- emacs (6)
- openstack (24)
- docker (1)
- webrtc (11)
- angularjs (2)
- neutron (23)
- jslinux (18)
- 网络 (13)
- tap (9)
- tensorflow (8)
- nlu (4)
- asm.js (5)
- sip (3)
- xl2tp (5)
- conda (1)
- emscripten (6)
- ffmpeg (10)
- srt (1)
- wasm (5)
- bert (3)
- kaldi (4)
- 知识图谱 (1)
最新评论
-
wahahachuang8:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
websocket的helloworld -
q114687576:
http://www.blue-zero.com/WebSoc ...
websocket的helloworld -
zhaoyanzimm:
感谢您的分享,给我提供了很大的帮助,在使用过程中发现了一个问题 ...
nginx的helloworld模块的helloworld -
haoningabc:
leebyte 写道太NB了,期待早日用上Killinux!么 ...
qemu+emacs+gdb调试内核 -
leebyte:
太NB了,期待早日用上Killinux!
qemu+emacs+gdb调试内核
google官方的
socket.io的源码
https://bitbucket.org/webrtc/codelab/downloads
http://dl.iteye.com/topics/download/88405497-3fd1-3e34-adba-004583638559
最简单的WebRTC示例
http://www.blogjava.net/linli/archive/2014/10/21/418910.html
webrtc.html
nodejs的server
server.js
在局域网可以忽略google的stun
一台电脑先打开
192.168.137.27:3000
另一台打开
192.168.137.27:3000#true
iceServer设置成空也行
官方参考
http://www.html5rocks.com/en/tutorials/webrtc/basics/
http://www.html5rocks.com/en/tutorials/getusermedia/intro/
http://blog.csdn.net/liaowenfeng/article/details/18407837
例子
https://apprtc.appspot.com/
例子
http://www.simpl.info/rtcpeerconnection/
git:
https://github.com/andyet/SimpleWebRTC
https://github.com/webRTC-io/webRTC.io
socket.io的源码
https://bitbucket.org/webrtc/codelab/downloads
http://dl.iteye.com/topics/download/88405497-3fd1-3e34-adba-004583638559
最简单的WebRTC示例
http://www.blogjava.net/linli/archive/2014/10/21/418910.html
webrtc.html
<html> <body> Local: <br> <video id="localVideo" autoplay></video><br> Remote: <br> <video id="remoteVideo" autoplay></video> <script> // 仅仅用于控制哪一端的浏览器发起offer,#号后面有值的一方发起 var isCaller = window.location.href.split('#')[1]; // 与信令服务器的WebSocket连接 var socket = new WebSocket("ws://192.168.137.27:3000"); // stun和turn服务器 var iceServer = { "iceServers": [{ "url": "stun:stun.l.google.com:19302" }, { "url": "turn:numb.viagenie.ca", "username": "haoningabc@163.com", "credential": "12345" }] }; // 创建PeerConnection实例 (参数为null则没有iceserver,即使没有stunserver和turnserver,仍可在局域网下通讯) var pc = new webkitRTCPeerConnection(iceServer); // 发送ICE候选到其他客户端 pc.onicecandidate = function(event){ if (event.candidate !== null) { socket.send(JSON.stringify({ "event": "_ice_candidate", "data": { "candidate": event.candidate } })); } }; // 如果检测到媒体流连接到本地,将其绑定到一个video标签上输出 pc.onaddstream = function(event){ //document.getElementById('remoteVideo').src = URL.createObjectURL(event.stream); document.getElementById('remoteVideo').srcObject = event.stream; }; // 发送offer和answer的函数,发送本地session描述 var sendOfferFn = function(desc){ pc.setLocalDescription(desc); socket.send(JSON.stringify({ "event": "_offer", "data": { "sdp": desc } })); }, sendAnswerFn = function(desc){ pc.setLocalDescription(desc); socket.send(JSON.stringify({ "event": "_answer", "data": { "sdp": desc } })); }; // 获取本地音频和视频流 navigator.webkitGetUserMedia({ "audio": true, "video": true }, function(stream){ //绑定本地媒体流到video标签用于输出 //document.getElementById('localVideo').src = URL.createObjectURL(stream); document.getElementById('localVideo').srcObject = stream; //向PeerConnection中加入需要发送的流 pc.addStream(stream); //如果是发起方则发送一个offer信令 if(isCaller){ pc.createOffer(sendOfferFn, function (error) { console.log('Failure callback: ' + error); }); } }, function(error){ //处理媒体流创建失败错误 console.log('getUserMedia error: ' + error); }); //处理到来的信令 socket.onmessage = function(event){ var json = JSON.parse(event.data); console.log('onmessage: ', json); //如果是一个ICE的候选,则将其加入到PeerConnection中,否则设定对方的session描述为传递过来的描述 if( json.event === "_ice_candidate" ){ pc.addIceCandidate(new RTCIceCandidate(json.data.candidate)); } else { pc.setRemoteDescription(new RTCSessionDescription(json.data.sdp)); // 如果是一个offer,那么需要回复一个answer if(json.event === "_offer") { pc.createAnswer(sendAnswerFn, function (error) { console.log('Failure callback: ' + error); }); } } }; </script> </body> </html>
nodejs的server
server.js
//http://www.blogjava.net/linli/archive/2014/10/21/418910.html var express = require('express'), app = express(), server = require('http').createServer(app); server.listen(3000); app.get('/', function(req, res) { res.sendfile(__dirname + '/webrtc.html'); }); var WebSocketServer = require('ws').Server, wss = new WebSocketServer({server: server}); // 存储socket的数组,这里只能有2个socket,每次测试需要重启,否则会出错 var wsc = [], index = 1; // 有socket连入 wss.on('connection', function(ws) { console.log('connection'); // 将socket存入数组 wsc.push(ws); // 记下对方socket在数组中的下标,因为这个测试程序只允许2个socket // 所以第一个连入的socket存入0,第二个连入的就是存入1 // otherIndex就反着来,第一个socket的otherIndex下标为1,第二个socket的otherIndex下标为0 var otherIndex = index--, desc = null; if (otherIndex == 1) { desc = 'first socket'; } else { desc = 'second socket'; } // 转发收到的消息 ws.on('message', function(message) { var json = JSON.parse(message); console.log('received (' + desc + '): ', json); console.log('otherIndex ---(' + otherIndex + '): '); wsc[otherIndex].send(message, function (error) { if (error) { console.log('Send message error (' + desc + '): ', error); } }); }); });
在局域网可以忽略google的stun
一台电脑先打开
192.168.137.27:3000
另一台打开
192.168.137.27:3000#true
iceServer设置成空也行
官方参考
http://www.html5rocks.com/en/tutorials/webrtc/basics/
http://www.html5rocks.com/en/tutorials/getusermedia/intro/
http://blog.csdn.net/liaowenfeng/article/details/18407837
例子
https://apprtc.appspot.com/
例子
http://www.simpl.info/rtcpeerconnection/
git:
https://github.com/andyet/SimpleWebRTC
https://github.com/webRTC-io/webRTC.io
- webrtc-codelab-c75c8e837a12.zip (218.6 KB)
- 下载次数: 21
发表评论
-
srt学习笔记一:srt的helloworld
2020-03-27 19:13 7921。无服务的方式:udp, 2。srs作为服务端:rtmp推收 ... -
ios的safari使用自制ca证书测试webrtc
2018-08-20 13:31 2441这个需要注意 https://stackoverflow.c ... -
webrtc学习笔记九 (datachannel在jslinux的应用,java版本)
2015-10-15 17:45 2529目标:使用java的websocket作为datachannl ... -
webrtc学习笔记八(datachannnel同步textarea)
2015-10-09 16:47 11752020年5月12日更新 出现错误 websocket Fai ... -
webrtc学习笔记七(datachannel在jslinux的应用,nodejs版本)
2015-10-09 15:34 860目标: 两个浏览器的jslinux可以进行数据交互 fa ... -
webrtc学习笔记六(datachannel+websocket)
2015-10-03 00:12 15972020年5月12日更新 5年前的例子又不好使了, 出现错误 ... -
webrtc学习笔记五(视频流和datachannel一起使用的例子)
2015-09-30 23:57 37722020年5月9日更新,5年前 ... -
webrtc学习笔记四(获取真实的ip)
2015-09-28 14:47 4060<script> function getI ... -
webrtc学习笔记三(截屏快照)
2015-09-25 14:46 2258需要注意的问题: sizeCanvas这个方法帮助解决的 ch ... -
webrtc学习笔记二(datachannel)
2015-09-24 17:57 2490https://www.webrtc-experiment.c ...
相关推荐
### WebRTC学习笔记_Demo收集 #### 一、WebRTC现状与历史背景 WebRTC(Web Real-Time Communication)是一项开放的、免费的技术框架,旨在使Web浏览器能够在无需插件的情况下进行实时音视频通信。该技术最初由...
在"WebRTC学习笔记01-最简单实现一对一视频通讯代码"中,我们将探讨WebRTC的基础知识以及如何通过简单的代码实现一对一视频通话。 首先,WebRTC的核心组件包括: 1. **RTCPeerConnection**:这是WebRTC中最关键的...
7. **绘图显示**:处理视频的显示,包括在网页上呈现视频流。 8. **抖动处理**:通过Video Jitter Buffer减少视频抖动和丢包对画质的影响。 9. **音频相关**:如ANS+AEC,音频噪声抑制和回声消除,提供高质量的...
它负责处理音视频流的捕获、编码、传输和解码。 2. **会话建立协议(ICE, Interactive Connectivity Establishment)**:用于在复杂的网络环境中找到最优的数据传输路径。 3. **信令(Signaling)**:处理媒体会话的建立...
在"webRTC学习资料.doc"中,可能会涵盖WebRTC的架构、工作流程、API使用示例、信令流程详解等内容,帮助读者理解如何在实际项目中应用WebRTC。而"note.txt"可能是学习笔记,记录了学习过程中的重点、难点和实践经验...
此外,"mediasoup study"这个压缩包文件可能包含了一些学习笔记、示例代码或者实战教程,可以帮助你深入理解mediasoup的使用方法和功能。 总之,mediasoup是一个强大的工具,对于开发实时音视频应用的开发者来说,...
**SDP学习笔记** SDP(Session Description Protocol)是一种用于描述多媒体会话的协议,它在互联网通信领域中起着至关重要的作用。本笔记将深入浅出地解析SDP的基本概念、结构以及应用,旨在提供比其他教程更为...
3. **Web即时通讯**:WebRTC等技术允许开发者使用JavaScript实现实时通信,如聊天应用和视频会议平台。 4. **股市网站**:JavaScript用于实时更新股票价格、绘制图表,提供用户实时交易体验。 5. **表单验证**:在...
因此,这个压缩包可能包含一系列的文本文件(如Markdown格式的学习笔记)、代码示例、配置文件或其他与上述标签相关的资源。 综上所述,"MyNote"是一个综合性的个人学习资源库,涵盖了从基础编程语言(Python、Go、...
【大华摄像头前端demo】是针对大华品牌的监控摄像头所设计的一个前端展示示例项目,主要目的是为了演示如何在Web端实现对大华摄像头的实时视频流预览、控制及其它相关功能。这个demo通常包括了必要的HTML、CSS以及...
这个压缩包可能包含与图灵商城相关的各种代码实现、学习笔记和相关资料,对于深入理解图灵商城的运作机制,以及音视频处理技术的学习都有很大的帮助。 在图灵商城中,音视频部分可能涉及到的技术包括但不限于: 1....
通过上述介绍,我们可以看出SRS是一个强大且灵活的流媒体服务器,不仅适用于传统的直播场景,还能够适应不断发展的视频监控领域。随着GB28181的支持,SRS进一步拓宽了其在安防领域的应用,为实现云监控提供了有力的...
在压缩包中,多个文件带有“.goodnotes”扩展名,意味着它们是GoodNotes应用中的笔记文件,可能包含个人的工作记录、学习笔记或项目资料。 2. **Support Sites**:文件名中出现“support.google.com”和“support....
SDP协议学习笔记.txt可能包含了以下关键知识点: 1. **SDP结构**:SDP由一系列的行(称为“描述行”)组成,每个描述行都以一个大写字母开头,如`v=`、`o=`、`s=`等,分别代表版本、会话发起者、会话名称等。这些行...
"Live-Camera"是一个与实时摄像头流媒体技术相关的主题,主要涉及如何利用摄像头进行实时视频捕获、处理和传输。在IT行业中,实时摄像头技术广泛应用于视频会议、在线教育、安全监控、虚拟现实等多个领域。以下是...
程序可能使用了如WebRTC这样的开源库来处理这些任务,它支持实时的音视频通信,并且兼容多种浏览器和平台。 3. **多用户同步**:为了实现多人聊天室功能,程序需要处理多个用户同时发送和接收音频流的同步问题。这...
在技术层面,MyProctor-crx插件的开发可能涉及WebRTC(Web Real-Time Communication)技术,用于获取和传输摄像头视频流;利用Chrome API来监控浏览器行为;以及可能的机器学习算法,以更智能地分析和判断考生的行为...