我在寫一些廣泛使用ffmpeg的軟件,它是多線程的,有多個類實例。在ffmpeg中檢測超時
如果網絡連接丟失ffmpeg在讀取時掛起。我發現了一個方法來指派FFmpeg的火災回調定期檢查它是否應該退出與否:
static int interrupt_cb(void *ctx)
{
// do something
return 0;
}
static const libffmpeg::AVIOInterruptCB int_cb = { interrupt_cb, NULL };
...
AVFormatContext* formatContext = libffmpeg::avformat_alloc_context();
formatContext->interrupt_callback = int_cb;
if (libffmpeg::avformat_open_input(&formatContext, fileName, NULL, NULL) !=0) {...}
這一切都很好,但無處在網絡上我能找到* ctx包含什麼,以及如何確定回調是否應該返回1或0.我不能指定靜態「中止」標誌,因爲類有很多實例。我也無法調試代碼,因爲Visual Studio拒絕在返回0上設置斷點;聲稱沒有可執行代碼與該位置相關聯。有任何想法嗎?
你好,謝謝,是的,我讀過,我不知道什麼o包含。 – Sean
好的 - 那我該在那裏放什麼?如果它是一個靜態常量,它不會很好地與多個實例... – Sean
確定輝煌,謝謝!通過訪問formatContext,我該如何檢測到流已超時? – Sean