avformat_open_input 阻塞 and 設(shè)置超時時間

在編寫能夠適配 h264 和 h265 編碼的MP4播放器時遇到的問題.(PS如果iOS系統(tǒng)播放器能夠滿足這一點(diǎn)我也不至于會累成狗).于是有了以下的嘗試.

  1. 完美解析播放 本地mp4 (h264編碼)
  2. 完美解析播放 本地mp4 (h265編碼)
  3. 解析網(wǎng)絡(luò)mp4 (海鳥)
    視頻地址 http://vjs.zencdn.net/v/oceans.mp4 卡頓超級嚴(yán)重
  4. 解析網(wǎng)絡(luò)mp4 (馴龍高手)
    視頻地址 http://vfx.mtime.cn/Video/2019/02/04/mp4/190204084208765161.mp4 播放順暢
  5. 解析網(wǎng)絡(luò)mp4 這邊是找了一個h265編碼的視頻.不好找呀.我這里也是限時才有的 播放順暢

ffmpeg 用avformat_open_input() 解析網(wǎng)絡(luò)流時.默認(rèn)是阻塞線程, 解析錯誤或其他原因的長時間不返回.
為 avformat_open_input() 函數(shù)設(shè)置stimeout 的參數(shù) (單位微妙)
設(shè)置interrupt_callback和timeout . 能解決這些問題

設(shè)置超時時間timeout

//設(shè)置一些參數(shù)
    //    AVDictionary * options = NULL;
    /*
     //設(shè)置緩存大小利赋,1080p可將值調(diào)大
     //以udp方式打開嗅义,如果以tcp方式打開將udp替換為tcp
     //設(shè)置超時3秒 設(shè)置超時斷開連接時間,單位微秒
     //設(shè)置最大時延
     */
    // av_dict_set(&options, "buffer_size", "1024000", 0);
    // av_dict_set(&options, "rtsp_transport", "tcp", 0);
    // av_dict_set(&options, "stimeout", "3000000", 0);
    // av_dict_set(&options, "max_delay", "500000", 0);
    
    //    pFormatCtx->probesize = 100 *1024;
    //    pFormatCtx->max_analyze_duration = 5 * AV_TIME_BASE;

    AVDictionary * opts = NULL;
    av_dict_set(&opts, "rtsp_transport", "tcp", 0);
    av_dict_set(&opts, "stimeout", "2000000", 0);

avformat_open_input 阻塞處理 interrupt_callback

static int decode_interrupt_cb(void *ctx)
{
    return 1;  // return 1 時會立刻結(jié)束阻塞
}
//建議這么寫
static int decode_interrupt_cb(void *ctx)
{
    exit_info * is = ctx;
    if (is->nExit == 1) {
        OOLog(@"終止rtsp >>>>>>>>>>>>>>>>>>> is->nExit = 1");
    }
    return is->nExit;
}
想結(jié)束時 is->nExit = 1; 就好了

formatCtx->interrupt_callback.callback = decode_interrupt_cb;
formatCtx->interrupt_callback.opaque = is;

當(dāng)然也有說avformat_open_input 能設(shè)置成非阻塞的 (設(shè)置后貌似沒效果,建議不用)

formatCtx->flags |= AVFMT_FLAG_NONBLOCK;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末隐砸,一起剝皮案震驚了整個濱河市之碗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌季希,老刑警劉巖褪那,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異式塌,居然都是意外死亡博敬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門峰尝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來偏窝,“玉大人,你說我怎么就攤上這事〖劳” “怎么了伦意?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長硼补。 經(jīng)常有香客問我驮肉,道長,這世上最難降的妖魔是什么已骇? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任离钝,我火速辦了婚禮,結(jié)果婚禮上褪储,老公的妹妹穿的比我還像新娘卵渴。我一直安慰自己,他們只是感情好鲤竹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布奖恰。 她就那樣靜靜地躺著,像睡著了一般宛裕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上论泛,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天揩尸,我揣著相機(jī)與錄音,去河邊找鬼屁奏。 笑死岩榆,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的坟瓢。 我是一名探鬼主播勇边,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼折联!你這毒婦竟也來了粒褒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤诚镰,失蹤者是張志新(化名)和其女友劉穎奕坟,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體清笨,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡月杉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了抠艾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苛萎。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出腌歉,到底是詐尸還是另有隱情蛙酪,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布究履,位于F島的核電站滤否,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏最仑。R本人自食惡果不足惜藐俺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望泥彤。 院中可真熱鬧欲芹,春花似錦、人聲如沸吟吝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剑逃。三九已至浙宜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蛹磺,已是汗流浹背粟瞬。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留萤捆,地道東北人裙品。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像俗或,于是被迫代替她去往敵國和親市怎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容