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

时间:2011-12-23 22:12:24

标签: javascript html5 audio

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

1 个答案:

答案 0 :(得分: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 specification,尤其是FileReader interface。至少在ChromeFirefox支持这一点,尽管我不太确定它有多全面。你会注意到你能够read the binary data into a data URI,你可以1)操纵一个字符串,2)发送到音频元素的src属性。

  3. 这将是最困难的部分......您可以从熟悉MP3文件的结构开始;即。 understanding how big the ID3 tag is and how to identify it, how big frames are and where you can chop them off, and how the file is closed。这将帮助您提取相关信息,但也找出你可以开始砍伐的地方。我在底部放了一些参考文献。在Actionscript中为此创建了许多类似的代码,这可能是一个很好的参考。

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

    1. 检索上传文件的二进制数据,并将其转换为数据URI
    2. 确定在base64中编码时ID3标记的大小(base64表示带有1个字符的6位),并将该代码保存到变量
    3. 确定每个音频帧的大小,并构建所有音频帧的数组
    4. 确定文件的关闭方式,并将该代码保存到变量中
    5. 根据需要将它们拼接在一起,前面的ID3,中间的选定框架和文件关闭代码
    6. 将其发送到音频元素的src属性
    7. 我最后会说,在Flash中执行此操作会更容易,甚至将其发送到服务器,如其他注释中所述。但如果您有充分理由在Javascript中完成所有操作,那么在大多数现代浏览器中这绝对是可能的。

      其他参考文献: