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()
运行方式
- 将上述代码保存为
video_properties.py。 - 将
video_path变量改为本地实际存在的视频文件路径。 - 在终端执行:
python video_properties.py
验证方法
程序正常执行后,终端会依次输出视频的帧率、分辨率、总帧数、时长和编码格式。判定通过的依据:
- 程序无报错退出,且打印的帧率、分辨率与视频文件的实际属性一致(可用系统播放器或文件属性查看核对)。
- 若视频文件路径错误或文件损坏,程序会打印“错误:无法打开视频文件”并退出,此时应检查路径是否正确。
常见问题
- 总帧数返回0:部分视频格式(如某些MP4)在未解码时无法获取准确帧数,可尝试先读取一帧后再查询,或改用其他视频文件测试。
- FPS为0:视频文件本身缺少帧率元数据时会出现此情况,属于文件问题而非代码问题。