将MP3裁剪到前30秒

时间:2020-03-05 18:47:38  来源:igfitidea点击:

原始问题

我希望能够从现有的MP3文件生成一个新的(完全有效)MP3文件,以用作预览-先试后买的样式。新文件应仅包含曲目的前n秒。

现在,我知道我可以在传送文件时在n秒(根据比特率和标头大小计算)"切碎流",但这有点脏,在VBR轨道上是真正的PITA。我希望能够生成正确的MP3文件。

有人有想法吗?

答案

mp3split和ffmpeg都是很好的解决方案。我选择ffmpeg是因为它通常安装在linux服务器上,并且也很容易在Windows上使用。这是一些使用ffmpeg生成预览的更好的命令行参数

  • 在指定的秒数后-t <seconds>
  • -y强制文件覆盖
  • -ab <bitrate>设置比特率,例如-ab 96k
  • -ar <rate Hz>设置采样率,例如-ar 22050 for 22.05kHz
  • -map_meta_data <outfile>:<infile>将轨道元数据从infile复制到outfile

我们可以按照Tim Farley的建议复制原始的轨道设置,而不用设置-ab和-ar:

  • -acodec复制

解决方案

回答

我没有将它用于此特定目的,但我敢打赌ffmpeg可以做到。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

回答

尝试:

ffmpeg -t 30 -i inputfile.mp3 outputfile.mp3

回答

我们可能想尝试Mp3Splt。

我以前在简单包装mp3splt.exe win32进程的Cservice中使用过它。我认为可以在Linux / PHP场景中完成类似的操作。

回答

只是想一想:我们可能想跳过原始歌曲的开头。说,我们可以从歌曲的第三首开始使用30秒的片段。
在某些歌曲中,前30秒并没有告诉我们太多,因为这只是"设置场景"的一部分,例如Pink Floyd的《 Shine On You Crazy Diamond》。

回答

我还建议使用ffmpeg,但是John Boker建议的命令行会有意外的副作用:它将文件重新编码为默认比特率(至少在我这里使用的版本中为64 kb / s)。这可能会使客户对声音文件的质量有错误的印象,并且还需要花费更长的时间。

这是一个可以在不进行代码转换的情况下缩减为30秒的命令行:

ffmpeg -t 30 -i inputfile.mp3 -acodec copy outputfile.mp3

-acodec开关告诉ffmpeg使用不会转码的特殊"复制"编解码器。闪电般快。

注意:该命令已根据Oben Sonne的评论进行了更新

回答

如果我们想删除前30秒(保留剩余的时间),请使用以下命令:

ffmpeg -ss 30 -i inputfile.mp3 -acodec copy outputfile.mp3