记录一下最近对接rtsp摄像头的过程:
1.版本问题
使用2.8.15版本时
pformatContext=avformat_alloc_context();
load_options();
pformatContext->flags |=AVFMT_FLAG_NOBUFFER;
if((ret=avformat_open_input(&pformatContext,url.c_str(),NULL,&optionsDict))<0)
在open_input之前需要初始化,否则会异常,高版本似乎没这个问题;
2.延时降低:
-
pformatContext->flags |=AVFMT_FLAG_NOBUFFER;
-
pcodecContext->flags |=CODEC_FLAG_LOW_DELAY;
使用2时效果明显,从500ms直接降到250ms,这部是解码本地会缓存部分帧,这个设置可以消除缓存帧对延时的影响;
3.画面问题:
void rtsp_camera::load_options()
{
optionsDict = NULL;
av_dict_set(&optionsDict, “rtsp_transport”, “udp”, 0);
av_dict_set(&optionsDict, “buffer_size”, “1024000”, 0);
av_dict_set(&optionsDict, “max_delay”, “500000”, 0);
av_dict_set(&optionsDict, “fflags”, “nobuffer”, 0);
av_dic