当前位置: 首页 > 面试题库 >

获取.wav文件的长度或持续时间

皇甫智明
2023-03-14
问题内容

我正在寻找一种方法来找出python中音频文件(.wav)的持续时间。到目前为止,我看了一下蟒蛇wavemutagenpymediapymad我没能得到wav文件的时间。Pymad给了我持续时间,但不一致。

提前致谢。


问题答案:

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

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通道wave文件的代码

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秒。因此,我相信帧数不受通道数的影响,并且上面的公式是正确的。



 类似资料:
  • 我想获取正在上传到系统中的音频/视频文件的持续时间。早些时候,我使用了,但我想它不再被维护了,因为没有与此兼容的python 3模块。 还有其他轻量级替代品吗? 如果我想写一些自己的东西来完成它,先决条件是什么?

  • 我尝试了许多方法,但没有得到一个mp3文件的确切长度值。 随着电影: 我得到的结果是: 使用诱变剂: 我收到了另一个持续时间值: 使用windows media player打开文件时的实际持续时间值:2m49s 我不知道我的音频文件发生了什么,我测试了音乐网站上的一些文件,仍然得到了正确的值。这是我的音频文件

  • 我需要使用API V3获取YouTube内容长度。我的应用程序在API V3上运行良好,但现在不起作用了。 我发现了一个可行的例子,它确实有效: 学分: Youtube API v3 ,如何获取视频时长? 这将返回类似如下的时间格式。 我怎样才能把这个时间缩短到一个可读的时间呢。比如24:30?

  • 问题内容: 在 不使用外部库的情况下 确定给定mp3文件长度(以秒为单位)的最简单方法是什么?(高度赞赏python来源) 问题答案: 您可以使用pymad。它是一个外部库,但不要落入“此处未发明”陷阱。您不希望使用任何外部库的任何特殊原因? 在这里发现。 - 如果您真的不想使用外部库,请在这里查看并查看他的工作方式。警告:这很复杂。

  • 问题内容: 如何在不创建MediaPlayer实例的情况下获得mp3曲目的持续时间?我只需要在mp3文件列表中显示mp3歌曲的长度,所以我认为我不应该为列表中的每个音轨创建MediaPlayer对象 还有一个: 有时MediaPlayer会返回错误的歌曲持续时间(我认为是错误的,因为这些文件的比特率是动态的)。如何获得正确的歌曲时长? 问题答案: 您可以使用MediaMetadataRetriev

  • 问题内容: 是否有任何PHP函数可以给我MP3持续时间。我看过ID 3的功能,但是在持续时间内我看不到任何东西,除此之外,id3是某种标签,在所有MP3中都不会出现,因此使用它没有任何意义。 问题答案: 这应该为您工作,请注意getduration函数:http ://www.zedwood.com/article/127/php-calculate- duration-of-mp3