簡介
AVDictionary是FFmpeg的鍵值對存儲工具,FFmpeg經常使用AVDictionary設置/讀取內部參數
使用
avformat_open_input和avformat_find_stream_info函數都提供了AVDictionary參數,該參數可以在打開碼流之前指定各種參數,比如:探測碼流格式的時間,最大延時,超時時間,以及支持的協議的白名單等等
代碼
AVInputFormat pInputFormat = NULL;
AVFormatContext pFormatContext = avformat_alloc_context();
AVDictionary *pOptions = NULL;
av_dict_set(&pOptions, "probesize", "4096", 0);
av_dict_set(&pOptions, "max_delay", "100", 0);//指定最大延時100毫秒
if (avformat_open_input(&pFormatContext, "", pInputFormat, &pOptions) < 0)
類似的也可以通過指定pFormatContext的參數來指定探測數據格式的數據大小和最大的延時
pFormatContext->probesize = 4 *1024;
pFormatContext->max_delay = 100;
問題
實際上通過設置探測碼流格式的時間以及碼流數據的大小,一定程度上,減少了探測的時間,但是也會導致探測碼流格式失敗,因此這種方式僅用於碼流格式不明確的時候,要求點播延時不苛刻的情況下
通過設置了AVDictionary的max_delay參數值無效,並且pFormatContext->max_delay也設置無效