FFmpeg自带的ffplay问题处理
如果出现“Immediate exit requested”错误,直接原因就是decode_interrupt_cb函数返回了true, 即1
这个函数在ffplay.c中,处理方法是增加一个超时,如下所示,设置超时3秒。
static unsigned nTimeOut = 0;
static int decode_interrupt_cb(void *ctx)
{
VideoState *is = ctx;
if (!nTimeOut) {
nTimeOut = SDL_GetTicks();
} else if (SDL_GetTicks() - nTimeOut > 1000 * 1000 * 3) {
nTimeOut = SDL_GetTicks();
return is->abort_request;
}
return 0;
}
复现的方法很简单,就是把函数修改为直接返回1,立即出现“Immediate exit requested”错误,这个问题会出现在
wifi播放网络视频时ok, 但切为3G时就出现错误了。还有一种情况是stream_close调用后,新的视频未即时打开。