文件内音频的时长统计并生成csv文件

目录

一、需求

二、相关库

三、完整代码

四、一些问题


一、需求

请编写 Python 脚本,统计附属压缩文件“wav.zip”中音频的时长,并将统计结果保存在与 “wav.zip”同级目录下,结果文件中音频的时长由高往低的顺序依次排列,A 列为音频文件名称,B 列为 时长(精确到毫秒,时长相同按文件的 MD5 值排序)

二、相关库

  • os
  • librosa
  • hashlib

hanshlib安装时报错,解决办法:更改版本号即可这里用的是0.8.0

pip install hanshlib==0.8.0

  • pandas

三、完整代码

因为作者偷懒所以直接放代码,具体步骤:

  1. 使用os把文件夹内所有的文件名遍历出来
  2. 把文件名拼上路径
  3. 用hashlib给文件生成对应的MD5值
  4. 调用librosa.get_duration来取得音频时长
  5. 用pandas对结果根据时长和MD5值来排序
  6. pandas存储到csv文件里
import os
import librosa
import hashlib
import pandas as pd

file_list = []
data_list = []
def get_duration_mp3_and_wav(file_path):
    # 文件夹路径file_path是文件名os自动遍历的
    file_paths = f'./wav2count/{file_path}'
    md5 = hashlib.md5()
    f = open(file_paths,'rb')
    md5.update(f.read())
    f.close()
    MD5 = md5.hexdigest()
    duration = librosa.get_duration(filename=file_paths)
    data_list.append([file_path,duration,MD5])

# 文件夹路径
for a,s,k in os.walk('./wav2count'):
    file_list.append(k)

for i in file_list[0]:
    get_duration_mp3_and_wav(i)
data = pd.DataFrame(data_list)
datas = data.sort_values([1,2],ascending=False)
# 保存的文件名
datas.to_csv('./wav_result.csv')

文件内音频的时长统计并生成csv文件_第1张图片

 

四、一些问题

我只试过wav文件,mp3文件一个也可以,前提是文件夹里的文件全是要参与的文件,安装库的时候遇到问题简易回退一个大版本0.9.0=>0.8.0实际体验没多大区别。

你可能感兴趣的:(音视频)