如何获取 OpenCV 中 VideoCapture 对象的 4 字符编解码器代码?

eri*_*ric 4 opencv python-3.x

如何从VideoCapture中的对象中检索四字符编解码器代码OpenCV 4?当我尝试检查它时,我得到了一个浮动:

import cv2

movie_name = 'fubar.mp4'
movie = cv2.VideoCapture(movie_path)
codec_code =  movie.get(cv2.CAP_PROP_FOURCC)
print(codec_code)
Run Code Online (Sandbox Code Playgroud)

这会打印出类似的内容828601953.0。有很多关于如何创建编解码器代码的线程,但我还没有找到任何关于如何从VideoCapturePython 中的任意对象中提取和读取代码的线程。

我知道文件名信息丰富(mp4),但这并没有真正指定我所追求的确切的四字符编码(例如,如果我想在某些处理后重新保存为新电影,或者只是显示代码作为元数据提供给用户)。

相关主题
有一个关于如何在 C++ 中执行此操作的主题,如果有人可以翻译成 Python,这将是我想的答案:
Qt or OpenCV: print out the codec of a video file

Mar*_*ell 7

尝试这个:

hex(int(828601953.0))
Run Code Online (Sandbox Code Playgroud)

印刷:

'0x31637661'
Run Code Online (Sandbox Code Playgroud)

现在man ascii获取 ASCII 表并查找十六进制:

31 = 1
63 = c
76 = v
61 = a
Run Code Online (Sandbox Code Playgroud)

所以你的 FOURCC 是avc1

不确定 Python 中是否有更好的方法,但这似乎没问题:

h = int(828601953.0)
chr(h&0xff) + chr((h>>8)&0xff) + chr((h>>16)&0xff) + chr((h>>24)&0xff) 
Run Code Online (Sandbox Code Playgroud)

印刷:

'avc1'
Run Code Online (Sandbox Code Playgroud)