为解码音频数据(WebAudio API)定义“有效的mp3块”
Define 'valid mp3 chunk' for decodeAudioData (WebAudio API)
我正在尝试使用decodeAudioData在javascript中解码和播放较大mp3文件的初始部分。我的第一个粗略方法是从mp3的开头切下一些字节,并将它们提供给解码AudioData。毫不奇怪,这失败了。
经过一番挖掘,decodeAudioData似乎只能处理Fair Dinkum Thinkum记录的"有效mp3块"。
但是,没有澄清有效mp3块的结构(上述的作者没有对此进行讨论(。我知道那里存在各种 mp3 拆分器,但我想以编程方式解决这个问题。(我正在尝试在服务器端使用 nodejs 实现一种"穷人的流媒体"(。
那么,在 mp3 帧标题上拆分就足够了还是我需要做更多?(也许通过在末尾附加一些数据来"关闭"每个块?"字节库"怎么样?这会导致问题吗?作为记录,我目前正在使用128kbps cbr mp3。这会以任何方式简化流程吗?
任何关于解码音频数据期望作为有效数据的信息将不胜感激。
谢谢。
PS:我意识到这可能是对Fair Dinkum Thinkum帖子的澄清请求,但我的低声誉使我无法发表评论。所以我看不出还能怎么做,只能提出一个新问题。再次感谢。
经过更多 decodeAudioData 实验(在 Chrome 上(,这是我发现的:
- 只要在 mp3
- 帧边界上拆分任何初始 mp3 块,它就会成功解码。发现边界可能并不总是微不足道的(例如,涉及解析 mp3 标头(,因为即使是恒定比特率 mp3 也并不总是包含恒定大小的帧。例如,128kbps mp3 文件包含 417 字节帧和 418 字节帧。(某些帧包含一个额外的字节作为填充(。
- 任意 mp3 块不能保证是可解码的,即使在"两侧"的精确帧边界上拆分也是如此。可以解码某些此类块,但其他块会导致解码音频数据引发错误。我猜这与 mp3 位存储库有关,它在 mp3 帧之间创建了依赖关系。
如果您将文件拆分为以有效的 MP3 标头开头的片段(在字节边界上对齐的 12 位"1":FF Fx(,您很可能会没事。
相关文章:
- Javascript-循环通过有效URL的数组's
- 在JavaScript中使用date.parse时,包含有效日期的内容
- Javascript 正则表达式 - 限制有效字符的数量
- 具有JSON有效负载的Crossrider ajax帖子请求在Rails后端中无法正确接收
- 这是在 JavaScript 中检查有效日期的好方法吗?
- 仅包含有效字符的字符串,不带正则表达式
- 带有有效负载的Firefox插件sdk请求模块POST方法
- 有效域名的JavaScript正则表达式
- 对要用作html有效路径的路径进行编码的最佳方式“;id”;或“;name”;标签
- 使用JQUery检查字符串的图像url和存在性(如果有效)的真正方法是什么
- toExponential()仅适用于具有有效小数的大数字
- 最有效:不同的功能/一个功能有案例
- JSON数组-多个有效答案的可能性
- JSON和JavaScript对象字面量中有效名称的区别
- XMLHttpRequest:以XML和图像作为有效负载的多部分/相关POST
- 有效url的正则表达式
- 在javascript或php中创建重复数组的最有效(紧凑)的方式
- 一个更有效/性能的方式来添加元素和排序数组
- 打开一个字符串为有效URL的页面
- 我的代码中的Var没有't有效.我的代码中的