问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

流媒体传输技术:降低延时与保证质量的全方位指南

创作时间:
作者:
@小白创作中心

流媒体传输技术:降低延时与保证质量的全方位指南

引用
CSDN
1.
https://blog.csdn.net/Alon1787/article/details/143572213

流媒体传输技术在现代通信中扮演着重要角色,无论是视频会议、在线直播还是远程监控,都离不开高效的流媒体传输。本文从实际工作经验出发,总结了降低延时和保证质量的关键技术要点,为相关从业者提供有价值的参考。

降低延时

流媒体传输涉及多个环节,每个环节都可能产生延时。因此,降低延时需要从多个方面综合考虑,同时需要注意避免影响画质。

采集方面

  • 本地编码时,建议选择驱动摄像头并输出常用于编码的YUV420P格式。
  • 尽量减少或避免画面优化处理。如果必须进行优化,建议采用多线程处理。
  • 对于一些自动编码输出RTP/RTSP流的采集设备(如海康威视摄像头),如果不需要额外处理且追求低延时,可以直接使用其输出的编码码流,尽管这可能意味着更高的设备成本。

编码方面

  • 优先选择硬件编码。如果是软件编码,建议设置为多线程编码。
  • 设置合适的编码参数,例如合理的码率、合适的Profile、加快编码速度、减少或避免使用B帧、设置合适的量化参数(QP值)等。
  • 减少IDR帧和I帧间隔,确保IDR帧前包含SPS和PPS信息,以加快后续解析和解码速度。
  • 对于x264编码器,可以将tune设置为zerolatency以实现低延时无缓存策略。

图像处理

  • 选择低延时且性能良好的处理方法。
  • 利用GPU加速图像处理,例如使用GPU进行图像缩放、亮度调节、图像拼接等操作。

传输方面

  • 选择低延时的网络协议,如RTP/RTSP/SRT/RTMP/WebRTC,避免使用HTTP-FLV、HLS、DASH等高延时协议。
  • 优先选择基于UDP的协议,如果必须使用TCP,确保配置正确。
  • 优化传输路径,优先使用有线连接。
  • 部署CDN以降低传输延迟,对于复杂网络环境需要合理配置交换机参数。
  • 优化网络环境,确保相关端口开放。

解码方面

  • 优先选择硬件解码。如果是软件解码,建议采用多线程。
  • 设置合适的解码参数。

渲染方面

  • 使用高性能渲染框架,如OpenGL、Linux的DRM/x11/wayland或Windows的Direct3D。
  • 将YUV到RGB的转换放在OpenGL中处理,利用GPU计算后直接渲染。
  • 确保CPU和GPU性能不受限制。
  • 使用GStreamer时,建议添加sync=false参数以避免缓冲问题。

其他策略

  • 服务器端可以采用关键帧缓存策略,新用户接入时优先获取I帧。
  • 推流端可以缩短GOP间隔,以减少客户端等待关键帧的时间。
  • 拉流端可以调节probesize参数,优化解析接口延迟。
  • 在网络状况不佳时,可以采用主动丢帧或短暂倍速播放策略,但需要注意音频处理,避免变调。可以使用soundtouch或sonic等开源项目来实现变速不变调的效果。

提高质量

除了降低延迟,保证画质和音质也是流媒体传输的重要目标。可以参考WebRTC的机制:

  • NACK:通过丢包重传来解决丢包问题,但会增加延迟。
  • FEC:通过冗余数据来解决丢包问题,但会增加带宽占用。
  • JitterBuffer:通过队列缓冲来解决视频乱序和抖动问题。
  • NetEQ:类似JitterBuffer,专门用于解决音频的乱序和抖动问题。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号