[問題] ffmpeg: number of reference frames exceeds max

看板C_and_CPP (C/C++)作者 (阿維)時間12年前 (2013/09/25 09:27), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
有寫過FFMPEG的先進們 我有一個疑問想要請教 以下是網路上decoder寫法 根據這程式 我可以順利讀取網路串流播出影片沒問題 今天我需要將讀進來的影像檔做一些視訊處理 所以我會寫在if(frameFinished)條件裡面 處理視訊檔案一定會花時間 我發現跑一陣子之後視訊就會停掉 然後DOS視窗就會出現這個訊息 不斷跳 [h264 @ 0x22c480]number of reference frames exceeds max <probably corrup input>, discarding one 如果用VLC模擬串流再讀進去 好一點 但是影片會非常破碎 一樣久了會出現 [h264 @ 0x22c480]number of reference frames exceeds max <probably corrup input>, discarding one [h264 @ 0x22c480]error while decoding MB 8 23, bytestream <-7> [h264 @ 0x22c480]concealing 321 DC, 231 AC, 321 MV errors 請問各位對FFMPEG的先進有過這樣經驗嗎 是不是因為花時間處理演算法讓ffmpeg延遲出現錯誤 有辦法避免嗎 PS.我是用avcodec-52.lib 我的程式片段:: //av_read_frame會將讀到的 Frame 放入 AVPacket結構 中 while(av_read_frame(VideoFormatInfo, &VideoPacket) >= 0) { //從已經讀到的 AVPacket結構 中,判斷這個 Packet 是哪個 stream if(VideoPacket.stream_index == VideoStreamIndex) { buf = VideoPacket.data; buf_size = VideoPacket.size ; avcodec_decode_video(VideoCodecInfo, VideoFrame, &frameFinished, buf,buf_size); //不管是AVI還是串流 都需要好幾個串流資訊解碼才會組成一張影像 // Did we get a video frame?(我們有取得一張 video frame?) if(frameFinished) { //----- //演算法呼叫地方 //----- } } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.34.221.115
文章代碼(AID): #1IGZlkNh (C_and_CPP)
文章代碼(AID): #1IGZlkNh (C_and_CPP)