我正在寻找一种方法来检查视频文件是否损坏。在
我用cv2(opencvforpython)来加载视频。 如果视频文件已损坏,我想跳过该文件并转到下一个。在
我发现了这个stackoverflow question,因此尝试了这个:
try:
vid = cv2.VideoCapture(corrupt_video_file)
except cv2.error as e:
print(e)
except:
print('error')
但我仍然收到以下错误:
^{pr2}$似乎引发了cpp错误,而不是python错误。(我从源代码处编译了opencv,这是另一个项目需要的)
也可以捕捉这些错误吗?
或者在python中有没有其他方法来检查损坏的视频文件?
或者问题在于我自己编译了openCV,而不仅仅是安装了python-cv2?在
欢迎任何帮助或建议!在
测试应该很简单:只需使用release version运行脚本。在
由于您能够自己编译OpenCV,所以您可能有机会找出一个#define
来控制错误行为。我有一个快速的浏览,但这是一个相当涉及“新手”,所以我只能给一些链接到文档和源代码,你可以开始你的搜索:cap_gstreamer.cpp#L890调用包装^{} 的宏^{} (source)。在
甚至可能有库使用的环境变量或标志可以实现抑制这些错误(无需重新编译)。在
但是既然你已经在编译了,当然你可以尝试“黑客”源代码来忽略错误。在
您可能可以在http://answers.opencv.org/questions/找到实际帮助,甚至可以从开发人员那里获得帮助。在
对不起,我看错问题了。我通过
pip3.exe install opencv-python
(see PyPi)安装了OpenCV,官方下载只是提供了一个zip文件,没有明显的Python使用说明。在简单地测试^{} 似乎可以工作:
文件不存在:
^{pr2}$零字节文件:
有效文件
请参阅关于Errors的Python教程,了解如何处理异常并编写自己的异常。在
为了抑制错误消息,check out可能会穿透上面的部分,或者它们可以被重定向(管道到任何地方)。在
您可以尝试找到一个外部程序,该程序有一个检查选项,但不实际播放该文件(可能是VLC,ffmpeg,…)并从Python运行并与其通信(例如
subprocess
)。在Python的API文档:cv2.VideoCapture()
相关问题 更多 >
编程相关推荐