python 获取音频长度
最近做一个项目,前端由于兼容性问题,无法获取正在播放的音频时长,所以只好由后端返回音频时顺便把音频长度一起返回给前端。
使用的是 eyeD3,python2.7。
首先安装eyeD3
pip install eyeD3==0.8.10
然后
import os
import eyed3
def get_voice_time_secs(file_data, file_name):
"""
获取音频文件时长
:param file_data 文件的二进制流
:param file_name 文件名
"""
# 先把文件保存在本地,我试过很多包,都需要先把文件保存在本地后才能获取音频长度,初步猜测是因为这些包的代码读取的是文件本地的信息
with open(file_name, 'w+') as f:
f.write(file_data)
# 加载本地文件
voice_file = eyed3.load(file_name)
# 获取音频时长
secs = int(voice_file.info.time_secs)
# 删除本地文件
os.remove(file_name)
return secs
eyed3里还有很多其他信息
没有仔细去研究,有兴趣可以看官方文档https://eyed3.readthedocs.io/en/latest/