来源:Global Video Tech Meetup 主讲人:Colin Biggin 内容整理:王珅 本次分享的主讲人为来自 Stage TEN 的 Colin Biggin,主讲人分三个部分介绍了相关内容,首先介绍了 WebRTC 的基本情况,包括目前 WebRTC 的业界使用情况以及 WebRTC 使用的视频编解码器、音频编解码器等等。然后主讲人进一步介绍了在两个 iOS 设备之间实现 WebRTC 连接的过程,最后通过一个实例展示了实时流媒体的有趣性。
目录
- WebRTC介绍
- iOS上的WebRTC
- 实时流媒体的乐趣
WebRTC介绍
主讲人首先介绍了他自己,Colin Biggin 从 2008 年开始作为 iOS 程序员一直在 AppStore 上开发应用程序,在 AppStore 上开发超过 70 个应用程序。2014 年入职 Stage TEN,与 YouTube、Google、TVO、Khan Academy 均有合作。
然后主讲人首先介绍第一部分:什么是 WebRTC?
一般而言,WebRTC 的定义是这样的:WebRTC 是一个免费的开放项目,通过简单的 API 为浏览器和移动应用程序提供实时通信(RTC)功能。WebRTC 组件已被优化以更好地服务于这一目的。
主讲人提出,实际上 WebRTC 是:
- 低延迟的媒体;
- 音频/视频编解码器;
- 网络协商。
而目前都有谁在使用 WebRTC 呢?
- 谷歌会议 Google Meet;
- Microsoft Teams;
- Facebook Messenger;
- Zoom(部分使用);
- Stage TEN。
而哪些浏览器支持 WebRTC 呢?
- 谷歌浏览器;
- 火狐浏览器;
- 苹果 Safari 浏览器;
- Microsoft Edge;
- Yandex 浏览器。
视频编解码器包括:
- VP8;
- VP9;
- H264;
- AV1(即将推出!)。
音频编解码器则包括:
- iSAC(强大的、带宽自适应的、宽频和超宽频的语音编解码器);
- iLBC(免费窄带语音编解码器);
- 以及一些其他的音频编解码器。
网络则包括了以下几个部分:
- 信令层;
- NAT (网络地址转换);
- STUN (Session Traversal Utilities for NAT);
- TURN(在 NAT 周围使用中继的穿越);
- ICE & Trickle ICE (互动连接建立)。
网络示意图
iOS上的WebRTC
在第二部分主讲人介绍了在两个 iOS 设备上实现通信的过程。现在我们有两个 iOS 设备,它们需要进行通信,因此在他们之间需要一个信号服务器,使得它们知道如何进行沟通和相互交换信息,也就是 Websockets。
Singalling
通常在中间有一个 WebRTC 服务器。最常见的两种是 Janice 和 gizzi。但这些服务器是你的 WebRTC 流要进入的地方,所以你的 RTP 数据包用于音频和视频。然后它在那里基本上都会被灵活地传送到各种客户端。
Intermediate WebRTC server
从黑色的 iOS 设备发送到白色的 iOS 设备的过程如下:
1st Offer
1st Answer
建立连接
现在大多数通信是双向的,因此你必须做相反的事情:
2nd offer/answer
2-way connected
实时流媒体的乐趣
最后主讲人演示了一个实例展示了实时流媒体的乐趣。
附上演讲视频:
http://mpvideo.qpic.cn/0bc3fqaa4aaa2maa6z2v6vrfalgdbywaadqa.f10002.mp4?dis_k=4e18b144fca88b8d72b8ae9207a5e877&dis_t=1653387393&vid=wxv_2351259177286991872&format_id=10002&support_redirect=0&mmversion=false