楼主: kaixin202212
439 0

[作业] [完结15章]音视频高手突围课--WebRTC企业级高性能后台服务实战 [推广有奖]

  • 0关注
  • 1粉丝

讲师

74%

还不是VIP/贵宾

-

威望
0
论坛币
381 个
通用积分
37.1995
学术水平
0 点
热心指数
3 点
信用等级
0 点
经验
9108 点
帖子
272
精华
0
在线时间
366 小时
注册时间
2022-11-10
最后登录
2024-9-19

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
学习地址1:https://pan.baidu.com/s/1F4tAlst6Rix-AVI1EmiEAw 提取码:lkso
学习地址2:https://share.weiyun.com/DF5SwWs3 密码:u2h5nv

一、WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音通话或视频聊天的技术,是谷歌 2010 年以 6820 万美元收购 Global IP Solutions 公司而获得的一项技术。

WebRTC 提供了实时音视频的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台:windows,linux,mac,android。

虽然 WebRTC 的目标是实现跨平台的 Web 端实时音视频通讯,但因为核心层代码的 Native、高品质和内聚性,开发者很容易进行除 Web 平台外的移殖和应用。很长一段时间内 WebRTC 是业界能免费得到的唯一高品质实时音视频通讯技术。

二、WebRTC 功能模块
WebRTC 实现了基于网页的视频会议,标准是 WHATWG 协议,目的是通过浏览器提供简单的 javascript 就可以达到实时通讯(Real-Time Communications (RTC))能力。

①、视频采集—video_capture
源代码在 webrtc\modules\video_capture\main 目录下, 包含接口和各个平台的源代码。
在 windows 平台上,WebRTC 采用的是 dshow 技术,来实现枚举视频的设备信息和视频数据的采集,这意味着可以支持大多数的视频采集设备;对那些需要单独驱动程序的视频采集卡(比如海康高清卡)就无能为力了。
视频采集支持多种媒体类型,比如 I420、YUY2、RGB、UYUY 等,并可以进行帧大小和帧率控制。

②、视频编解码—video_coding
源代码在 webrtc\modules\video_coding 目录下。
WebRTC 采用 I420/VP8 编解码技术。VP8 是 google 收购 ON2 后的开源实现,并且也用在 WebM 项目中。VP8 能以更少的数据提供更高质量的视频,特别适合视频会议这样的需求。

③、视频加密—video_engine_encryption
视频加密是 WebRTC 的 video_engine 一部分,相当于视频应用层面的功能,给点对点的视频双方提供了数据上的安全保证,可以防止在 Web 上视频数据的泄漏。
视频加密在发送端和接收端进行加解密视频数据,密钥由视频双方协商,代价是会影响视频数据处理的性能;也可以不使用视频加密功能,这样在性能上会好些。

④、视频媒体文件—media_file
源代码在 webrtc\modules\media_file 目录下。
该功能是可以用本地文件作为视频源,有点类似虚拟摄像头的功能;支持的格式有 Avi,另外 WebRTC 还可以录制音视频到本地文件,比较实用的功能。

⑤、视频图像处理—video_processing
源代码在 webrtc\modules\video_processing 目录下。
视频图像处理针对每一帧的图像进行处理,包括明暗度检测、颜色增强、降噪处理等功能,用来提升视频质量。

⑥、视频显示—video_render
源代码在 webrtc\modules\video_render 目录下。
在 windows 平台,WebRTC 采用 direct3d9 和 directdraw 的方式来显示视频,只能这样,必须这样。

⑦、网络传输与流控
对于网络视频来讲,数据的传输与控制是核心价值。WebRTC 采用的是成熟的 RTP/RTCP 技术。

三、WebRTC的工作原理
WebRTC的工作方式的理解需要涉及多个关键组件。这些组件相互协作,形成了一个强大的,允许浏览器和应用程序进行实时通信的框架。让我们详细探讨一下每个部分:
2.1 信令(Signaling)
尽管信令并不直接包含在WebRTC的技术规范中,但它在实现实时通信的过程中起到了核心作用。信令是用于在WebRTC客户端之间协调、建立通信的过程,包括了会话控制(发起和结束)、网络数据(IP和端口)和媒体数据(编解码器、带宽和媒体类型等SDP信息)等元数据的交换。
WebRTC并没有规定特定的信令协议或方法,这给了开发者很大的灵活性,他们可以选择最适合他们需求的协议,如WebSocket、SIP等。然而,需要注意的是,信令过程需要一个服务器来中继消息,而这个服务器是开发者需要自己提供的。

2.2 网络地址转换穿越(NAT Traversal)
WebRTC设计的初衷就是要让设备能够相互通信,不论这些设备在何处、是否在NAT防火墙之后。为了实现这一目标,WebRTC引入了网络地址转换穿越(NAT Traversal)的技术。这一过程主要依赖于两种协议,即会话穿越工具(STUN)和中继NAT穿越工具(TURN)。
STUN服务器的作用是帮助设备发现自己的公网IP地址和端口。然而,STUN不能在所有情况下都工作,特别是当NAT防火墙的策略比较严格时。这时,TURN服务器就派上用场了。TURN服务器实际上扮演了媒体流的中继角色,将数据从发送端传到接收端。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:WEB 企业级 高性能 Processing Javascript

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加JingGuanBbs
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-9-19 20:54