【首发】python读取视频文件大小,码率,帧率,以及通过码率计算文件大小与流量

举报
梦想橡皮擦 发表于 2022/02/23 10:28:17 2022/02/23
【摘要】 实操背景本篇博客将通过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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。