延时测试
大约 2 分钟
注意
此测试时间比较早,部分内容已失效;其中ultraLowDelay
配置项已经删除;合并写延时改成 0 时(默认为 0)即为最低延时模式; 大家测试延时时,可以使用 webrtc 播放来测试。
网络环境
localhost
操作系统
macOS
服务器
MediaServer
,启动参数-t 1
,单线程启动- 配置文件打开
ultraLowDelay
模式
推流器
obs
rtmp 推流到 localhost速率控制
:CBR
比特率
: 2500自定义缓存大小
: 100关键帧将
:2 秒CPU使用预设
:ultrafast
profile
:baseline
Tune
:zerolatency
分辨率
: 1280x720fps
: 30
播放器
- 内置 test_player
- localhost 播放 rtsp(udp、tcp 模式都测试)或 rtmp
测试方法
- 打开浏览器,打开在线秒表网页 https://miaobiao.51240.com/
- 设置 OBS,截取浏览器秒表部分图像,开始推流给 MediaServer
- 打开 test_player,播放对应的 rtsp 或 rtmp url
- 使用截图工具,定格画面,并对比网页与 test_player 播放器画面在线秒表时间差
测试结果
播放 rtmp,延时 200ms ~ 400ms
播放 rtsp(tcp 模式),延时 200ms ~ 400ms
播放 rtsp(udp 模式),延时 200ms ~ 400ms
测试结论
- 在单线程下,播放器和推流器在同一个线程,没有跨线程切换问题,延时稍微稳定并低点
- 开启 TCP_NODELAY 关闭 MSG_MORE 在本轮测试中对优化延时效果不大
- 多次截图平均下来有 300ms 左右的延时,最低 200ms 左右,最高有 400+ms
- 17 年我自己写推流器(很遗憾没保存下 exe 文件)的情况下,最低延时能达到 120ms 左右,目前根本达不到,怀疑 obs 推流延时还是较高
- 推流时建议关闭音频再测试,像 AAC 这种编码格式,编码延时能达到 100ms 以上
- 本次测试都是再 macOS 下测试的,理想情况下,服务器是 linux,推流器 windows,播放器渲染自己做的话延时可能还能更低
- 感兴趣的朋友们可以在 windows 下测试下,17 年我是在局域网中测试的,推流器、服务器、播放器都不是同一台主机,延时尚且低至 120ms,如果 localhost 应该能更低。