丢帧是VLC报出来的,如下:
我将帧率设置为15,而且是CIF分辨率,局域网传输,不应该有丢帧啊!?我XX
查了一整天,各种办法,最后我发现是海思SDK送出来PTS有问题:
pts=pstStream->pstPack[i].u64PTS*90/1000; //ms*90
干脆换成我自己计算PTS:
gVideoPath[ch].VencOutQue[wp].u64PTS=gVideoPath[ch].seq*gVencIn[ch].pts_tick;
这样就不丢帧了,延时也正常了。
但刚开始时,仍然要丢几帧。
不过仔细听起来,这种做法,声音总是一顿一顿的,不连续。
没有办法,还是得用SDK提供出来timestamp。而且,越播延迟越大,但第一路流1080P就不会,这TMD究竟是什么原因啊?
我在海思底层MPP上面配置了三个通道(1080P/720P/QVGA):
VpssGrp = 0; VpssChn = 3;
VencGrp = 0; VencChn = 0; //for HD recording
s32Ret = _COMM_VENC_Start(VencGrp, VencChn, pVideo+0);
s32Ret = SAMPLE_COMM_VENC_BindVpss(VencGrp, VpssGrp, VpssChn);
VpssGrp = 0; VpssChn = 4;
VencGrp = 1; VencChn = 1; //for preview
s32Ret = _COMM_VENC_Start(VencGrp, VencChn, pVideo+1);
s32Ret = SAMPLE_COMM_VENC_BindVpss(VencChn, VpssGrp, VpssChn);
VpssGrp = 0; VpssChn = 5;
VencGrp = 2; VencChn = 2; //for CIF clip recording
s32Ret = _COMM_VENC_Start(VencGrp, VencChn, (pVideo+2));
现在的现象就是