当前位置: 首页 > news >正文

Python获取视频文件的各种属性信息

Python获取视频文件的各种属性信息

很多时候我们需要获取视频文件的属性信息,这里记录一下几种使用Python获取视频文件的属性信息的方法。

方法一:使用opencv库

需要安装opencv库

pip install opencv-python

具体代码如下:

 1 import cv2
 2 
 3 def get_video_info_opencv(video_path):
 4     """
 5     使用OpenCV获取视频信息
 6     """
 7     # 打开视频文件
 8     cap = cv2.VideoCapture(video_path)
 9     
10     if not cap.isOpened():
11         print("无法打开视频文件")
12         return None
13     
14     # 获取视频属性
15     fps = cap.get(cv2.CAP_PROP_FPS)           # 帧率
16     frame_count = cap.get(cv2.CAP_PROP_FRAME_COUNT)  # 总帧数
17     width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))   # 宽度
18     height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 高度
19     duration = frame_count / fps              # 时长(秒)
20     
21     # 关闭视频文件
22     cap.release()
23     
24     return {
25         'fps': fps,
26         'frame_count': frame_count,
27         'width': width,
28         'height': height,
29         'duration': duration,
30         'resolution': f"{width}x{height}"
31     }
32 
33 # 使用示例
34 video_path = "example.mp4"
35 info = get_video_info_opencv(video_path)
36 if info:
37     print(f"帧率: {info['fps']}")
38     print(f"总帧数: {info['frame_count']}")
39     print(f"分辨率: {info['resolution']}")
40     print(f"时长: {info['duration']:.2f} 秒")

 

方法二:使用 moviepy

需要安装moviepy库

pip install moviepy

具体代码如下:

 1 from moviepy.editor import VideoFileClip
 2 
 3 def get_video_info_moviepy(video_path):
 4     """
 5     使用moviepy获取视频信息
 6     """
 7     try:
 8         clip = VideoFileClip(video_path)
 9         
10         info = {
11             'fps': clip.fps,
12             'frame_count': int(clip.duration * clip.fps),
13             'width': clip.size[0],
14             'height': clip.size[1],
15             'duration': clip.duration,
16             'resolution': f"{clip.size[0]}x{clip.size[1]}"
17         }
18         
19         clip.close()
20         return info
21         
22     except Exception as e:
23         print(f"处理视频时出错: {e}")
24         return None
25 
26 # 使用示例
27 video_path = "example.mp4"
28 info = get_video_info_moviepy(video_path)
29 if info:
30     print(f"帧率: {info['fps']}")
31     print(f"总帧数: {info['frame_count']}")
32     print(f"分辨率: {info['resolution']}")
33     print(f"时长: {info['duration']:.2f} 秒")

 

方法三:使用 cv2 和其他库的综合方案

需要安装opencv库

 

pip install opencv-python

 

具体代码如下:

 1 import cv2
 2 import os
 3 
 4 class VideoInfoExtractor:
 5     def __init__(self, video_path):
 6         self.video_path = video_path
 7         self.cap = None
 8         
 9     def __enter__(self):
10         self.cap = cv2.VideoCapture(self.video_path)
11         return self
12         
13     def __exit__(self, exc_type, exc_val, exc_tb):
14         if self.cap:
15             self.cap.release()
16     
17     def get_basic_info(self):
18         """获取基础视频信息"""
19         if not self.cap or not self.cap.isOpened():
20             raise ValueError("无法打开视频文件")
21             
22         # 获取基本属性
23         fps = self.cap.get(cv2.CAP_PROP_FPS)
24         frame_count = self.cap.get(cv2.CAP_PROP_FRAME_COUNT)
25         width = int(self.cap.get(cv2.CAP_PROP_FRAME_WIDTH))
26         height = int(self.cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
27         duration = frame_count / fps if fps > 0 else 0
28         
29         return {
30             'fps': fps,
31             'frame_count': int(frame_count),
32             'width': width,
33             'height': height,
34             'duration': duration,
35             'resolution': f"{width}x{height}",
36             'file_size': os.path.getsize(self.video_path)
37         }
38     
39     def get_detailed_info(self):
40         """获取详细视频信息"""
41         basic_info = self.get_basic_info()
42         
43         # 获取编码信息
44         codec = self.cap.get(cv2.CAP_PROP_CODEC_PIXEL_FORMAT)
45         fourcc = self.cap.get(cv2.CAP_PROP_FOURCC)
46         
47         detailed_info = basic_info.copy()
48         detailed_info.update({
49             'codec': codec,
50             'fourcc': fourcc,
51             'aspect_ratio': f"{basic_info['width']}:{basic_info['height']}"
52         })
53         
54         return detailed_info
55 
56 # 使用示例
57 video_path = "example.mp4"
58 try:
59     with VideoInfoExtractor(video_path) as extractor:
60         info = extractor.get_detailed_info()
61         
62         print("=== 视频基本信息 ===")
63         print(f"文件路径: {video_path}")
64         print(f"分辨率: {info['resolution']}")
65         print(f"帧率: {info['fps']:.2f} FPS")
66         print(f"总帧数: {info['frame_count']}")
67         print(f"时长: {info['duration']:.2f} 秒")
68         print(f"文件大小: {info['file_size'] / (1024*1024):.2f} MB")
69         print(f"宽高比: {info['aspect_ratio']}")
70         
71 except ValueError as e:
72     print(f"错误: {e}")

 

http://www.hskmm.com/?act=detail&tid=22779

相关文章:

  • Arduino-Yun-物联网指南-全-
  • 2025雕塑厂家TOP企业品牌推荐排行榜,婚庆泡沫雕塑,玻璃钢,城市地标不锈钢,校园筑铜,道具,文旅,婚礼堂泡沫,直播间实景泡沫,水泥景观,商业美陈发光雕塑公司推荐!
  • Code--Blocks-和-C---应用开发-全-
  • 深入解析:(27)APS.NET Core8.0 堆栈原理通俗理解
  • VMware Service某些服务关闭导致虚拟机开机无法获取IP地址
  • 2025中国无缝钢管厂家 TOP 品牌权威推荐,SA106 无缝钢管,A106B 无缝钢管,SA53B 无缝钢管精选无缝钢管工厂
  • 在AI技术唾手可得的时代,挖掘用户真实需求成为产品成功的关键——某知名设备电量监控工具需求探索
  • 2025 年润滑脂厂家 TOP 企业品牌推荐排行榜,道达尔润滑脂,工业润滑脂,合成润滑脂,高温润滑脂,轴承润滑脂推荐这十家公司!
  • 2025切割机厂家TOP企业品牌推荐排行榜,五轴水刀,大理石水刀,全自动水刀,高压水刀,手持式水刀,高压水刀,大理石水刀,便携式水刀切割机公司推荐!
  • 二十八、API之《System 类》——与框架交互的“桥梁”
  • 2025橡胶木板材厂家TOP企业品牌推荐排行榜,泰国橡胶木板材,橡胶木免漆板,橡胶木 PET,橡胶木门板,AA 橡胶木,橡胶木指接板公司推荐!
  • 2025润滑油供应商最新权威推荐排行榜:聚焦耐磨润滑油、工业润滑油、鑫美工业润滑油、壳牌润滑油、道达尔润滑油助力企业采购决策
  • 多状态循环泵控件开发
  • 2025活塞杆厂家TOP企业品牌推荐排行榜,精密,不锈钢,调制,超长,油缸,气缸,镀铬,大直径,精细活塞杆推荐这十家公司!
  • 2025房屋鉴定机构服务平台推荐排行榜,房屋安全评估,承载力,工程质量,危房,受损伤,舞台架结构安全鉴定,房屋消防电器安全鉴定评估,火灾后房屋安全鉴定推荐这十家公司!
  • 实用指南:WSL2搭建Hadoop伪分布式环境
  • 3整数规划-分支定界法
  • [apple pencil二代充不上电]
  • 分布式光纤声波振动与AI的深度融合:开启智慧感知新时代 - 指南
  • 2025液压扳手实力厂家推荐榜:精准扭矩与耐用品质专业之选
  • 2025试验机实力厂家品牌公司最新权威推荐榜:精准测试与技术创新标杆之选
  • AI元人文:价值共生体系统——构建人机文明的演进基石——DeeoSeek融合
  • 2025喷涂厂家TOP企业品牌推荐排行榜,喷涂、喷涂设备、 喷涂生产线、喷涂流水线推荐这十家公司!
  • 完整教程:【JAVA】【BUG】经常出现的典型 bug 及解决办法
  • 浅析 AC 自动机
  • 2025百度官网认证作用代理商推荐,北京益百科技通过官网认证,助力企业优化搜索排名,提升用户体验,降低营销成本
  • 读人形机器人28智慧城市2
  • VMware ESXi 9.0.1.0 发布 - 领先的裸机 Hypervisor
  • VMware vSphere 9.0.1.0 发布 - 企业级工作负载平台
  • 《索引实战:结构与场景解析》 - 详解