- 浏览: 1438789 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 5501。无服务的方式:udp, 2。srs作为服务端:rtmp推收 ... -
ios的safari使用自制ca证书测试webrtc
2018-08-20 13:31 2327这个需要注意 https://stackoverflow.c ... -
webrtc学习笔记九 (datachannel在jslinux的应用,java版本)
2015-10-15 17:45 2458目标:使用java的websocket作为datachannl ... -
webrtc学习笔记八(datachannnel同步textarea)
2015-10-09 16:47 11072020年5月12日更新 出现错误 websocket Fai ... -
webrtc学习笔记七(datachannel在jslinux的应用,nodejs版本)
2015-10-09 15:34 793目标: 两个浏览器的jslinux可以进行数据交互 fa ... -
webrtc学习笔记六(datachannel+websocket)
2015-10-03 00:12 14842020年5月12日更新 5年前的例子又不好使了, 出现错误 ... -
webrtc学习笔记五(视频流和datachannel一起使用的例子)
2015-09-30 23:57 36192020年5月9日更新,5年前 ... -
webrtc学习笔记四(获取真实的ip)
2015-09-28 14:47 3938<script> function getI ... -
webrtc学习笔记三(截屏快照)
2015-09-25 14:46 2187需要注意的问题: sizeCanvas这个方法帮助解决的 ch ... -
webrtc学习笔记二(datachannel)
2015-09-24 17:57 2387https://www.webrtc-experiment.c ...
相关推荐
WebRTC学习笔记_Demo收集 WebRTC是比较流行的开源web视频通讯技术
WebRTC学习笔记01-最简单实现一对一视频通讯代码
注意不要使用https,否则需要SSL 证书
Webrtc的学习笔记 有很多目录内容还没有补全,后续版本会逐渐完善
webRTC一对一视频通讯测试完整demo,包括webRTC基本api测试demo(音视频录制,屏幕共享,截图),后台采用socket.io作为信令服务器,开发语言为node,前台框架使用vue
1.tomcat版本:apache-tomcat-7.0.32 2.如果你想实现WebSocket必须得用Tomcat7及以上版本,并且引入:catalina.jar,tomcat-coyote.jar两个JAR包, 部署到Tomcat7之后得要去webapps/应用下面去删除这两个AR包否则...
使用详情查看我的博客《kurento-media-server和cotrun打洞的服务器的安装及部署,实现RTSP转WebRTC视频流播放》,链接:https://blog.csdn.net/weixin_40717107/article/details/122422896
本demo采用web网页作为客户端,webrtc作为服务端,实现多路rtsp视频流在网页端同时实时预览。 其中包含两个文件夹:webrtc-qmy为客户端;webrtc-streamer-v0.7.0-dirty-Windows-AMD64-Release问服务端。具体使用流程...
webrtc 视频数据流流程图,整理了视频数据流发送及接受流程.
通过WebRTC实时通讯技术,配合后端java websocket实现多人视频。局域网内视频没问题,公网需要自行穿透NAT,项目整体为SpringBoot 外置Tomcat 启动
webrtc-streamer 是一个使用简单机制通过 WebRTC 流式传输视频捕获设备和 RTSP 源的项目,它内置了一个小型的 HTTP server 来对 WebRTC需要的相关接口提供支持。相对于ffmpeg+flv.js的方案,延迟降低到了0.4秒左右,...
h5实现播放RTSP视频流WebRTC.docx
webrtc实现h5播放rtsp流
基于webrtc开发的多人视频会议,信令服务器使用 java websocket, springboot架构。访问地址 https://IP/mcu.html
Webrtc源码开发笔记1 —Webrtc视频编码打包流程模块图解 梳理webrtc从transceiver到transport流程,从而宏观上了解webrtc视频采集,编码,打包发送等相关流程与相关模块的对应关系,为开发和快速定位问题提供参考。
RTCMultiConnection 流媒体后台服务器 采用Node.js。可以支持1对1,1对多的音视频聊天服务。可以作为研发参考。
一种实现WebRTC和IMS之间视频会议的解决方案,宋洋,双锴,WebRTC技术是一项在浏览器内部进行实时视频和音频通信的技术。通过该项技术,开发Web的实时通信技术只需要调用简单的JavaScr&
这是基于asp.net开发的SuperWebSocket和WebRtc结合的Web网页版视频聊天实例,分享出来供大家学习。
webrtc基于webrtc-streamer推流实现直播,前端基于vue3实现,下载可用