如何从 OpenCV 4
中的 VideoCapture
对象中检索四字符编解码器代码?当我尝试检查它时,我得到了一个 float :
import cv2
movie_name = 'fubar.mp4'
movie = cv2.VideoCapture(movie_path)
codec_code = movie.get(cv2.CAP_PROP_FOURCC)
print(codec_code)
这会打印出类似于 828601953.0
的内容。有很多关于如何创建编解码器代码的线程,但我还没有找到任何关于如何从 Python 中的任意 VideoCapture
对象中提取和读取一个。
我知道文件的名称是信息性的 (mp4
) 但它并没有真正指定我想要的确切的四字符编码(例如,如果我想重新保存为经过一些处理后的新电影,或者只是将代码作为元数据显示给用户)。
相关话题
有一个关于如何在 C++ 中执行此操作的线程,如果任何人都可以转换为 Python,那将是我想的答案:
Qt or OpenCV: print out the codec of a video file
最佳答案
试试这个:
hex(int(828601953.0))
打印:
'0x31637661'
现在执行 man ascii
获取 ASCII 表并查找十六进制:
31 = 1
63 = c
76 = v
61 = a
所以你的 FOURCC 是 avc1
。
不确定 Python 中是否有更好的方法,但这似乎没问题:
h = int(828601953.0)
chr(h&0xff) + chr((h>>8)&0xff) + chr((h>>16)&0xff) + chr((h>>24)&0xff)
打印:
'avc1'
关于python-3.x - 如何在 OpenCV 中获取 VideoCapture 对象的 4 字符编解码器代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61659346/