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

news/2025/10/2 9:43:32/文章来源:https://www.cnblogs.com/Arthurian/p/19106793

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.mzph.cn/news/924760.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iis5.1建网站php培训机构企业做网站

炮兵问题的优化,设立逻辑数组 蛮力法设计思想 有策略地穷举 验证 制定穷举策略避免重复 简单来说,就是列举问题所有可能的解,然后去看看是否满足题目要求,是一种逆向解题方式。(我也不知道答案是什么,…

网站建设wix帝国cms能做手机网站吗

1、拷贝构造函数 1.1 什么是拷贝构造函数 拷贝构造函数是一种构造函数,它的功能是创建新对象。也就是说对象还没生成,这时利用另一个对象的拷贝来生成新的对象。 class MyDemo { public:// 默认构造函数MyDemo(){}// 拷贝构造函数MyDemo(const MyDemo…

做网站必须认证吗武夷山网站推广服务

为缓解民生山西认证压力,提高认证效率与认证率,山西省社保局推出“老来网”认证手机app,请未认证人员以及民生山西无法认证人员,采用此认证方式。附:民生山西APP认证流程老来网APP具体操作流程如下:一、 老…

负载均衡式的在线OJ项目编写(七) - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Arduino-Yun-物联网指南-全-

Arduino Yun 物联网指南(全)原文:zh.annas-archive.org/md5/5adfde3977d9c1890a46c10dfc85e6f2 译者:飞龙 协议:CC BY-NC-SA 4.0前言 物联网(IoT)是科技界的一个增长话题,越来越多的使用众筹活动资助的硬件项目…

深入解析:【笔记】在WPF中Binding里的详细功能介绍

深入解析:【笔记】在WPF中Binding里的详细功能介绍2025-10-02 09:32 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; disp…

2025雕塑厂家TOP企业品牌推荐排行榜,婚庆泡沫雕塑,玻璃钢,城市地标不锈钢,校园筑铜,道具,文旅,婚礼堂泡沫,直播间实景泡沫,水泥景观,商业美陈发光雕塑公司推荐!

当前雕塑行业在发展过程中,面临着多重亟待解决的问题。从成本层面来看,部分企业因存在中间商环节,导致产品价格虚高,客户难以获得高性价比的雕塑产品;在定制能力上,一些厂家受限于设备水平和专业团队配置,无法满…

Code--Blocks-和-C---应用开发-全-

Code::Blocks 和 C++ 应用开发(全)原文:zh.annas-archive.org/md5/D136533EB1CB1D754CE9EE199A478703 译者:飞龙 协议:CC BY-NC-SA 4.0前言 《使用 Code::Blocks 进行 C++开发》是一本简洁实用的应用程序开发指南…

做网站网上接单如何引流客源最快的方法

要设计出用户喜欢的界面,你可以考虑以下几个方面: 用户研究:首先要了解用户的需求和偏好。你可以通过用户调研、用户访谈和数据分析来获取这些信息。了解用户的行为模式、喜好和痛点,有助于设计出更吸引人的界面。 直观的布局&am…

VMware Service某些服务关闭导致虚拟机开机无法获取IP地址

现象: windows下运行着vmware,有一天发现所有虚拟机启动后全部没了IP地址,设置的虚拟机网络为NAT模式。 原因: 应该不是虚拟机的问题,此刻想到前些时候由于windows电脑卡顿, 一股脑关闭了了很多自启动的服务,问…

2025中国无缝钢管厂家 TOP 品牌权威推荐,SA106 无缝钢管,A106B 无缝钢管,SA53B 无缝钢管精选无缝钢管工厂

在无缝钢管行业,随着市场需求的不断增长,各类供货厂家层出不穷,但也带来了诸多问题。部分厂家为追求利润,降低生产标准,导致产品质量参差不齐,存在尺寸偏差、材质不达标等情况,给下游企业的生产安全和项目质量埋…

正能量网站地址链接免费燕郊医疗网站建设

【优选生产报工系统:数据分析、产品管理与基础数据登录的关键选择要素】 在快速变化的制造业环境中,生产报工系统的重要性不言而喻。它不仅仅是一种记录工时和监控生产进度的工具,更是一种能够实现数据驱动决策、优化产品管理和确保基础数据…

总结Vue.js等成功项目的生态建设经验 - 实践

总结Vue.js等成功项目的生态建设经验 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &quo…

完整教程:Java EE初阶启程记03---Thread类及常见方法

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

在AI技术唾手可得的时代,挖掘用户真实需求成为产品成功的关键——某知名设备电量监控工具需求探索

本文基于某知名设备电量监控工具的文档和用户反馈,深入分析其核心功能和应用场景,并重点挖掘用户提出的新功能需求,为产品迭代提供有价值的参考方向。内容描述核心功能定位:该项目是一款专注于在Mac系统上监控和管…

岐山网站开发广州花都区网站建设

或按照S5PV210学习秩序。我们首先解决的关键问题。TQ335x有六个用户按钮,每个上、下、剩下、对、Enter和ESC。我想开始学习S5PV210当同一,写输入子系统驱动器的关键问题要解决,但浏览driver/input/keyboardgpio-keys.c,大体上看下…

wordpress 网站显示加载时长山东建设厅官方网站二建报名

vue创建完项目以后如果报parsing error no babel config file。。。这样的错误的话,关闭项目,用vscode进入项目中打开项目就可以解决了。 1 代码保存的时候会自动将单引号报错为双引号 导致eslint报错的问题, 解决思路: 在项目根…

网站设计用什么软件做的抚州律师网站建设

Date.parse() 方法解析一个表示某个日期的字符串,并返回从1970-1-1 00:00:00 UTC 到该日期对象(该日期对象的UTC时间)的毫秒数,如果该字符串无法识别,或者一些情况下,包含了不合法的日期数值(如…

2025 年润滑脂厂家 TOP 企业品牌推荐排行榜,道达尔润滑脂,工业润滑脂,合成润滑脂,高温润滑脂,轴承润滑脂推荐这十家公司!

在当前工业生产领域,润滑脂作为保障设备稳定运行的关键耗材,其品质与供应服务的重要性日益凸显。然而,市场上润滑脂品牌数量众多,产品质量参差不齐,给企业采购带来诸多困扰。部分品牌存在产品参数不达标、供应链不…

2025切割机厂家TOP企业品牌推荐排行榜,五轴水刀,大理石水刀,全自动水刀,高压水刀,手持式水刀,高压水刀,大理石水刀,便携式水刀切割机公司推荐!

在当前制造业快速发展的背景下,切割机作为关键加工设备,其市场需求持续攀升,但行业也面临诸多亟待解决的问题。一方面,市场上切割机品牌数量众多,产品质量参差不齐,部分厂家为追求短期利益,在生产过程中降低标准…