我可以使用Javascript将MP3文件拆分成较小的MP3文件吗?

New*_*v90 8 javascript audio html5

我只使用HTML5和Javascript制作游戏.我想拍一个用户选择的MP3文件,并分成几个第二个长块.是否可以在Javascript中执行此操作,如果是这样,怎么做?

And*_*dri 10

如果您需要客户端解决方案,但不受Javascript约束,您可能需要尝试使用Flash.Flex/Actionscript中有许多优秀的编辑解决方案.这是我在快速谷歌之后遇到的一个教程:http://scriptplayground.com/tutorials/as/Play-Sound-Samples-From-One-File-Using-ActionScript-3/

但是,如果您已使用Javascript设置为死机,请尝试执行以下步骤:

  1. 看看这个小提琴:http://jsfiddle.net/andrewodri/PKPD6/.它使用HTML5音频元素播放声音,但有趣的是这个数据被编码为数据URI.无论我们在源头投掷什么编码数据,它都能够发挥作用.

  2. 阅读W3C File API规范,尤其是FileReader接口.至少在ChromeFirefox中支持这一点,虽然我不太确定它有多全面.您会注意到您可以将二进制数据读入数据URI,您可以1)操作为字符串,2)发送到音频元素的src属性.

  3. 这将是最困难的部分......您可以从熟悉MP3文件的结构开始; 即.了解ID3标签的大小以及如何识别它,框架的大小以及切断它们的位置以及文件的关闭方式.这将帮助您提取相关信息,但也找出你可以开始砍伐的地方.我在底部放了一些参考文献.在Actionscript中为此创建了许多类似的代码,这可能是一个很好的参考.

如果您有足够的耐心,可以执行以下操作:

  1. 检索上载文件的二进制数据,并将其转换为数据URI
  2. 确定在base64中编码时ID3标记的大小(base64表示带有1个字符的6位),并将该代码保存到变量
  3. 确定每个音频帧的大小,并构建所有音频帧的数组
  4. 确定文件的关闭方式,并将该代码保存到变量中
  5. 根据需要将它们拼接在一起,前面的ID3,中间的选定框架和文件闭合代码
  6. 将其发送到audio元素的src属性

最后我要说的是,在Flash中执行此操作要容易得多,甚至将其发送到服务器,如其他注释中所述.但如果您有充分理由在Javascript中完成所有操作,那么在大多数现代浏览器中这绝对是可能的.

其他参考文献: