0、视频基础支持
- 帧率
- 码率
- 分辨率
- 像素格式
- 色彩空间
- I帧P帧B帧
- PTS与DTS
- YUV与RGB
- 位深与色域
- 封装格式:mp4、avi、flv、mkv等
- 编码格式:H.264(AVC)、VP8、H.265(HEVC)、VP9、AV1等
1、分辨率不是越高越好
较高的分辨率也需要较高的码率来支撑,如果分辨率选择 1280 x 720,但码率却指定为 200kbps,画面就会有大量的马赛克。
由于很多硬件编解码器只支持能被 16 整除的像素宽度,所以在使用厂商 SDK 实际编码出的分辨率并不一定完全按照参数自定,而是会自动进行 16 整除修正。
例如 640 x 360 的分辨率,在 SDK 内部有可能会适配为 640 x 368。
可以参考腾讯的文档:分辨率码率参照表
2、帧率不是越高越好
由于摄像头采集的画面是曝光阶段中所有现实物体的完整映射,所以并不是帧率越高,感官就越流畅,这一点跟游戏里的FPS是不一样的。
恰恰相反,帧率过高,会拉低每帧画面的画质,也会减少摄像机的曝光时间,效果可能会更差。
帧率(FPS),也就是每秒钟要编码多少帧画面。RTC场景下推荐设置为 15 FPS,这样既能保证画面足够流畅,又不会因为每秒帧数太多而拉低单幅画面的清晰度。
如果对流畅度要求比较高,可以设置为 20 FPS 或 25 FPS。但请不要设置 25 FPS 以上的数值,因为电影的常规帧率也只有 24 FPS。
3、码率不是越高越好
较高的码率也需要较高的分辨率来匹配,例如:对于 320 x 240 这样分辨率,1000kbps 的码率就很浪费了。
4.常见分辨率码率参照表
分辨率定义 | 宽高比 | 编码分辨率(16X) | 建议码率(VideoCall) | 建议码率(LIVE) |
---|---|---|---|---|
160x90 | 16:9 | 160x96 | 150kbps | 250kbps |
256x144 | 16:9 | 256x144 | 200kbps | 300kbps |
320x180 | 16:9 | 320x192 | 250kbps | 400kbps |
480x270 | 16:9 | 480x272 | 350kbps | 550kbps |
640x360 | 16:9 | 640x368 | 550kbps | 900kbps |
960x540 | 16:9 | 960x544 | 850kbps | 1300kbps |
1280x720 | 16:9 | 1280x720 | 1200kbps | 1800kbps |
1920x1080 | 16:9 | 1920x1088 | 2000kbps | 3000kbps |
2560×1440 | 16:9 | 2560×1440 | 4000kbps | 6000kps |
4096×2160 | 16:9 | 4096×2160 | 6000kbps | 9000kps |
4.1 常见清晰度
简称 | 全称 | 行业叫法 | 清晰度 | 分辨率 |
---|---|---|---|---|
FUHD | Full Ultra High Definition | 8K超高清 | 8K | 7680X4320 |
UHD | Ultra High Definition | 超高清(极清)、4K | 2160P | 3840X2160 |
QHD | Quad High Definition | 2K | 2K | 2560X1440 |
FHD | Full High Definition | 全高清(超清) | 1080P | 1920X1080 |
HD | High Definition | 高清 | 720P | 1280X720 |
SD | Standard Definition | 标清 | 540P | 960X540 |
5.H.264/AVC视频编解码技术
- H264系列十七 Slice(条带或片层)
- 解析H.264码流的宏块结构(上)
宏块结构(Macroblock)
- 十二、解析H.264码流的宏块结构(下):H.264帧内编码宏块的预测结构
- FFmpeg从入门到精通——进阶篇,SEI那些事儿
5.1 Android FFmpeg
5.1.1 Android FFmpeg MediaCodec硬编码
6.腾讯TRTC低延时的秘密
可参考: https://cloud.tencent.com/developer/article/1610391
-
ARQ
ARQ 即自动重传请求,TCP 的 ACK 机制是 ARQ 的一种方式。除了 ACK 以外,有一种机制为 NACK。不同于 ACK 是用来做接收确认,NACK 是没有收到数据包的确认.
-
FEC
FEC 即前向错误纠正,是通过增加网络层的校验数据包,增加数据冗余,抵抗传输过程中丢包带来的影响,遇到少量丢包时,接收方无须再通知发送方重传数据,可以直接在本地通过数据校验恢复原始数据,从而减少了延时。
不过 FEC 添加冗余数据包也会带来更多的网络带宽占用,因此 FEC 的这种工作方式是“以带宽换延时”。 -
QoS
利用好 ARQ 和 FEC 机制的基础,是需要有准确的带宽预测,也就是 QoS 中最关键的一环。
TRTC 依靠腾讯线上业务多年以来的技术积累,在 QoS 上有着众多专利技术,可以实现更为快速准确的带宽预测,通过及时地调整数据码率匹配网络带宽,可以减少客户端上的网络堆积,降低数据传输的耗时。
同时,通过准确的带宽预测,ARQ 和 FEC 策略能够更加有效地发挥作用,带来更好的传输效能。
7.谈H.323和SIP协议两者的区别
参考:https://developer.aliyun.com/article/127283
-
H.323
沿用的是传统的实现电话信令模式,比较成熟,H.323符合通信领域传统的设计思想,进行集中、层次控制,采用H.323协议便于与传统的电话网相连。
MCU可能会成为颈,特别是对于具有附加特性的大型会议;并且 323不支持信令的组播功能,其单功能限制了可扩展性,降低了可靠性。 -
SIP协议
借鉴了其它因特网的标准和协议的设计思想,在风格上遵循因特网一贯坚持的简练、开 放、兼容和可扩展等原则,比较简单。
-
webrtc VS SIP/H.323
-
FreeSWITCH
是一个开源的电话软交换平台,支持实时音视频通信及会议,支持SIP及WebRTC等多种通信协议。
FreeSWITCH中文站 -
PSTN
即Public Switched Telephone Network,中文全称是公共交换电话网,是一种用于全球语音通信的交换网络,这张网络大概拥有8亿用户,是当今世界最大的一张电信网络。
Q.E.D.