我在写一些广泛使用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