python获取音频文件时长_python – 获取.wav文件长度或持续时间

  • Post author:
  • Post category:python


持续时间等于帧数除以帧率(每秒帧数):

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)

关于@edwards的评论,这里有一些代码来产生一个2声道的波形文件:

import math

import wave

import struct

FILENAME = “/tmp/test.wav”

freq = 440.0

data_size = 40000

frate = 1000.0

amp = 64000.0

nchannels = 2

sampwidth = 2

framerate = int(frate)

nframes = data_size

comptype = “NONE”

compname = “not compressed”

data = [(math.sin(2 * math.pi * freq * (x / frate)),

math.cos(2 * math.pi * freq * (x / frate))) for x in range(data_size)]

try:

wav_file = wave.open(FILENAME, ‘w’)

wav_file.setparams(

(nchannels, sampwidth, framerate, nframes, comptype, compname))

for values in data:

for v in values:

wav_file.writeframes(struct.pack(‘h’, int(v * amp / 2)))

finally:

wav_file.close()

如果您在音频播放器中播放结果文件,您会发现持续时间为40秒。如果您运行上面的代码,还会计算持续时间为40秒。所以我相信帧的数量不受频道数量的影响,上面的公式是正确的。



版权声明:本文为weixin_36170641原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。