WebRTC开发者社区为开发者提供最新最全的WebRTC资料
目录
  • 首页
  • WebRTC概念与基础
  • WebRTC项目与应用
  • WebRTC教程资料
  • WebRTC开发资源
  • WebRTC源码分析
  • WebRTC服务端开发
  • WebRTC网络与通信
  • WebRTC编码与解码
  • WebRTC问题与缺陷
  • WebRTC-Androd端开发
  • WebRTC-RFC文档

WebRtc连接状态变化

2019-12-05 11:14:44
 WebRtc连接状态变化
  1. ICE收集完成的条件
  2. 连接状态的变化
ComputeState:一旦ICE收集完成,至少应该存在一个可用的连接
1.如果had_connection_ 为false,则状态为STATE_INIT
2.检查所有的Connection,看是否有active的
3.该函数应该是在ICE收集完成时才会调用
4.如果检查所有Connection,没有active的连接,则返回STATE_FAILED
 

More...

WebRTC被发现泄漏本地IP地址

2019-12-05 11:13:33

这里写图片描述

 

More...

使用WebRTC广播IP摄像头视频流

2019-12-05 11:12:53

技术上来说,从IP摄像头实现在线广播并不需要WebRTC。IP摄像头本身就是服务器,可以自行连接路由器并传输视频内容。既然这样,我们为什么还需要WebRTC?

有两个原因:
1.随着观看以太网广播的观众增加,他们会逐步感受到带宽的不足,然后是摄像头资源,如果观众持续增加的话;
2.如上面提到的,一个IP摄像头就是一个服务器。但是它使用什么协议传输视频到浏览器或者移动设备?一个使用HTTP的摄像头很有可能基于HTTP传输视频帧或者JPEG图像。但是,HTTP流并不完全适用于实时视频传输。对于请求式视频,它确实工作良好,但是仅限于互动性和延迟要求不高的场合。确实,如果你在线观看一部电影,延迟5-10秒确实不太重要。好吧,除非你在和其他人同时观看:“oh,不,杰克谋杀了她!”爱丽丝给鲍勃发送信息10s之后,鲍勃才看到了这一幕悲剧。

另外一个选项是RTSP/RTP加上H.264。但是这种情况下浏览器需要安装一个视频播放插件,例如VLC或者QuickTime。这类插件将会接受并播放视频,就像播放器一样。但我们需要真实的基于浏览器的流,不需要任何附加的工具。

好,现在让我们“sniff”我们的IP摄像头,学习一下它到底向浏览器发送了什么。我们采用D-Link DCS 7010L来做测试:

 

More...

WebRTC 的三个“陷阱”

2019-12-05 11:12:07
 WebRTC是一个可以使我们在浏览器或移动App中直接进行音频/视频交流的技术,例如Google Hangouts、Facebook Messenger 和Discord。另外,它还可以进行P2P文件共享,处理大量音频数据,实现在线视频会议等等,但是当我们到达WebRTC的底层时,事情变得复杂起来。

关于我们WebRTC APP的故事起始于2018年2月份,形象地来说,一个叫 Redacted 的人在开会时想要我们实现一个具有 redacted 特性的 redacted APP。你可以将它理解为实时视频交流。

 

陷阱1:不理解WebRTC技术。

起初,我们对WebRTC没有任何实际经验。尽管2011年就发布了WebRTC,但是它的想法包含了许多已经建立的领域,例如VoIP交流,网站开发, 视频流等等。

但是WebRTC是一种新技术,它在浏览器中的实现经常变化,你所了解的WebRTC信息经常有可能是过时或者错误的。

因此我的建议是在你开发App之前充分了解WebRTC:
1.你应该了解关于你必须用来开发WebRTC App的服务器的一切.
2.学习建立点对点连接的发信过程。
3.明确媒体是如何处理传输的。
4.有必要时咨询专家。

More...

webRTC base模块MessageQueue消息队列的实现

2019-12-05 11:09:22

MessgeQueue

MessageQueueManager

消息队列MessageQueue的管理器
全局单例类

MessageQueueManager* MessageQueueManager::instance_ = NULL; // 全局变量 确保Manager是单例
MessageQueueManager* MessageQueueManager::Instance() {
  // C++ Instance常见套路
  if (!instance_)
    instance_ = new MessageQueueManager;
  return instance_;
}
 

More...

WebRtc: PeerConnection demo测试

2019-12-05 11:08:36

系统: ubuntu14.04 工程: webrtc-linux 网络:本机localhost

webrtc工程编译过后会在out/linux目录下生成一些测试用可执行程序
其中有 peerconnection_server 和 peerconnection_client可以用于测试连接

  1. 后台执行server
    ./peerconection_server &
    可以看到执行后提示正在监听8888端口
  2. 后台执行第一个client
    ./peerconnection_client &
    会弹出一个ui对话框 按enter键确认
  3. 执行第二个client
    ./peerconnection_client
    执行后可以看到ui框中会出现可点击的主机名 双击
    注意: 由于在ubuntu下测试 视频对话框并不会跳出显示在屏幕下,而是运行但不显示在屏幕上,注意在图标栏中寻找一下视频对话框

我的视频对话框图像是红色的,不正常 有待解决问题.

 

More...

webRTC入门: 打包webRTC库应用到自己的工程中

2019-12-05 11:07:38

打包webRTC库

在linux下打包webRTC库链接到自己的工程中

webRTC Linux SDK编译静态库

webRTC指定target_os为Linux后,根据gn的编译规则 并不像android那样会生成动态库so。想要使用webRTC库 需要自己提取静态库

静态库分布

打开webRTC SDK目录
cd out/linux
编译目录下会生成例如peerconection_client这样的测试用例 同时还有许多的webRTC模块静态库。
对 webRTC并不像常见的开源工程那样生成一个整体的库 而是根据模块来生成,类似ffmpeg的做法
这样一来 想要避免在cmake中手动链接如此多的静态库 就需要我们自己链接生成统一的libwebrtc.a

 

More...

WebRTC SDP协议

2019-12-05 11:06:41
SDP
SDP Session Description Protocol 会话描述协议
SDP协议用来在SIP终端之间交换媒体信息,WebRTC标准中同样选用了
SDP协议来交换媒体信息.

WebRTC Peer之间交换SDP包括的信息有transport protocols,ports,codecs等等
相关的IETF文档:
https://tools.ietf.org/pdf/draft-nandakumar-rtcweb-sdp-08.pdf

语法

SDP由多部分信息组成 每部分信息占一行.
<type>=<value>

v= 表示版本
o= 表明会话源 ssrc
s= 表明会话名
a= 表明会话属性
m= 表明媒体协议信息
 

More...

webRTC PeerConnection连接过程

2019-12-05 11:05:08
 PeerConnection
PeerConnection是webRTC的顶层接口,代表一个通话对象.
要建立点对点的音视频通话需要的双方各建立一个PeerConnection并交互信令完成对接.

signal信令

webRTC的信令指的是 SDP和Candidate
    1. SDP是session description,描述local的多媒体情况
    2. Candidate是候选,包含了p2p的信息
webRTC文档中描述的需要用户自定义实现的信令交互过程其实就是两个
PeerConnection交换sdp和candidate的过程. 最简单的信令可以直接通过socket来实现,webRTC的官方demo
PeerConnection client就是将sdp和candidate json序列化后通过socket发生出去的.

More...

WebRTC 连接Linux端和Android端

2019-12-05 11:02:48
WebRTC的通常连接流程:
http://blog.csdn.net/qq_21358401/article/details/79190561
WebRTC SDP协议:
http://blog.csdn.net/qq_21358401/article/details/79341031

连接不同平台的PeerConnection的流程和通常流程没有什么区别.
但很容易遇到这些一个问题:
1. 不支持的音视频编解码器
   WebRTC报错: failed to set video send codecs
   意为不支持收到的SDP里声明的某个视频编码
   我在连接linux和android端时 就出现了android端不支持97和98(编码协议的RTP序号)
   所以需要在设置local或remote的SDP前 修改sdp 去掉不支持的codec
2. 不支持的传输协议
   这个错误常见于和浏览器的peer连接
   浏览器通常不支持 UDP/TLS 这两个传输选项(firefox上发现问题)
   解决方法同样是修改SDP 去除不支持的传输协议
 

More...

last
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
next
  • 分类目录

    • WebRTC概念与基础 (225)
    • WebRTC项目与应用 (33)
    • WebRTC教程资料 (38)
    • WebRTC开发资源 (13)
    • WebRTC源码分析 (12)
    • WebRTC服务端开发 (23)
    • WebRTC网络与通信 (26)
    • WebRTC编码与解码 (15)
    • WebRTC问题与缺陷 (2)
    • WebRTC-Androd端开发 (2)
    • WebRTC-RFC文档 (1)
  • 最新文章

    • 音视频相关的书籍,多媒体技术
    • SFU级联解决方案——Jitsi
    • SFU级联解决方案——Licode
    • Janus源码分析(6)——Streaming分析
    • janus Streaming插件推流指南
    • 流媒体服务器 
    • WebRTC+libwebsockets+Janus的秒开实践
    • 基于WebRTC的直播CDN
    • 不需要SFU实现WebRTC联播实践  
    • webrtc 开启Simulcast功能
    • Migrating your native/mobile application to Unified Plan/WebRTC 1.0 API
    • WebRTC源码分析rfc4588 RTP重传有效载荷格式
    • WebRTC网关服务器搭建:开源技术 vs 自行研发
    • WebRTC网关服务器搭建:开源技术 vs 自行研发
    • 自研WebRTC网关服务器架构的实践之路
    • WEBRTC三种类型(Mesh、MCU 和 SFU)的多方通信架构  
    • janus的videoroom插件
    • WebRTC+libwebsockets+Janus的秒开实践
    • Janus源码分析(7)——videoroom分析
    • Janus源码分析(5)——echotest分析
    • Janus源码分析(4)——信令交互过程
    • WebRTC+libwebsockets+Janus的秒开实践
    • 前向纠错码(FEC)的RTP荷载格式
    • WebRTC 开发实践:从一对一通话到多人会议
    • Distord如何使用WebRTC处理250万用户同时进行的音频交流
    • 了不起的WebRTC:生态日趋完善,或将实时音视频技术白菜化
    • 基于WebRTC技术的多人音视频解决方案
    • 谁是最好的WebRTC SFU?
    • WebRTC媒体服务器
    • 使用Janus作为对讲服务器的后台框架和业务流程
  • 链接

    • WebRTC官网
    • xSky 实验室
    • 树莓派技术圈
    • 声网 Agora
    • WebRTC中文网
    • web性能权威指南
    • WebRTC官网
    • webrtc在线源码
    • webrtc在线源码
    • webrtc
    • webrtc示例
    • LiveVideoStack
    • 雷霄骅(leixiaohua1020)的专栏
  • 开源项目


Powered By xblog Copyright 0xsky.com All Rights Reserved.

Copyright WebRTC.ren All Rights Reserved.