【首发】python读取视频文件大小,码率,帧率,以及通过码率计算文件大小与流量
【摘要】 实操背景本篇博客将通过Python获取视频文件的大小,码率,帧率等元数据信息,并提取视频的第一帧作为封面。使用到的模块是 ffmpeg-python ,同时需要提前安装好 ffmpeg 工具,基本使用可以参考python操作ffmpeg,做视频转码【上篇】。模块安装 pip install ffmpeg-python ,模块导入 import ffmpeg 。此时用到的是 ffmpeg 工...
实操背景
本篇博客将通过Python获取视频文件的大小,码率,帧率等元数据信息,并提取视频的第一帧作为封面。
使用到的模块是 ffmpeg-python
,同时需要提前安装好 ffmpeg
工具,基本使用可以参考python操作ffmpeg,做视频转码【上篇】。
模块安装 pip install ffmpeg-python
,模块导入 import ffmpeg
。
此时用到的是 ffmpeg
工具中的 ffprobe.exe
程序(测试环境在 windows 上实施)
如果你使用的是 Linux ,可以使用查找命令检索一下 ffprobe
程序所在位置
find / -name ffprobe
/usr/local/bin/ffprobe
提前准备一个 MP4 文件用于分析,调用属性查看得到的视频信息如下所示。
视频时长,比特率等内容
视频文件大小和相关时间
编码时间
完成的代码如下所示,相关说明已经写在注释中。
import ffmpeg
def get_video_info():
probe = ffmpeg.probe('./测试视频文件.mp4')
print(probe) # 获取视频多媒体文件的信息
format = probe['format']
# print(format)
bit_rate = format['bit_rate']
print(int(bit_rate)) # 单位 bps(每秒字节数)
kbps = int(bit_rate) / 1000
duration = format['duration']
duration = int(float(duration)) # 时长(单位秒)
print(int(format['size'])) # 获取文件大小(单位字节)
print(int(int(probe['streams'][0]['r_frame_rate'].split('/')[0]) / int(
probe['streams'][0]['r_frame_rate'].split('/')[1]))) # 获取帧率
# 通过比特率X时长/8 计算文件大小
file_size = kbps * duration / 8
print(file_size) # 得到文件的大小是 KB
print(file_size / 1024) # 计算得到的数据
print(int(format['size']) / 1024 / 1024) # 读取得到的数据
if __name__ == '__main__':
get_video_info()
其中除帧率外,其它值可以直接读取, streams
是文件流数据,包括视频与音频。
使用比特率计算出来的文件大小与直接读取文件大小差异不大,该形式可以用于计算用户流量的使用。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)