首页 > 解决方案 > 来自视频文件的 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 文件吗?然而,这是一个视频文件,所以......感谢您的帮助

标签: pythonopencvvideocodecyuv

解决方案


推荐阅读