python-3.x - 如何在 OpenCV 中获取 VideoCapture 对象的 4 字符编解码器代码?

标签 python-3.x opencv

如何从 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/

相关文章:

python - 如何从 python 中的 steamID 获取 steamid 64

python - 使用 PyQt 根据角度裁剪图像

c# - 创建轮廓时,谁应该关心 MemStorage 的重新分配?

c++ - 未处理的异常 Microsoft C++ 异常:cv::Exception at memory location

image - 如何在JavaCV中将png透明层更改为白色

c++ - 使用 argv 读取图像

python - 没有 tf.keras.backend 的 lambda 层函数定义(Python Keras 包)

python-3.x - 数组的列求和 - 两种方法,两种不同的结果

python - 如何使用带有 python 的 Selenium 下载 HTML 网页?

opencv - cvReprojectImageTo3D - 从 2d 图像问题进行 3d 建模-