ffmpeg拉流rtmp音訊實時資料有延時的解決方法
在使用ffmpeg播放網路流中,在執行到avformat_stream_info函式會阻塞5秒左右,這樣造成播放等待時間過長,影響
使用者體驗,經試驗,修改函式裡面AVFormatContext引數,probesize和max_analyze_duration值大小
通過AVDictionary來改變AVFormatContext結構體裡引數。
AVDictionary * avdic = NULL;
av_dict_set(&avdic,"probesize","2048",0);
av_dict_set(&avdic,"max_analyze_duration","1000",0);
avforamt_open_input(&pFormatCtx,url, NULL, &avdic);
avformat_find_stream_info(pFormatCtx, NULL);
我的實際程式碼如下:
以下程式碼也是可以的:AVDictionary* pOptions = NULL; pFormatCtx->probesize = 1 *1024; pFormatCtx->max_analyze_duration = 1 * AV_TIME_BASE; // Retrieve stream information if(avformat_find_stream_info(pFormatCtx,&pOptions)<0) { printf("Couldn't find stream information.\n"); return -1; }
AVDictionary * avdic = NULL;
av_dict_set(&avdic,"probesize","2048",0);
av_dict_set(&avdic,"max_analyze_duration","10",0);
avformat_open_input(&pFormatCtx,url, NULL, &avdic);
avformat_find_stream_info(pFormatCtx, NULL);
這樣就不會有太大的延時問題,我設定了伺服器的緩衝大小等方式沒有用,通過上述方法就可以了。