FFmpeg错误检查

FFmpeg错误检查,ffmpeg,video-processing,avi,error-checking,Ffmpeg,Video Processing,Avi,Error Checking,我有三个示例视频,good.avi、damaged1.avi和damaged2.avi。第一个将在VLC中播放,但第二个两个都会出现错误,并出现相同的AVI索引消息中断或丢失 我有数千个这样的视频需要在MATLAB中处理,所以我尝试使用FFmpeg进行错误检查,如下所示:FFmpeg-v error-I vidname.avi-f null-2>&1 下面是我不明白的部分: 在good.avi上,完成时没有输出-OK 在damaged1.avi上,它输出[mjpeg@0x7fc1dd813800

我有三个示例视频,good.avi、damaged1.avi和damaged2.avi。第一个将在VLC中播放,但第二个两个都会出现错误,并出现相同的AVI索引消息中断或丢失

我有数千个这样的视频需要在MATLAB中处理,所以我尝试使用FFmpeg进行错误检查,如下所示:FFmpeg-v error-I vidname.avi-f null-2>&1

下面是我不明白的部分: 在good.avi上,完成时没有输出-OK 在damaged1.avi上,它输出[mjpeg@0x7fc1dd813800]超出1-正常 在damaged2.avi上,它完成时没有输出,如good.avi-

有视频编解码器/FFmpeg经验的人能帮我理解这里发生了什么,这样我就可以开发一个更健壮的错误检查吗

它们在VLC中也具有相同的编解码器详细信息:

这是一个很难预测的问题,但我怀疑其中一幅JPEG图像由于overread 1错误消息而损坏

尝试从damaged1.avi中提取图像

然后对提取的图像运行mogrify:

for i in image*.jpg; do mogrify "$i"; done
最后,重新创建视频:

cat image*.jpg | ffmpeg -f image2pipe -c:v mjpeg -i - output.avi

如果这样做有效,那么您可以从damage1.avi中提取音频并将其多路传输到output.avi。

ffplay播放damaged2.avi吗?在某种程度上,它会在播放一半时冻结,没有错误消息。另一方面,对于damaged1.avi,它会在大约2/3到之间冻结,并显示一条错误消息。如果重新录制:ffmpeg-i damaged2.avi-c copy test2.aviHmm重新录制damaged2.avi允许使用VLC播放test2.avi,但重新录制damaged1.avi在尝试播放test1.avi时仍会显示损坏或丢失的avi索引,不过,主要的问题是能够自动识别这些损坏的文件。我真的不需要这一个特定的视频,但如果我试图将其读入Matlab,程序就会崩溃,我有大约50000个视频要处理,因此如果我让它运行一整晚,其中一个视频被读入,它就会崩溃并停止我的进程。所以我主要需要一种方法来检查这种损坏。例如,在damaged1.avi中,我可以正确地检查它,但在damaged2.avi中,我不能。
cat image*.jpg | ffmpeg -f image2pipe -c:v mjpeg -i - output.avi