ffmpeg jpg 帧捕获 - 如何丢弃损坏的帧

标签 ffmpeg jpeg video-processing corruption

我正在使用 ffmpeg 2.2.2 (Windows) 将实时摄像机流导出为 JPG 帧。我正在使用命令行:

ffmpeg -err_detect aggressive -i rtsp://[ip address]:554/11 -r 1 -s 640x320 -an -f image2 c:\temp\snapshots\snapshot-%03d.jpg

这将启动一个连续过程,该过程每秒从实时流中导出大约 1 帧。但是,在导出期间的不同时间,ffmpeg 会抛出如下错误:
[h264 @ 00037ae0] RTP: missed 2 packets=00:01:09.00 bitrate=N/A dup=0 drop=1186
[h264 @ 02fbc340] Cannot use next picture in error concealment
[h264 @ 02fbc340] concealing 4386 DC, 4386 AC, 4386 MV errors in P frame
[h264 @ 00037ae0] RTP: missed 13 packets
[h264 @ 02fbf7a0] left block unavailable for requested intra mode at 0 15p=1196
[h264 @ 02fbf7a0] error while decoding MB 0 15, bytestream 128288
[h264 @ 02fbf7a0] concealing 6409 DC, 6409 AC, 6409 MV errors in I frame

但是,它会继续创建一个损坏的 jpg 文件。例如,文件的顶部很好,但相同的像素会在图像的其余部分涂抹。这是一个例子:
enter image description here

如何强制 ffmpeg 1)在保存后丢弃这些损坏的图像,或 2)在发生此类错误后简单地将图像“不写入”到文件中?

我认为 err_detect 标志可能会有所帮助,但似乎没有什么区别。

最佳答案

你可以试试discardcorrupt输入上的标志。完整的命令行将是:

ffmpeg -err_detect aggressive -fflags discardcorrupt -i rtsp://[ip address]:554/11 -r 1 -s 640x320 -an -f image2 c:\temp\snapshots\snapshot-%03d.jpg

关于ffmpeg jpg 帧捕获 - 如何丢弃损坏的帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45983605/

相关文章:

FFmpeg命令使用

ffmpeg - 使用ffmpeg将音频流从源文件复制到转码的视频文件

java - 如何在java中对图像进行阈值处理(用于黑白分色)?

c# - 是否可以从控件创建 JPG?

php - 使用 ffmpeg 和 php 执行帧转换

c++ - 如何在 FFmpeg C/C++ 中寻找

ffmpeg 复杂过滤器 - 黑色背景上的多个裁剪

windows - %a 和 %%a 突然分别在 Win 10 cmd 和批处理文件中不起作用?

jpeg - jpeg文件中的DC和AC是什么意思?

c++ - 在 IOS Swift 项目中使用 OpenCV 进行视频处理