P2P直播SDK如何缩短视频从开始连接到开始显示图像的时间
播放端连接采集端播放视频流时,如何让视频图像快点出现呢?
以下几点可以优化的地方:
一. 在采集端:
1. 缓存最近的关键帧:
VideoStart()函数(C语言为pgLiveMultiCaptureVideoStart())函数的 sParam 参数增加 (SendCache){1} 选项(会导致使用的内存稍微增加)。
2. 播放端连接时触发编码器立即输出关键帧:
视频帧外部采集输入的回调接口中,VideoInCtrl()回调函数接收到PG_DEV_VIDEO_IN_CTRL_PULL_KEY_FRAME 控制指令时,强制编码器立即输出一个关键帧。
void VideoInCtrl(int iDevID, unsigned int uCtrl, unsigned int uParam)
{
if (uCtrl == PG_DEV_VIDEO_IN_CTRL_PULL_KEY_FRAME) {
// 强制编码器立即输出一个关键帧 …
}
}
3. 缩短关键帧的间隔:
建议编码器输出的关键帧间隔为 4 秒以下。
二. 在播放端:
1. 缩短P2P穿透的尝试时间:
Initialize() 初始化函数(C语言为pgLiveMultiRenderInitialize()函数)的 iP2PTryTime 参数设置为 1(不能为0)
2. 缩短解码器的延时时间:
Initialize() 初始化函数(C语言为pgLiveMultiRenderInitialize()函数)的 sInitParam 参数,增加(VideoSoftDecode ){1} 选项