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

Posted 梦想橡皮擦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python读取视频文件大小,码率,帧率,以及通过码率计算文件大小与流量相关的知识,希望对你有一定的参考价值。

实操背景

本篇博客将通过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 是文件流数据,包括视频与音频。
使用比特率计算出来的文件大小与直接读取文件大小差异不大,该形式可以用于计算用户流量的使用。

记录时间

2022年度 Flag,写作的 566 / 1024 篇。
可以关注我,点赞我、评论我、收藏我啦。

更多精彩


👇👇👇扫码加入【78技术人】~ Python 事业部👇👇👇

以上是关于python读取视频文件大小,码率,帧率,以及通过码率计算文件大小与流量的主要内容,如果未能解决你的问题,请参考以下文章

视频分辨率、帧率、码率

FFmpeg基础:音视频中的那些核心参数

码率、帧率是啥?解析视频码率、帧率、分辨率的关系

帧率与码率的概念

I帧,P帧,B帧,视频码率,帧率和分辨率 区别和理解

FFmpegFFmpeg 相关术语简介 二