解决方式:
static int interrupt_cb(void *ctx) { AVFormatContext* formatContext = reinterpret_cast<AVFormatContext*>(ctx); //timeout after 5 seconds of no activity if (formatContext->timestamp>0 && (GetTickCount() - formatContext->timestamp >5000)) return 1; return 0; } static AVFormatContext* open_file( char* fileName ) { AVDictionary *options = NULL; av_dict_set(&options, "analyzeduration", "1500000", 0); AVFormatContext* formatContext = avformat_alloc_context( ); formatContext->interrupt_callback.callback = interrupt_cb; formatContext->interrupt_callback.opaque = formatContext; formatContext->timestamp = GetTickCount(); formatContext->flags|=AVFMT_FLAG_NONBLOCK; if ( avformat_open_input( &formatContext, fileName, NULL, NULL ) !=0 ) { return NULL; } av_dict_free(&options); return formatContext; }