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

深入理解WebRTC

2019-11-26 11:17:21

Web Real-Time Communication(Web实时通信,WebRTC)由一组标准、协议和JavaScript API组成,用于实现浏览器之间(端到端)的音频、视频及数据共享。

WebRTC使得实时通信变成一种标准功能,任何Web应用都无需借助第三方插件和专有软件,而是通过简单地JavaScript API即可完成。

在WebRTC中,有三个主要的知识点,理解了这三个知识点,也就理解了WebRTC的底层实现原理。这三个知识点分别是:

  • MediaStream:获取音频和视频流
  • RTCPeerConnection:音频和视频数据通信
  • RTCDataChannel:任意应用数据通信
 

More...

WebRTC:数据传输相关协议简介  

2019-11-26 11:12:20

对网络协议来说,需要做的通常就两件事情:1、建立连接,2、传输数据,WebRTC也不例外。

假设WebRTC应用的两端已经建立了连接,那么,剩下就是如何传输数据的问题了。

WebRTC同时支持传输音视频数据、自定义应用数据。这其中,涉及多种协议,包括UDP、RTP/SRTP、RTCP/SRTCP、DTLS、SCTP。

这些协议名字比较相似,很容易让人混淆,简单总结下:

  1. 传输音视频数据相关协议:UDP、DTLS、RTP/SRTCP;
  2. 传输自定义应用数据相关协议:UDP、DTLS、SCTP;

下面就简单介绍下,这些协议是做什么的,有什么区别,存在什么联系。

 

More...

WebRTC:一个视频聊天的简单例子  

2019-11-26 11:11:51

相关API简介

在前面的章节中,已经对WebRTC相关的重要知识点进行了介绍,包括涉及的网络协议、会话描述协议、如何进行网络穿透等,剩下的就是WebRTC的API了。

WebRTC通信相关的API非常多,主要完成了如下功能:

  1. 信令交换
  2. 通信候选地址交换
  3. 音视频采集
  4. 音视频发送、接收

相关API太多,为避免篇幅过长,文中部分采用了伪代码进行讲解。详细代码参考文章末尾,也可以在笔者的Github上找到,有问题欢迎留言交流。

信令交换

信令交换是WebRTC通信中的关键环节,交换的信息包括编解码器、网络协议、候选地址等。对于如何进行信令交换,WebRTC并没有明确说明,而是交给应用自己来决定,比如可以采用WebSocket。

发送方伪代码如下:

 

More...

WebRTC:会话描述协议SDP

2019-11-26 11:10:18

什么是SDP

SDP(Session Description Protocol)是一种通用的会话描述协议,主要用来描述多媒体会话,用途包括会话声明、会话邀请、会话初始化等。

WebRTC主要在连接建立阶段用到SDP,连接双方通过信令服务交换会话信息,包括音视频编解码器(codec)、主机候选地址、网络传输协议等。

下面先简单介绍下SDP的格式、常用属性,然后通过WebRTC连接建立过程生成的SDP实例进行进一步讲解。

协议格式说明

SDP的格式非常简单,由多个行组成,每个行都是如下格式。

<type>=<value>

其中:

  • <type>:大小写敏感的一个字符,代表特定的属性,比如v代表版本;
  • <value>:结构化文本,格式与属性类型有关,UTF8编码;
  • =两边不允许存在空格;
  • =*表示是可选的;
 

More...

WebRTC -- 音视频流传输带宽控制

2019-11-26 11:09:11

WebRTC没有提供这方面的接口,我们可以通过修改sdp信息来实现音视频流的传输带宽控制,sdp格式参考之前的文章:《WebRTC – SDP格式解析》

实现原理比较简单,就是分别在sdp的audio和video媒体部分加入b=AS:信息,可以参考下面的代码实现:

 

More...

WebRTC -- 端到端连接过程分析

2019-11-26 11:08:13

在这里插入图片描述

 

More...

WebRTC -- Windows平台编译

2019-11-26 11:06:27

写作本文时使用的webrtc版本为:branch heads/67

一、 准备工作

1.0 请确保可以访问国外网站

1.1 系统语言切换到英文

系统Windows 7/10都可以,在“控制面板”–>“区域和语言”–>“管理”–>"更改系统区域设置"中切换到“英语(美国)”,然后重启系统。

1.2 卸载部分软件

无

1.3 安装VS2017

Visual Studio 2017现在只提供在线安装包,为了加快在线安装的速度,可以只选择如下几个安装项:

  • Desktop development with C++
  • MFC and ATL support

1.4 安装Windows 10 SDK

 

More...

WebRTC-线程模型(1)

2019-11-26 11:06:00

在介绍WebRTC的线程模型之前,先介绍webrtc线程模型中用到的几个简单、常用的模块或函数。webrtc是一个代码宝库,且它本身跨平台(windows,linux,ios,android),不管是哪个平台上面开发,都可以从中学习到很多有用的东西。

一、 设置线程名

platform_thread.cc

void SetCurrentThreadName(const char* name) {
#if defined(WEBRTC_WIN)
  struct {
    DWORD dwType;
    LPCSTR szName;
    DWORD dwThreadID;
    DWORD dwFlags;
  } threadname_info = {0x1000, name, static_cast<DWORD>(-1), 0};

  __try {
    ::RaiseException(0x406D1388, 0, sizeof(threadname_info) / sizeof(DWORD),
                     reinterpret_cast<ULONG_PTR*>(&threadname_info));
  } __except (EXCEPTION_EXECUTE_HANDLER) {
  }
#elif defined(WEBRTC_LINUX) || defined(WEBRTC_ANDROID)
  prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(name));
#elif defined(WEBRTC_MAC) || defined(WEBRTC_IOS)
  pthread_setname_np(name);
#endif
}
 

More...

WebRTC-线程模型(2)

2019-11-26 11:04:50

一、基本原理

WebRTC的线程功能由Thread类提供。Thread继承于消息队列MessageQueue,这样WebRTC中的每个线程都有了自己的消息循环,外部可以向该线程的消息循环Post消息Message,然后该线程轮询从消息循环Get到消息后处理消息。

UML如下:

 

More...

WebRTC-命令行参数解析

2019-11-26 11:03:30

一、 功能介绍

webrtc中命令行参数解析功能由rtc_base/flags.h中的Flag类和FlagList类提供。使用起来比较简单,支持参数中含有空格等。可以看成google开源的gflags的轻量版.
支持的命令行语法为:

The following syntax for flags is accepted (both '-' and '--' are ok):

   --flag        (bool flags only)
   --noflag      (bool flags only)
   --flag=value  (non-bool flags only, no spaces around '=')
   --flag value  (non-bool flags only)
 

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.