zoukankan      html  css  js  c++  java
  • 音频处理

    1.将不同音频文件格式进行转换的代码
    import subprocess[subprocess是python中新增的一个模块,它允许你生成新的进程,连接到它们的input/output/error管道,并获取它们的返回状态码]
    infile = 'E:兼职caoencaoen_jx_1_20_5.m4a' #要进行转换的音频文件
    outfile = 'E:兼职caoen_jx_1_20_5.wav' #生成的音频文件
    subprocess.call(['ffmpeg', '-i', infile, outfile])[这个方法的作用是执行一些命令行的命令,例如sh xxx.sh,java -jar xxx.jar等]会开启一个子进程去执行,并且等待子进程结束才继续执行其他的,使用
    起来非常方便,就是需要注意一些小细节]

    参数
    -i “文件的名称” (输入文件是和ffmpeg在同一目录下的文件,可以自己加路径,改名字)


    2.读取文件中的音频文件并进行MD5值,查看音频文件是否内容一样

    import os
    import wave
    import hashlib

    filepath = "E:FFOutput" # 添加路径
    filename = os.listdir(filepath) # 得到文件夹下的所有文件名称
    list = [] #将获取的md5值依次放入到列表中
    Aname = [] #将从文件路径下获取的文件名称和路径依次和md5值相对应的放在一起
    for file in filename:
    a = filepath + "\"+file #将路径和文件名称拼接在一起
    Aname.append(a)
    f = wave.open(a,"rb") #使用wave.open 打开wav文件
    params = f.getparams()
    nchannels, sampwidth, framerate, nframes = params[:4]
    # 声道数 量化位数 采样频率 采样点数
    # print(nchannels)
    # print(sampwidth)
    # print(framerate)
    # print(nframes)
    str_data = f.readframes(nframes) #读取音频,字符串格式也有的解释为读取波形数据
    #str_data会返回一段字节
    # m = hashlib.new('md5')
    m = hashlib.md5() #c创建MD5对象
    m.update(str_data) #传入需要加密的字符串进行MD5加密
    b = m.hexdigest() #获取到需要的经过加密的MD5字符串
    list.append(b)
    c = len(list)

    for i in range(0,c):
    if list[i] in list[i+1:]:
    print(Aname[i])
    f.close()
    print("程序终止")

    3.计算音频的时间长度

     import wave

    import contextlib

    fname = '/tmp/test.wav'

    with contextlib.closing(wave.open(fname,'r')) as f:

        frames = f.getnframes()
        rate = f.getframerate()
        duration = frames / float(rate)
        print(duration)
  • 相关阅读:
    7多态与异常处理的课上作业
    软工概论第十五周总结
    构建之法阅读笔记之三
    小组项目冲刺第六天的个人总结
    书店促销
    小组项目冲刺第五天的个人总结
    找水王
    软工概论第十四周总结
    动态规划——买书问题
    小组项目冲刺第四天的个人总结
  • 原文地址:https://www.cnblogs.com/yr-number1/p/9892546.html
Copyright © 2011-2022 走看看