Javascript 拆分音频MP3文件

Javascript 拆分音频MP3文件,javascript,node.js,audio,mp3,Javascript,Node.js,Audio,Mp3,我想用NodeJS分割一首歌。我一直在寻找一个模块,可以处理音频文件,但我找不到任何为此目的。如何使用NodeJS分割MP3文件?您可能会使用ffmpeg。它是基于命令行的,这很好,因为它是可访问的,但子进程有时可能会消亡。下面是一个节点接口,它将ffmpeg的使用从命令行调用中抽象出来: 命令行中的最终命令可能如下所示: ffmpeg -i long.mp3 -acodec copy -ss 00:00:00 -t 00:30:00 half1.mp3 ffmpeg -i long.mp3 -

我想用NodeJS分割一首歌。我一直在寻找一个模块,可以处理音频文件,但我找不到任何为此目的。如何使用NodeJS分割MP3文件?

您可能会使用ffmpeg。它是基于命令行的,这很好,因为它是可访问的,但子进程有时可能会消亡。下面是一个节点接口,它将ffmpeg的使用从命令行调用中抽象出来:

命令行中的最终命令可能如下所示:

ffmpeg -i long.mp3 -acodec copy -ss 00:00:00 -t 00:30:00 half1.mp3
ffmpeg -i long.mp3 -acodec copy -ss 00:30:00 -t 00:30:00 half2.mp3
此命令说明:

  • -i
    :输入文件
    长。mp3
  • -acodec
    :使用音频编解码器
  • 复制
    :我们正在复制
  • -ss
    :开始时间
  • -t
    :长度
  • 最后是输出文件名
要处理可能超时/挂起的进程,您应该“重试”并提供超时。不确定错误回调的工作情况。也就是说,它们在挂起的进程上是否会相应地失败。

您可以使用将mp3解码为原始PCM,然后直接分割数据。。。我不能承认自己是音频格式方面的专家,但我的假设是PCM是一种相当幼稚的格式,没有太多的比特旋转,因此只需计算出第一节与第二节中文件的百分比,然后,在那里剪切应该会给你两位数据,你可以使用相同的模块重新编码成MP3


如果mp3是恒定的比特率,那么您就可以直接使用mp3文件进行相同的操作。我记得在Napster和Kazaa以及他们类似的西部荒野时代,我会在下载过程中中断下载,这样我就可以毫无疑问地听一半的歌曲了。我不知道这样做的可能性有多大,但值得一试。

我已经使用过SoX——一种用于处理音频的命令行工具。确保在UNIX中从源代码构建它以获得MP3支持。您要查找的命令将是trim


这是官方文档-

我以前读过ffmpeg,但我正在使用module.io部署我的应用程序,我不确定我是否可以使用ffmpeg命令行,因为我需要在使用之前安装它。@jvrdelafuent可能会起作用。您可能可以将其作为依赖项添加,而不做任何其他工作。我不能尝试这样做,因为我正在windows上工作,并且我不确定witch Operating system是否使用module.io。我将尝试直接在模块上执行它。你能举个例子吗?因为我不确定如何将ffmpeg库与ffmpeg bin混合使用。@jvrdelafuent您可以获取windows的ffmpeg二进制文件,将它们放入git repo中,并将该repo包含在package.json中。你也可以把mac、linux等二进制文件扔进去,我这个周末会试试你的解决方案。谢谢。我想把一首歌分成两段。开始时间和结束时间。是否可以使用您的方法来实现此目标?你能举个例子吗?我不确定,我是否理解您的意思。我不知道node lame是否允许您访问歌曲的实际运行时间,但假设您提前知道歌曲的长度正好为3分钟,您希望将歌曲分为前两分钟和最后一分钟。假设它是一个恒定比特率的mp3,您可以直接拆分它,而无需解码。你看,这个文件恰好是3兆。您可以将文件读入内存,抓取文件的前两个meg并保存它,然后抓取文件的最后一个meg并保存它。因此,通过拆分文件来拆分歌曲。我要求解决在node中拆分mp3文件的问题,我不是要推荐一个工具。你能解释一下这个负面的观点吗?很可能是因为这个问题-,它经常会把一篇文章的注意力吸引到大量的人身上,这可能会导致很多人投赞成票/反对票。另外,您的问题可能已经结束,因为从阅读内容来看,您正在寻找一个特定的模块来完成此任务。@Qantas94非常感谢,我不同意结束我的问题的动机。我在寻找解决问题的方法。我对模块做了评论,但这个问题的目的是找到一种在节点中拆分mp3文件的方法。