-
Notifications
You must be signed in to change notification settings - Fork 64
Description
Bug/Issue Description:
In bug #118 somebody else reported that dvr-scan silently stops processing its input. I have several HEVC containers manifestig same issue with dvr-scan v1.6 from pip. The HEVC file was created from many short 3gp files by ffmpeg.
dvr-scan --verbosity debug --min-event-length 2 --time-before-event 0.1s --time-post-event 0.1s --threshold 0.1 --kernel-size 3 --bg-subtractor MOG2 --output-mode opencv --add-region 5 816 843 984 2560 1492 2560 1920 1855 1920 1690 1551 0 1548 -i input.hevc -o output.mkv
[DVR-Scan] DVR-Scan 1.6
[DVR-Scan] Initializing scan context...
[DVR-Scan] Opened video input.hevc (2560 x 1920 at 25.000 FPS).
[DVR-Scan] Limiting detection to 1 region.
[DVR-Scan] Using subtractor MOG2 with kernel_size = 3
[DVR-Scan] Scanning input video for motion events...
Detected: 7773 | Progress: : 386991 frames [1:14:19, 88.38 frames/s][hevc @ 0x55e97abafd80] Duplicate POC in a sequence: 13.
Detected: 7775 | Progress: : 387014 frames [1:14:19, 86.78 frames/s]
[DVR-Scan] Processed 387014 frames read in 4459.8 secs (avg 86.8 FPS).
[DVR-Scan] Detected 7775 motion events in input.
[DVR-Scan] List of motion events:
-------------------------------------------------------------
| Event # | Start Time | Duration | End Time |
-------------------------------------------------------------
| Event 1 | 00:00:07.4 | 00:00:00.2 | 00:00:07.6 |
...
| Event 7775 | 04:18:00.4 | 00:00:00.2 | 04:18:00.6 |
-------------------------------------------------------------
[DVR-Scan] Comma-separated timecode values:
00:00:07.360,00:00:07.600,00:00:11.160,00:00:11.400,
...
,04:18:00.080,04:18:00.360,04:18:00.560
[DVR-Scan] Motion events written to disk.
I ran the same command now with --verbosity debug, there is little bit more info.
INFO: controller.run_dvr_scan(): Initializing scan context...
INFO: video_joiner._load_input_videos(): Opened video input.hevc (2560 x 1920 at 25.000 FPS).
INFO: scanner._handle_regions(): Limiting detection to 1 region.
DEBUG: detector.__init__(): Region Mask: area = (0,816),(2560,1920), coverage = 27.98%
INFO: scanner.scan(): Using subtractor MOG2 with kernel_size = 3
INFO: scanner.scan(): Scanning input video for motion events...
Detected: 7773 | Progress: : 386992 frames [1:56:06, 56.16 frames/s][hevc @ 0x55a89b671680] Duplicate POC in a sequence: 13.
Detected: 7774 | Progress: : 387009 frames [1:56:06, 54.36 frames/s]DEBUG: video_joiner.read(): No more input to process.
Detected: 7775 | Progress: : 387014 frames [1:56:06, 55.55 frames/s]
INFO: controller.run_dvr_scan(): Processed 387014 frames read in 6966.8 secs (avg 55.6 FPS).
INFO: controller.run_dvr_scan(): Detected 7775 motion events in input.
INFO: controller.run_dvr_scan(): List of motion events:
-------------------------------------------------------------
| Event # | Start Time | Duration | End Time |
-------------------------------------------------------------
| Event 1 | 00:00:07.4 | 00:00:00.2 | 00:00:07.6 |
...
I tracked it back to the original 3gp file (51MB). mpv stalls in the problematic position with:
[ffmpeg/video] hevc: Duplicate POC in a sequence: 13.
[ffmpeg/video] hevc: Error parsing NAL unit #0.
Error while decoding frame (hardware decoding)!
Maybe similar underlying issue is in iina/iina#3448 (no testcase)?
Meanwhile you can drop me an email so I can share some example files with you.
Would be nice if the List of motion events: table contained also the frame starts and ends, so that one could see if the input was processed up to the very last frame or not.
Expected Behavior:
A clear error message if dvr-scan stopped reading the input, ideally reporting ffmpeg command to extract some data around the problematic position in the input stream (for copy&pasting).
Computing Environment:
- OS: Linux (Distro: Gentoo)
- Python Version: 3.11.8
- OpenCV Version: 4.9.0
$ ffmpeg
ffmpeg version 4.4.4 Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 13 (Gentoo 13.2.1_p20240210 p14)
configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --docdir=/usr/share/doc/ffmpeg-4.4.4-r9/html --mandir=/usr/share/man --enable-shared --cc=x86_64-pc-linux-gnu-gcc --cxx=x86_64-pc-linux-gnu-g++ --ar=x86_64-pc-linux-gnu-ar --nm=x86_64-pc-linux-gnu-nm --strip=x86_64-pc-linux-gnu-strip --ranlib=x86_64-pc-linux-gnu-ranlib --pkg-config=x86_64-pc-linux-gnu-pkg-config --optflags='-O2 -pipe -march=native -ftree-vectorize' --disable-static --enable-avfilter --enable-avresample --disable-stripping --disable-optimizations --disable-libcelt --enable-nonfree --enable-version3 --disable-indev=oss --disable-indev=jack --disable-outdev=oss --enable-version3 --enable-version3 --enable-nonfree --enable-bzlib --enable-runtime-cpudetect --disable-debug --disable-gcrypt --enable-gnutls --enable-gmp --enable-gpl --disable-hardcoded-tables --enable-iconv --enable-libxml2 --enable-lzma --enable-network --enable-opencl --enable-openssl --enable-postproc --disable-libsmbclient --disable-ffplay --disable-sdl2 --enable-vaapi --disable-vdpau --enable-vulkan --enable-xlib --enable-libxcb --enable-libxcb-shm --enable-libxcb-xfixes --enable-zlib --enable-libcdio --disable-libiec61883 --disable-libdc1394 --disable-libcaca --enable-openal --enable-opengl --enable-libv4l2 --disable-libpulse --enable-libdrm --disable-libjack --enable-libopencore-amrwb --enable-libopencore-amrnb --enable-libcodec2 --enable-libdav1d --enable-libfdk-aac --enable-libopenjpeg --disable-libbluray --disable-libgme --disable-libgsm --disable-libaribb24 --disable-mmal --disable-libmodplug --enable-libopus --disable-libmfx --disable-libilbc --enable-librtmp --enable-libssh --disable-libspeex --enable-libsrt --enable-librsvg --enable-ffnvcodec --enable-libvorbis --enable-libvpx --disable-libzvbi --disable-appkit --disable-libbs2b --disable-chromaprint --disable-cuda-llvm --disable-libflite --enable-frei0r --disable-libfribidi --enable-fontconfig --disable-libglslang --enable-ladspa --disable-libass --enable-libtesseract --disable-lv2 --enable-libfreetype --enable-libvidstab --disable-libvmaf --enable-librubberband --disable-libzmq --disable-libzimg --enable-libsoxr --enable-pthreads --disable-amf --enable-libvo-amrwbenc --disable-libkvazaar --enable-libaom --enable-libmp3lame --enable-libopenh264 --enable-librav1e --disable-libsnappy --enable-libsvtav1 --disable-libtheora --enable-libtwolame --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --disable-gnutls --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-neon --disable-vfp --disable-vfpv3 --disable-armv8 --disable-mipsdsp --disable-mipsdspr2 --disable-mipsfpu --disable-altivec --disable-vsx --disable-power8 --disable-amd3dnow --disable-amd3dnowext --disable-fma4 --disable-xop --enable-pic --cpu=host --disable-doc --disable-htmlpages --enable-manpages
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
Use -h to get full help or, even better, run 'man ffmpeg'
but also with:
$ ffmpeg
ffmpeg version 6.1.1 Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 13 (Gentoo 13.2.1_p20240210 p14)
configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --docdir=/usr/share/doc/ffmpeg-6.1.1-r5/html --mandir=/usr/share/man --enable-shared --cc=x86_64-pc-linux-gnu-gcc --cxx=x86_64-pc-linux-gnu-g++ --ar=x86_64-pc-linux-gnu-ar --nm=x86_64-pc-linux-gnu-nm --strip=x86_64-pc-linux-gnu-strip --ranlib=x86_64-pc-linux-gnu-ranlib --pkg-config=x86_64-pc-linux-gnu-pkg-config --optflags='-O2 -pipe -march=native -ftree-vectorize' --disable-static --disable-libaribcaption --enable-avfilter --disable-stripping --disable-optimizations --disable-libcelt --enable-nonfree --enable-version3 --disable-indev=oss --disable-indev=jack --disable-outdev=oss --enable-version3 --enable-version3 --enable-nonfree --enable-bzlib --enable-runtime-cpudetect --disable-debug --disable-gcrypt --enable-gnutls --enable-gmp --enable-gpl --disable-hardcoded-tables --enable-iconv --enable-libxml2 --enable-lzma --enable-network --enable-opencl --enable-openssl --enable-postproc --disable-libsmbclient --disable-ffplay --disable-sdl2 --enable-vaapi --disable-vdpau --enable-vulkan --enable-xlib --enable-libxcb --enable-libxcb-shm --enable-libxcb-xfixes --enable-zlib --enable-libcdio --disable-libiec61883 --disable-libdc1394 --disable-libcaca --enable-openal --enable-opengl --enable-libv4l2 --disable-libpulse --enable-libdrm --disable-libjack --enable-libopencore-amrwb --enable-libopencore-amrnb --enable-libcodec2 --enable-libdav1d --enable-libfdk-aac --enable-libopenjpeg --disable-libjxl --disable-libbluray --disable-libgme --disable-libgsm --disable-libaribb24 --disable-libmodplug --enable-libopus --disable-libvpl --disable-libilbc --enable-librtmp --enable-libssh --disable-libspeex --enable-libsrt --enable-librsvg --disable-ffnvcodec --enable-libvorbis --enable-libvpx --disable-libzvbi --disable-appkit --disable-libbs2b --disable-chromaprint --disable-cuda-llvm --disable-libflite --enable-fontconfig --enable-frei0r --disable-libfribidi --disable-libglslang --enable-ladspa --enable-lcms2 --disable-libass --disable-libplacebo --enable-libtesseract --disable-lv2 --enable-librubberband --disable-libshaderc --enable-libfreetype --enable-libharfbuzz --enable-libvidstab --enable-libvmaf --disable-libzmq --disable-libzimg --enable-libsoxr --enable-pthreads --disable-amf --enable-libvo-amrwbenc --disable-libkvazaar --enable-libaom --enable-libmp3lame --enable-libopenh264 --enable-librav1e --disable-libsnappy --enable-libsvtav1 --disable-libtheora --enable-libtwolame --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --disable-gnutls --enable-version3 --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-neon --disable-vfp --disable-vfpv3 --disable-armv8 --disable-dotprod --disable-i8mm --disable-mipsdsp --disable-mipsdspr2 --disable-mipsfpu --disable-altivec --disable-vsx --disable-power8 --disable-amd3dnow --disable-amd3dnowext --disable-fma4 --disable-xop --enable-pic --cpu=host --disable-doc --disable-htmlpages --enable-manpages
libavutil 58. 29.100 / 58. 29.100
libavcodec 60. 31.102 / 60. 31.102
libavformat 60. 16.100 / 60. 16.100
libavdevice 60. 3.100 / 60. 3.100
libavfilter 9. 12.100 / 9. 12.100
libswscale 7. 5.100 / 7. 5.100
libswresample 4. 12.100 / 4. 12.100
libpostproc 57. 3.100 / 57. 3.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
Use -h to get full help or, even better, run 'man ffmpeg'