利用hachoir获取媒体文件元数据

概述

媒体文件(如jpg、mp4、avi等)均内置了大量元数据。Python内置的文件库只能读取少量文件元数据。
某些工具可以获取这些元数据,但是太重量级,效率不高。
如果只是想获取媒体文件元数据,hachoir是一不错的选择。

hachoir是一个二进制数据流查看、编辑工具,支持主流的压缩文件、音频文件、视频文件格式。
hachoir提供了Python API接口和四个命令行工具,命令行工具默认安装在Python的Scripts目录。

  • hachoir-grep: 从二进制文件中查找文本模式
  • hachoir-metadata:获取二进制文件的元数据
  • hachoir-strip: 删除文件元数据
  • hachoir-urwid: 以文本模式显示二进制文件内容

详细文档见https://hachoir.readthedocs.io/en/latest/

安装

pip install hachoir

案例:获取音频的播放时长

from hachoir.metadata import extractMetadata
from hachoir.parser import createParser

def get_metadata(file_path):
    try :
        metadata = extractMetadata(createParser(file_path))
        return metadata
    except:
        print(file_path)


path = r'C:\Users\Administrator\Music\Floricienta - Flores Amarillas.mp3'
metadata = get_metadata(path)
# 输出文本格式的元数据
print(metadata)
# 输出字典格式的元数据
print(metadata.exportDictionary())
# 输出duration元数据
print(metadata.get('duration'))

命令行输出信息:

Metadata:
- Title: Flores Amarillas
- Author: Floricienta
- Album: Cris Morena ¨C Grandes ¨¦xitos
- Album: Cris Morena – Grandes Éxitos
- Duration: 3 min 43 sec 257 ms
- Music genre: Blues
- Track number: 9
- Channel: Joint stereo
- Sample rate: 44.1 kHz
- Bits/sample: 16 bits
- Compression rate: 11.0x
- Bit rate: 128.0 Kbit/sec (constant)
- Format version: MPEG version 1 layer III
- MIME type: audio/mpeg
- Endianness: Big endian
{'Metadata': {'Album': 'Cris Morena – Grandes Éxitos',
              'Author': 'Floricienta',
              'Bit rate': '128.0 Kbit/sec (constant)',
              'Bits/sample': '16 bits',
              'Channel': 'Joint stereo',
              'Compression rate': '11.0x',
              'Duration': '3 min 43 sec 257 ms',
              'Endianness': 'Big endian',
              'Format version': 'MPEG version 1 layer III',
              'MIME type': 'audio/mpeg',
              'Music genre': 'Blues',
              'Sample rate': '44.1 kHz',
              'Title': 'Flores Amarillas',
              'Track number': '9'}}
0:03:43.257000
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值