FFmpeg AVDictionary結構體使用

簡介
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也設置無效

參考
http://blog.csdn.net/encoder1234/article/details/54582676

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章