應該如何在ffmpeg中調用avcodec_close?使用avcodec_close的ffmpeg問題
這是再現我的問題最簡單的代碼:
bool CDataSequenceFormat::openVideoCodec(AVStream* videoStream)
{
AVCodecContext* codecContext = videoStream->codec;
AVCodec* codec = avcodec_find_encoder(codecContext->codec_id);
if (codec == NULL || avcodec_open2(codecContext, codec, NULL) < 0 || avcodec_is_open(codecContext)==0)
{
return false;
}
avcodec_close(codecContext);
return true;
}
avcodec_open2
不會返回一個錯誤,avcodec_is_open
返回1,所以我假設codecContext
已正確設置。我認爲這是錯誤的嗎?
當我後,立即打電話avcodec_close
,我得到一個訪問衝突異常(寫入badf00d - 但我認爲avcodec_open2處理中的所有編解碼器領域的填充)在avcodec中-54.dll
人們似乎某處當嘗試在未打開的編解碼器上調用avcodec_close
時出現分段錯誤,但我不認爲這是這種情況。
任何想法我做錯了嗎?
編輯:我應該提到,我繼承了這個代碼用一個相當老版本的ffmpeg而這個問題只有當我更新到最新的ffmpeg的壓縮包