wang-bin / QtAV

A cross-platform multimedia framework based on Qt and FFmpeg. 基于Qt和FFmpeg的跨平台高性能音视频播放框架. Recommand to use new sdk https://github.com/wang-bin/mdk-sdk
http://qtav.org
3.92k stars 1.5k forks source link

VideoFrameExtractor crash on MP4 #1351

Open pierrexn opened 3 years ago

pierrexn commented 3 years ago

Lastest version of QTAV, Qt 5.15.1, Windows 10

When using VideoFrameExtractor, there is a crash when calling frame.toImage()

I've tried with -async the tests\extract tool, and same crash

QtAV::VideoFrameExtractor* extractor = new QtAV::VideoFrameExtractor(this);
//extractor->setAsync(false);
extractor->setAutoExtract(false);
extractor->setSource(m_filename);
extractor->setPosition(0);

QEventLoop* loop = new QEventLoop(this);

QObject::connect(extractor, &QtAV::VideoFrameExtractor::frameExtracted, [=](const QtAV::VideoFrame &frame) {
    printf("A Frame is extracted: %d \n", extractor->position());
    if (frame.isValid())
        m_result = frame.toImage();
    loop->quit();
});
extractor->extract();
loop->exec();

With QT 5.12.6, no crash

https://user-images.githubusercontent.com/1200371/102606393-f7fc4580-4126-11eb-8e03-ccfa70c72f2c.mp4

pierrexn commented 3 years ago

Here the logs

AudioResampler::Register(..., FFmpeg)
Singleton 000001E0FA5D96C0 created...
AudioOutputBackend::Register(..., XAudio2)
Singleton 000001E0FA5DA770 created...
AudioOutputBackend::Register(..., DirectSound)
VideoDecoder::Register(..., CUDA)
Singleton 000001E0FA5DA810 created...
VideoDecoder::Register(..., D3D11)
VideoDecoder::Register(..., DXVA)
VideoRenderer::Register(..., OpenGLWindow)
Singleton 000001E0FA5DB8C0 created...
SubtitleProcessor::Register(..., FFmpeg)
Singleton 000001E0FA5DBA10 created...
AudioDecoder::Register(..., FFmpeg)
Singleton 000001E0FA5DC7A0 created...
AudioEncoder::Register(..., FFmpeg)
Singleton 000001E0FA5DC5C0 created...
ImageConverter::Register(..., FFmpeg)
Singleton 000001E0FA5DCB60 created...
MediaIO::Register(..., QIODevice)
Singleton 000001E0FA5DCA20 created...
MediaIO::Register(..., QFile)
AudioOutputBackend::Register(..., null)
VideoDecoder::Register(..., FFmpeg)
VideoDecoder::Register(..., QSV)
VideoEncoder::Register(..., FFmpeg)
Singleton 000001E0FA5DCC00 created...
QtAV 1.13.0(Dec 18 2020, 11:14:00)
Multimedia framework base on Qt and FFmpeg.
Distributed under the terms of LGPLv2.1 or later.
Shanghai, China Copyright (C) 2012-2019 Wang Bin (aka. Lucas Wang) wbsecg1@gmail.com
Donate: http://qtav.org/donate.html
Source: https://github.com/wang-bin/QtAV
Home page: http://qtav.org
"Build with Qt-5.15.1"
"FFmpeg/Libav configuration: --extra-version=QtAV --disable-doc --disable-debug --enable-shared --enable-runtime-cpudetect --enable-libmfx --enable-mediafoundation --enable-avresample --disable-postproc --toolchain=msvc --enable-pic --extra-cflags='-Zi -FS -MD -guard:cf -D_WIN32_WINNT=0x0600' --extra-ldflags='-DEBUG -guard:cf -OPT:REF -SUBSYSTEM:CONSOLE -NODEFAULTLIB:libcmt' --enable-small --disable-avresample --disable-filters --enable-filter='*null*,*fade,*fifo,*format,*resample,aeval,all*,atempo,color*,convolution,crop,draw*,eq*,framerate,*_cuda,*_qsv,*_vaapi,*v4l2*,hw*,scale,volume' --disable-muxers --disable-encoders --disable-decoders --enable-decoder='*sub*,*text*,*web*,aac*,*ac3*,alac*,ape,ass,cc_dec,cook,dca,eac3*,truehd,ff*,*yuv*,flv,flac,gif,h26[3-4]*,hevc*,hap,mp[1-3]*,prores,*peg*,mlp,mpl2,nellymoser,opus,pcm*,*png*,rawvideo,rv*,sami,srt,ssa,v210*,vc1*,vorbis,vp[6-9]*,wm*,wrapped_avframe' --disable-demuxers --enable-demuxer='*sub*,*text*,*ac3,*ac,*peg*,*web*,ape,ass,avi,concat,dts*,*dash*,*flv,gif,hls,h264,hevc,kux,xv,matroska,mlv,mov,mp3,mxf,nsv,nut,ogg,pcm*,rawvideo,rt*p,spdif,srt,vc1,v210*,wav,*pipe,image2' --disable-parsers --enable-parser='*sub*,aac*,ac3,cook,flac,h26[3-4],hevc,m*,opus,rv*,vc1,vorbis,vp[8-9]' --enable-encoder='aac,ff*,*yuv*,gif,h26[3-4]*,hevc*,mjpeg,*png,mpeg[2-4]*,nellymoser,nvenc*,opus,pcm*,rawvideo,speedhq,vorbis,vp[7-9],wrapped_avframe' --enable-muxer='dash,fifo,flv,gif,h264,hevc,hls,image2,*jpeg,matroska,mov,mp4,mpegts,nu*,og*,pcm*,rawvideo,spdif,wav,webm,*pipe'"
"Build with avutil-56.62.100"
"Build with avcodec-58.115.102"
"Build with avformat-58.65.100"
"Build with avfilter-7.93.100"
"Build with avdevice-58.11.103"
"Build with swresample-3.8.100"
"Build with swscale-5.8.100"
"all closed and reseted"
"avformat_open_input: d->format_ctx:'0x1e0fc831e40', url:'D:/Qt/QtAV-master/build/bin/file.mp4'..."
"avformat_open_input: url:'D:/Qt/QtAV-master/build/bin/file.mp4' ret:0"
"avfmtctx.flags: 2097153, iformat.flags"
"closing d->format_ctx"
"all closed and reseted"
"avformat_open_input: d->format_ctx:'0x1e0fc831e40', url:'D:/Qt/QtAV-master/build/bin/file.mp4'..."
"avformat_open_input: url:'D:/Qt/QtAV-master/build/bin/file.mp4' ret:0"
"avfmtctx.flags: 2097153, iformat.flags"
VideoDecoder::id("FFmpeg")
QtAV 1.13.0(Dec 18 2020, 11:14:00)
Multimedia framework base on Qt and FFmpeg.
Distributed under the terms of LGPLv2.1 or later.
Shanghai, China Copyright (C) 2012-2019 Wang Bin (aka. Lucas Wang) wbsecg1@gmail.com
Donate: http://qtav.org/donate.html
Source: https://github.com/wang-bin/QtAV
Home page: http://qtav.org
"QtAV::VideoDecoderFFmpeg thread type: Frame, count: 13"
"set QtAV::VideoDecoderFFmpeg() meta properties:"
"************seek to beginning. started = false"
"AVCodecContext.h264 options:"
"skip_frame=>0"
"skip_loop_filter=>0"
"set QtAV::VideoDecoderFFmpeg() meta properties:"
"no frame could be decompressed: Error number 3952 occurred 0/3952"
"(repeat 1)no frame could be decompressed: Error number 3952 occurred 0/3952\nno frame could be decompressed: Error number 1568 occurred 0/1568"
"no frame could be decompressed: Error number 1536 occurred 0/1536"
"no frame could be decompressed: Error number 2096 occurred 0/2096"
"no frame could be decompressed: Error number 1712 occurred 0/1712"
"no frame could be decompressed: Error number 1520 occurred 0/1520"
"no frame could be decompressed: Error number 1456 occurred 0/1456"
"no frame could be decompressed: Error number 1328 occurred 0/1328"
"no frame could be decompressed: Error number 1488 occurred 0/1488"
"no frame could be decompressed: Error number 1600 occurred 0/1600"
"no frame could be decompressed: Error number 1392 occurred 0/1392"
"got frame at 0.000000s, diff=0"