分两种情况, 实时流和录播流.
1. 推实时流
需要确保调度精确, 一般系统都有10ms的调度时延, 而我们的音视频帧率也挺高, 如果40fps, 那么需要25ms推送一帧, 加上10ms的调度误差, 再加上网络时延, 可能会导致更大的误差. 如何精准推送? 需要我们能尽量控制发送误差在1-5ms内. 试过poll/epoll, 精度确实可以达到1ms, 但是随着系统负荷增大, 精度也越来越大(范围1-15ms);
如果精确到1ms, 欢迎高人指点.
2. 推送录播流
由于录播流不像实时流那样需要等待, 而是可以随时读取, 所以控制权在推流端, 此时推流端可以确保播放端有一定(1-5s即可, 看播放端缓存大小, 1s即可,如果播放端不支持缓存那也无法)的缓存. 这样就不会因为推流端的调度不精准和网络时延导致的播放断续问题。
网友评论