拆分音频 MP3 文件 [关闭]
Posted
技术标签:
【中文标题】拆分音频 MP3 文件 [关闭]【英文标题】:Splitting an audio MP3 file [closed] 【发布时间】:2014-01-31 22:15:10 【问题描述】:我想使用 NodeJS 将音频文件分割成更小的部分。然后我想将较小的部分保留为单独的音频文件。谁能推荐一种计算时间相对较短的可行方法?
【问题讨论】:
我要求解决在节点中拆分mp3文件的问题,我不是要求推荐的工具。 你能解释一下这个负面观点吗? 很可能是因为这个问题是subject of a topic on Meta - 通常它会将帖子的注意力吸引到很多人,这可能会导致很多赞成/反对票。此外,您的问题可能已关闭,因为它显示您正在寻找特定模块来执行此操作。 @Qantas94Heavy 谢谢,我不同意结束我的问题的动机。我一直在寻找解决问题的方法。我对模块发表了评论,但这个问题的目的是找到一种在 Node 中拆分 mp3 文件的方法。 【参考方案1】:您可能会使用 ffmpeg。它是基于命令行的,这很好,因为它可以访问,但是子进程有时会死掉。这是一个从命令行调用中抽象出 ffmpeg 使用的节点接口:https://npmjs.org/package/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
:输入文件为long.mp3
-acodec
:使用音频编解码器
copy
: 我们正在复制
-ss
:开始时间
-t
: 长度
最后是输出文件名
要处理潜在的超时/挂起进程,您应该“重试”并提供超时。不确定错误回调的效果如何。那就是他们在挂起的进程上适当地失败了。
【讨论】:
我之前读过关于 ffmpeg 的文章,但是我正在使用 modules.io 来部署我的应用程序,我不确定我是否可以使用 ffmpeg 命令行,因为我需要在使用之前安装它。 @jvrdelafuente 也许npmjs.org/package/ffmpeg-bin 会起作用。您可能只需将其添加为依赖项而不做任何其他工作即可逃脱。 我无法尝试,因为我在 Windows 上工作,我不确定女巫操作系统是否正在使用模数.io。我将尝试直接在模数上执行。你能举一个使用的例子吗?因为我不确定如何将 ffmpeg 库与 ffmpeg-bin 混合使用。 @jvrdelafuente 您可以获取适用于 Windows 的 ffmpeg 二进制文件,将它们放入 git repo 并将该 repo 包含在 package.json 中。你也可以把 mac、linux 等二进制文件放在那里 这个周末我会试试你的解决方案。谢谢。【参考方案2】:您也许可以使用node-lame 将 mp3 解码为原始 PCM,然后直接拆分数据...我不能承认自己是音频格式专家,但我的假设是 PCM 是相当幼稚的格式,没有太多的位旋转,所以简单地计算出应该在第一部分与第二部分的文件百分比,然后切割那里应该给你两位可以重新的数据- 使用相同的模块编码回 mp3。
如果 mp3 是恒定比特率的,那么您可以直接使用 mp3 文件做同样的事情。我记得在 Napster 和 Kazaa 之流的狂野西部时代,我会在中途中断下载,并且我可以毫无问题地听一半的歌曲。我不知道完全按照您想要的方式工作的可能性有多大,但值得一试。
【讨论】:
我想根据两次分割一首歌。开始时间,结束时间。可以用你的方法来达到这个目的吗?你能举个例子吗?我不确定,如果我理解你的话。 我不知道 node-lame 是否可以让您访问歌曲的实际运行时间,但假设您提前知道歌曲正好 3 分钟长,并且您想要将歌曲分为前两分钟和最后一分钟。假设它是一个恒定比特率的 mp3,您可以直接拆分它,无需解码。巧合的是,您看到该文件正好是 3 兆。您可以将文件读入内存,抓取文件的前两个兆并保存,然后抓取文件的最后一个兆并保存。从而通过拆分文件来拆分歌曲。【参考方案3】:我玩过 SoX - 一个用于操作音频的命令行工具。确保从 UNIX 中的源代码构建它以获得 MP3 支持。您正在寻找的命令将是 trim。
这是官方文档 - http://sox.sourceforge.net/sox.html
【讨论】:
以上是关于拆分音频 MP3 文件 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章