4. 视频属性获取

任务目标

打开指定视频文件,读取并打印其帧率(FPS)、分辨率(宽×高)、总帧数、时长等核心属性,验证OpenCV视频读取模块的基本用法。

环境依赖

Python 3.7+,OpenCV库(opencv-python)。安装命令:pip install opencv-python

关键完整代码

import cv2

video_path = "sample.mp4"  # 请替换为实际视频文件路径

# 打开视频文件
cap = cv2.VideoCapture(video_path)
if not cap.isOpened():
    print(f"错误:无法打开视频文件 {video_path}")
    exit(1)

# 获取视频属性
fps = cap.get(cv2.CAP_PROP_FPS)           # 帧率(帧/秒)
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))   # 宽度(像素)
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 高度(像素)
total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))  # 总帧数
codec = int(cap.get(cv2.CAP_PROP_FOURCC))  # 编码格式

# 计算时长(秒)
duration = total_frames / fps if fps > 0 else 0

# 打印属性信息
print(f"视频文件: {video_path}")
print(f"帧率 (FPS): {fps:.2f}")
print(f"分辨率: {width} x {height}")
print(f"总帧数: {total_frames}")
print(f"时长: {duration:.2f} 秒")
print(f"编码格式: {chr(codec & 0xFF)}{chr((codec >> 8) & 0xFF)}{chr((codec >> 16) & 0xFF)}{chr((codec >> 24) & 0xFF)}")

# 释放资源
cap.release()

运行方式

  1. 将上述代码保存为 video_properties.py。
  2. 将 video_path 变量改为本地实际存在的视频文件路径。
  3. 在终端执行:python video_properties.py

验证方法

程序正常执行后,终端会依次输出视频的帧率、分辨率、总帧数、时长和编码格式。判定通过的依据:

  • 程序无报错退出,且打印的帧率、分辨率与视频文件的实际属性一致(可用系统播放器或文件属性查看核对)。
  • 若视频文件路径错误或文件损坏,程序会打印“错误:无法打开视频文件”并退出,此时应检查路径是否正确。

常见问题

  • 总帧数返回0:部分视频格式(如某些MP4)在未解码时无法获取准确帧数,可尝试先读取一帧后再查询,或改用其他视频文件测试。
  • FPS为0:视频文件本身缺少帧率元数据时会出现此情况,属于文件问题而非代码问题。