python - 来自视频文件的 Python 4 字符编解码器
问题描述
我做了一个函数来从视频文件中获取不同类型的信息。
import cv2
def getInfo(sourcePath):
video = cv2.VideoCapture(sourcePath)
codec = int(video.get(cv2.CAP_PROP_FOURCC))
codec_ascii = chr(codec&0xFF) + chr((codec>>8)&0xFF) + chr((codec>>16)&0xFF) + chr((codec>>24)&0xFF)
codec_hex = hex(codec)
info = {
"framecount": video.get(cv2.CAP_PROP_FRAME_COUNT),
"fps": video.get(cv2.CAP_PROP_FPS),
"width": int(video.get(cv2.CAP_PROP_FRAME_WIDTH)),
"height": int(video.get(cv2.CAP_PROP_FRAME_HEIGHT)),
"codec": str(video.get(cv2.CAP_PROP_FOURCC)),
"codec hexadecimal" : codec_hex,
"codec ascii" : codec_ascii
}
video.release()
print(info)
return info
getInfo("./video/my_video.mp4")
例如,对于一个 mp4 文件,我得到这个
{'framecount': 2024.0, 'fps': 30.014849243598118, 'width': 1920, 'height': 1080, 'codec': '808596553.0', 'codec hexadecimal': '0x30323449', 'codec ascii': 'I420'}
所以我知道颜色格式是yuv4.2.0坦克到编解码器ascii。但是当我选择 .yuv 视频时,它不起作用,我的函数什么也不返回:
{'framecount': 0.0, 'fps': 0.0, 'width': 0, 'height': 0, 'codec': '0.0', 'codec hexadecimal': '0x0', 'codec ascii': '\x00\x00\x00\x00'}
为什么 ?是因为 cv2 无法处理 .yuv 文件吗?然而,这是一个视频文件,所以......感谢您的帮助
解决方案
推荐阅读
- git - 如何在没有私钥的情况下添加具有 SSH URL 的子模块
- context-free-grammar - 模糊的 CFG 是否有可能转换为 CNF 并变得明确?
- java - API针对不同场景返回不同的对象类型
- nodes - 节点的 Networkx 和 matplotlib 颜色图;不同网络的相同地图
- html - 是否可以将多个视频加载到 HTML 5 视频播放器中并让它们一个接一个地按顺序播放?
- javascript - 如何停止跟踪 AdRoll Pixel?
- python - 在python中完成系列(数据框)
- algorithm - 查找每列具有不同值的子集
- laravel - 如何使用 Laravel 确定用户在线状态/离线状态?
- domain-driven-design - 具有重要不变量的潜在大型集合的 DDD 聚合