【发布时间】:2010-09-07 19:37:27
【问题描述】:
原始问题
我希望能够从现有的 MP3 文件生成一个新的(完全有效的)MP3 文件以用作预览 - 先试后买风格。新文件应仅包含曲目的前 n 秒。
现在,我知道在传送文件时我可以在 n 秒(根据比特率和标头大小计算)“截断流”,但这有点脏,而且是真正的 PITA一个 VBR 轨道。我希望能够生成正确的 MP3 文件。
有人有什么想法吗?
答案
mp3split 和 ffmpeg 都是很好的解决方案。我选择了 ffmpeg,因为它通常安装在 linux 服务器上,也是easily available for windows。这里有一些更好的命令行参数,用于使用 ffmpeg 生成预览
-
-t <seconds>在指定秒数后斩波 -
-y强制文件覆盖 -
-ab <bitrate>设置比特率,例如-ab 96k -
-ar <rate Hz>设置采样率,例如-ar 22050 用于 22.05kHz -
-map_meta_data <outfile>:<infile>将轨道元数据从 infile 复制到 outfile
您可以按照 Tim Farley 的建议复制原始轨道设置,而不是设置 -ab 和 -ar:
-acodec copy
【问题讨论】:
-
我没有将它用于这个特定目的,但我敢打赌ffmpeg 可以做到。
-
只是一个想法:您可能想跳过原始歌曲的开头。比如说,你可以从歌曲的第三开始使用 30 秒的乐曲。在某些歌曲中,前 30 秒并不能说明什么,因为它只是“设置场景”的一部分——例如 Pink Floyd 的 Shine On You Crazy Diamond。
-
请注意,我在 CentOS 上使用 ffmpeg、mptsplit 和 mp3cutter 时遇到了非常糟糕的情况,它们都报告“缺少标题”。所以,我不得不使用 MP3 类和一些数学来削减文件大小。
-
我没有意识到 ffmpeg 可以做到这一点。谢谢。