前些时间,我在知识星球上创建了一个音视频技术社群:关键帧的音视频开发圈,在这里群友们会一起做一些打卡任务。比如:周期性地整理音视频相关的面试题,汇集一份音视频面试题集锦,你可以看看这个合集:音视频面试题集锦。再比如:循序渐进地归纳总结音视频技术知识,绘制一幅音视频知识图谱,你可以看看这个合集:音视频知识图谱。
下面是 2022.12 月知识图谱新增的内容节选:
1)图谱路径:视频生产及编辑/视频质量/指标优化
编码质量优化:
- 选择合适的视频码率
- 经验公式:Bitrate = width * height * frameRate * factor,factor = 0.15
- 划分场景(外景拍摄/人像拍摄 低运动/中等运动/高运动)测试手机的编码质量来选择指定分辨率、帧率时对应的码率甜点
- 选择合适的码率分配模式
- CBR:Constant Bitrate,固定比特率。编码内容的质量不稳定,容易产生马赛克。算法优先考虑码率(带宽),适合在流式播放中应用。
- VBR:Variable Bitrate,动态比特率。保证了质量,又兼顾带宽限制。适合图像内容变化幅度较大的情况,适合的应用场景是媒体存储,但由于码率不均衡不适合网络传输。
- ABR:Average Bitrate,平均比特率,是 VBR 的一种插值参数。在 CBR 和 VBR 两者之间的一种权衡,即设定一段时间的平均码率,在此时间内,对简单、静态的图像分配低于平均码率的码率,对于复杂的、大量运动的图像分配高于平均码率的码流。码率分配比较均衡,比较适合网络传输。
- CRF:Constant Rate Factor,恒定码率系数。把某一个视觉质量作为输出目标。通过降低那些耗费码率但是又难以用肉眼察觉的帧(高速运动或者纹理丰富)的质量提升那些静态帧的码率来达到此目的。
- 设置 B 帧优化码率
- P 帧大小相当于 I 帧大小的 1/10 ~ 1/20。B 帧是双向预测图像帧,B 帧大小约是 I 帧大小的 1/50。
- 设置了 B 帧了,有更大的操作空间来调高码率,实现提升清晰度的目标。
- 可能带来一些编码延迟。
- 调整 GOP 长度优化码率
- 由于 I 帧较大,当设置 GOP 长度越长时,I 帧就较少,占用码率就越少,这样我们也可以获得更多的空间来相应地调大码率提升清晰度。
- GOP 太长在直播场景会增大延迟。
- 选择合适的 Profile
- Baseline Profile:基本画质。支持 I/P 帧,只支持无交错(Progressive)和 CAVLC。
- Extended Profile:进阶画质。支持 I/P/B/SP/SI 帧,只支持无交错(Progressive)和 CAVLC。
- Main Profile:主流画质。提供 I/P/B 帧,支持无交错(Progressive)和交错(Interlaced),也支持 CAVLC 和 CABAC。
- High Profile:高级画质。在 Main Profile 的基础上增加了 8x8 内部预测、自定义量化、无损视频编码和更多的 YUV 格式。
- Baseline、Extended、Main 都是针对 8 位样本数据、YUV 4:2:0 格式的视频序列。
- 在相同配置情况下,High Profile 可以比 Main Profile 降低 10% 的码率。
- Baseline Profile 多应用于实时通信领域,Main Profile、High Profile 多应用于流媒体领域。
- 尽量使用 HEVC 编码
- HEVC 对比 H.264 可降低 30% 以上码率,能够为我们创造更多的空间来提高码率优化画面。
- 合理使用软编和硬编优化编码
- 软编码相对于硬件编码画质更好,设备适配更好,但性能较差。
- 对于性能要求不高的场景更适合软件编码,例如短视频录制;性能要求较高的场景则选择硬件编码。
画面质量优化:
- 锐化
- 图像锐化是补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,使图像变得清晰。
- USM(Unsharpen Mask)锐化
- 拉普拉斯(Laplace)锐化
- 高通滤波
- 降噪
- 均值滤波(Mean Filter)
- 高斯滤波(Gauss Filter)
- 中值滤波(Medium Filter)
- 双边滤波(Bilateral Filter)
- 导向滤波(Guided Filter)
- 防抖
- 传统电子防抖
- 光学防抖
- 陀螺仪电子防抖
- 光学 电子混合防抖
- 微云台防抖
- 传感器防抖
- 超分
- 指通过机器学习地方式重建图像,达成提升图像分辨率的效果。
- 目前比较成熟的超分技术是 Real-ESRGAN,基于 BasicSR,采用 ESRGAN 算法,利用机器学习的优势对图片和视频进行去模糊、Resize、降噪、锐化等处理,重建图片,实现对图片的超分辨率处理。
- 对焦优化
- 自动对焦
- 人像对焦
- 场景切换对焦
- 颜色优化
- 色彩调整
- HDR 兼容
- 模糊检测
2)图谱路径:播放器/播放成功率/指标优化
- 网络传输问题优化
- HTTPDNS
- 网络重连
- 视频格式问题优化
- 兼容更多的 Demuxer
- 视频格式统一
- 视频编码问题优化
- 兼容更多的编码格式
- 编码格式收敛
- 解码方式兜底
- 视频同步问题优化
- 音视频交错处理
- 视频渲染问题优化
- 视频色差问题优化
- 视频画面角度兼容
- 视频画面比例兼容
3)图谱路径:播放器/播放秒开/指标优化
- 业务侧结合优化
- 客户端业务侧提前获取流地址
- 使用 URL 替代 VID 方式
- 上下滑短视频场景提前加载播放器
- 封面图清晰度降级
- DNS 解析
- 优化 DNS 解析过程
- 提升 HTTP DNS 的有效率
- TCP 连接
- 优化 TCP 建连耗时
- 通过 TCP Fast Open 优化 TCP 建连时长
- 通过 TCP 预连接和连接复用优化建连时长
- 避免首帧网络带宽争抢
- HTTP 响应
- 优化 HTTP 响应耗时
- 提升 CDN 边缘节点命中率
- 优化短视频第一次 Get 请求
- 音视频探测
- 优化音视频流探测耗时
- 短视频前置 moov box
- 提前创建解码器
- 音视频解码
- 提前创建解码器
- 优化解码器刷新操作
- 缓冲和起播策略
- 优化 Buffer 填充耗时
- 流媒体服务器侧 GOP 缓存
- 服务端快速下发策略
- 提升 HLS 的播放秒开
- 优化 IJKPlayer 在设置 Surface 时重置解码器的等待时长
- 视频预加载
- 视频本地缓存
- 渲染
- 播放器预渲染
- 预渲染首帧代替封面图
4)图谱路径:播放器/播放卡顿/指标优化
- 码率调控
- 码率适配
- H.265 降码率
- 软编降码率
- 播放器策略
- 使用音频缓冲区水位线来驱动起播
- 动态缓冲策略
- 低缓冲时低倍速播放
- 短视频缓存和预加载
- 设置卡顿超时
- 推流端策略
- 推流端支持退后台继续推流
- CDN 策略
- 运营商效应和百秒卡顿时长的关系
- CDN 的吐数据策略
- 推流断开后的 CDN 状态优化
5)图谱路径:播放器/直播延时/指标优化
- 播放策略
- 高缓冲高倍速播放
- 丢帧
- CDN 策略
- CDN 吐数据控制
- 传输协议优化
- 基于 WebRTC 实现直播推拉流
下面是 2022.12 月的知识图谱新增内容快照(图片被平台压缩不够清晰,可以加文章后面微信索要清晰原图):
2022.12 知识图谱新增内容