基于ffmpeg的RTSP场景检测

基于ffmpeg的RTSP场景检测,ffmpeg,rtsp,Ffmpeg,Rtsp,我有一个RTSP流,希望在场景发生变化时保存单个图像。这个想法实际上是手动对这些图像进行分类,并使用它们来训练TensorFlow。如果不使用场景过滤器,我可以轻松捕获整个流并生成数千张图像: ffmpeg -i rtsp://url -an -strftime 1 "%Y%m%d%H%M%S_scenechange.png" 但是,只要我添加了场景过滤器ffmpeg就不会保存任何图像,无论场景发生了多大的变化,该命令只会扩展一个参数: ffmpeg -i rtsp://u

我有一个RTSP流,希望在场景发生变化时保存单个图像。这个想法实际上是手动对这些图像进行分类,并使用它们来训练TensorFlow。如果不使用场景过滤器,我可以轻松捕获整个流并生成数千张图像:

ffmpeg -i rtsp://url -an -strftime 1 "%Y%m%d%H%M%S_scenechange.png"
但是,只要我添加了场景过滤器ffmpeg就不会保存任何图像,无论场景发生了多大的变化,该命令只会扩展一个参数:

ffmpeg -i rtsp://url -an -filter:v "select='gt(scene,0.1)'" -strftime 1 "%Y%m%d%H%M%S_scenechange.png"
它以以下输出启动ffmpeg,几分钟后意外退出:

ffmpeg version git-2020-08-31-4a11a6f Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 10.2.1 (GCC) 20200805
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libgsm --enable-librav1e --enable-libsvtav1 --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
libavutil      56. 58.100 / 56. 58.100
libavcodec     58.101.101 / 58.101.101
libavformat    58. 51.101 / 58. 51.101
libavdevice    58. 11.101 / 58. 11.101
libavfilter     7. 87.100 /  7. 87.100
libswscale      5.  8.100 /  5.  8.100
libswresample   3.  8.100 /  3.  8.100
libpostproc    55.  8.100 / 55.  8.100
Input #0, rtsp, from 'rtsp://url':
Metadata:
title           : hysxrtpsion
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: h264 (High), yuv420p(progressive), 1920x1080, 15 fps, 15 tbr, 90k tbn, 30 tbc
Stream #0:1: Audio: aac (LC), 8000 Hz, mono, fltp
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> png (native))
Press [q] to stop, [?] for help
Output #0, image2, to 'mHS_scenechange.png':
Metadata:
title           : hysxrtpsion
encoder         : Lavf58.51.101
Stream #0:0: Video: png, rgb24, 1920x1080, q=2-31, 200 kb/s, 15 fps, 15 tbn,
15 tbc
Metadata:
  encoder         : Lavc58.101.101 png
[rtsp @ 00000000004c5b80] max delay reached. need to consume packet
[rtsp @ 00000000004c5b80] RTP: missed 1 packets
[rtsp @ 00000000004c5b80] max delay reached. need to consume packet
[rtsp @ 00000000004c5b80] RTP: missed 1 packets
frame=    0 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.00 bitrate=N/A speed=   0x

video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)
我查看了上面提到的选项-ss-t-frames,但正如您所看到的,它们根本没有被使用

有没有人在这方面有更多的经验,可以给我一个正确的方向?由于过滤器是唯一的单一变化,我有点迷失在这里