gpt4 book ai didi

javascript - 为 decodeAudioData (WebAudio API) 定义 'valid mp3 chunk'

转载 作者:可可西里 更新时间:2023-11-01 01:52:32 26 4
gpt4 key购买 nike

我正在尝试使用 decodeAudioData 在 javascript 中解码和播放较大的 mp3 文件的初始部分。我的第一个粗略的方法是从 mp3 的开头切下一些字节并将它们提供给 decodeAudioData。毫不奇怪,这失败了。

经过一些挖掘后,decodeAudioData 似乎只能与 Fair Dinkum Thinkum 记录的“有效 mp3 block ”一起使用, here .

然而,没有关于有效 mp3 block 结构的说明(上述作者没有深入探讨)。我知道那里存在各种 mp3 分离器,但我想以编程方式处理这个问题。 (我正在尝试在服务器端使用 nodejs 实现一种“穷人的流媒体”)。

那么,拆分 mp3 帧头就足够了吗,还是我需要做更多? (也许通过在末尾附加一些数据来“关闭”每个 block ?)“字节库”怎么样?这会引起问题吗?作为记录,我目前正在使用 128kbps cbr mp3。这会以任何方式简化流程吗?

如能提供有关 decodeAudioData 期望的有效数据的任何信息,我们将不胜感激。

谢谢。

PS:我意识到这可能是对 Fair Dinkum Thinkum 的 post 的澄清请求。但我的低名声使我无法发表评论。因此,除了提出一个新问题之外,我看不出还能怎么做。再次感谢。

最佳答案

在对 decodeAudioData(在 Chrome 上)进行更多实验后,这是我发现的:

  • 任何初始 mp3 block 只要在 mp3 帧边界上被分割,就会被成功解码。找到边界可能并不总是微不足道的(例如涉及解析 mp3 header ),因为即使是恒定比特率的 mp3 也不总是包含恒定大小的帧。例如,128kbps 的 mp3 文件包含 417 字节的帧和 418 字节的帧。 (一些帧包含一个额外的字节作为填充)。
  • 任意 mp3 block 保证可解码,即使在“两侧”的精确帧边界上分割也是如此。这种类型的某些 block 可以解码,但其他 block 会导致 decodeAudioData 抛出错误。我猜这与 mp3 bit reservoir 有关这会在 mp3 帧之间创建依赖关系。

关于javascript - 为 decodeAudioData (WebAudio API) 定义 'valid mp3 chunk',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10470742/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com