Python如何对音视频文件进行解析详解

 更新时间:2022年11月17日 12:01:12   作者:盆友圈的小可爱  
在脚本或应用程序中,我们需要执行音频处理任务,下面这篇文章主要给大家介绍了关于Python如何对音视频文件进行解析的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

前言

作为一个学完Python基础知识的测试,终于可以像RD们自己写脚本处理任何场景吧,如何优雅地写出来代码,接下来开启进阶版的Python。

在我们工作中,涉及的多媒体文件相关的测试,总逃不掉要使用工具查看多媒体文件相关的信息,上百次甚至上千次的打开关闭操作,工作是非常低效。

本期,我们一起来实现如何使用Python解析多媒体文件获取信息,一起来涨知识吧~

问题背景

当我们遇到进行多媒体测试,总会遇到各种各样不同编码、后缀、多音轨的多媒体文件。那么问题来,在这个测试过程我们总是打开多媒体文件-查看文件编码等信息,此过程如此往复。在测试一个项目下来,累计打开查看多媒体文件信息至少也有上百次~

  • 在这里补充一下,通常对于多媒体测试来说,常用的分析工具是**MediaInfo**
    • 是一款开源的多媒体分析工具
    • 可以支持多种视频和音频文件格式
    • 支持多种格式查看方式如xml、text、tree等

做测试真是体力活,惰性是提高工作效率的第一次动力,动动脑筋,在网上查找一番Python提供了关于多媒体解析的库pymediainfo库控制MediaInfo工具

2.安装依赖库

2.1 pymediainfo库

Pymediainfo 是专门对多媒体文件进行解析的开源第三方Python库,目前维护作者是Louis Sautier。可以支持Linux、MAC OS和Windows系统。

Pymediainfo 模块中调用mediaInfo工具,解析文件并返回详细信息->空白备注的信息。

2.2 安装pymediainfo库

  • 第三方库,安装直接使用Python提供的pip工具
    • pip install pymediainfo
  • 如果安装遇到下载失败,则可以添加其他服务器资源进行下载。如清华大学源
    • pip install pymediainfo -i https://pypi.tuna.tsinghua.edu.cn/simple

3. 测试解析效果

查看 pymediainfo 库源代码pymediainfo/init.py内容,可以看到pymediainfo主要有两个类:

  • Track:从mediaInfo对象输出指定属性的值
  • Medianfo:解析多媒体文件,获取详细信息

根据官网文档的介绍,简单使用pymediainfo库方法,解析movie1.mp4文件:

from pymediainfo import MediaInfo
media_info = MediaInfo.parse(filename)
print(media_info.to_json())

终端输出非常详细的信息,如下部分打印截图:

我们看到输出的内容是Json格式的,存在两个问题:

  • 数据字段多
  • 数据字段间距拥挤

介于以上问题,对解析的Json数据,要进行格式化处理输出,怎么做到输出形式如mediainfo 软件GUI效果一样呢?

4. 格式化解析信息

我们获取到的media_info信息,怎么格式化输出与GUI界面显示的一样的内容,最直接的思路大概如下:

  • 查看JSON数据内容,多媒体文件信息主要包含三个部分:

    • General:movie、music、picture必有
    • Video:movie必带,music和picture无
    • Audio:movie和music必带,picture无
  • 三种类型的多媒体文件字段内容也不尽相同,其中movie文件字段最多

根据GUI上对每种文件展示详细内容字段,总体是一致的,可以使用map方式,将GUI上展示的字段名和JSON字段建立映射表output_type来存储。

获取到解析信息后,使用for循环将tracks所有属性字段, 根据创建output_type截取字段来进行打印输出到new_file文件中。

在此过程中,当指定的字段值为None时,则进行跳过。

注:mediaInfo GUI界面 text展示的是左对齐,因此可以使用format格式输出

"{key1:[填充字符][对齐方式][宽度]}".format(key1)
# *<40:左对齐,总共40个字符,不够用*填充
# *>40:右对齐,总共40个字符,不够用*填充
# *^40:居中,总共40个字符,不够用*填充

根据以上思路,代码就非常容易实现啦demo代码如下

终端打印效果如下所示:

5. 批量解析操作

回到开头我们面对一堆的多媒体文件需要查看分析详情的时候,大概的解决思路如下:

  • 我们可以继续使用os.path模块获取指定目录下所有多媒体文件列表media_files。
  • 遍历将每个mediafile使用mediainfo方法解析出信息mediainfo.to_json()存储在list中,为什么不每一次解析内容就写入到文件中,原因如下:

    每次解析后频繁打开写入文件操作,消耗系统资源

    对于mediainfo内容还需要进行格式化后内容写入到目标文件中

  • 将统一的格式化内容一一写入到指定文件中,可以为后续查找和分析提供资料

6. 总结

本期,我们在工作遇到要频繁地查看和查找多媒体文件信息,学习到了使用python中第三方库pymediainfo模块便捷快速解析指导的多媒体文件。

根据不同场景和需求,个性化解析出想要的多媒体详细信息,提高我们工作效率,更多的时间学习其他新知识啦~

到此这篇关于Python如何对音视频文件进行解析的文章就介绍到这了,更多相关Python音视频文件解析内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python中map()函数的使用方法示例

    python中map()函数的使用方法示例

    map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。下面这篇文章主要给大家介绍了关于python中map()函数的使用方法,需要的朋友可以参考下
    2017-09-09
  • python 使用pandas计算累积求和的方法

    python 使用pandas计算累积求和的方法

    今天小编就为大家分享一篇python 使用pandas计算累积求和的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • python pygame实现方向键控制小球

    python pygame实现方向键控制小球

    这篇文章主要为大家详细介绍了python pygame实现方向键控制小球,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • python 面向对象三大特征详解

    python 面向对象三大特征详解

    这篇文章主要介绍了python 面向对象三大特征,小编觉得这篇文章讲的不错,感兴趣的朋友一起来阅读下面文章吧
    2021-10-10
  • Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)

    Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)

    这篇文章主要介绍了Python在centos7.6上安装python3.9(默认python版本为2.7.5)的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-10-10
  • python好玩的项目—色情图片识别代码分享

    python好玩的项目—色情图片识别代码分享

    这篇文章主要介绍了python好玩的项目—色情图片识别,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • 使用Python的Flask框架表单插件Flask-WTF实现Web登录验证

    使用Python的Flask框架表单插件Flask-WTF实现Web登录验证

    Flask处理表单除了本身的WTForms包,使用Flask-WTF扩展来增强表单功能也是很多开发者的选择,这里我们就来讲解如何使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
    2016-07-07
  • python语音识别指南终极版(有这一篇足矣)

    python语音识别指南终极版(有这一篇足矣)

    这篇文章主要介绍了python语音识别指南终极版的相关资料,包括语音识别的工作原理及使用代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • windows中python实现自动化部署

    windows中python实现自动化部署

    本文主要介绍了windows中python实现自动化部署,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Python基本数据结构之字典类型dict用法分析

    Python基本数据结构之字典类型dict用法分析

    这篇文章主要介绍了Python基本数据结构之字典类型dict用法,结合实例形式分析了Python字典类型dict概念、原理、定义及基本使用技巧,需要的朋友可以参考下
    2019-06-06

最新评论