我有一个 400 MB 的 MP3 文件,速率为 96 kbps,取自 CD。我想将其拆分成多个文件。
有没有什么方法可以做到这一点而不影响音频质量,或者无需重新编码文件?
答案1
有一个程序叫mp3splt- 我指定我感兴趣的部分的开始和结束时间。也可以使用静音检测自动分割。
答案2
您没有指定操作系统。
通用音频编辑器会解码 MP3,然后在保存时重新编码,因此请避免使用这些编辑器。
专用 MP3 分割器通常在帧边界上进行分割,因此音频不会被解码和重新编码,这很好。但是也有一个缺点:分割点周围的音频瞬间无法播放,有时如果那里的音频不是静音的,则会导致跳过或点击。这是由于与 MP3 编码和解码的各种功能和副作用(位储存器、编码器延迟、填充和解码器延迟)相关的复杂性造成的。但只要分割点位于静音中间,并且您并不担心丢失那一瞬间的静音,那么我再次推荐 Windows 应用程序 mp3DirectCut。它功能强大且免费,并且具有每个帧音量级别的漂亮图形视图(您可能需要稍微调整一下比例),尽管这不是解码波形的真实视图,但通常足以找出理想的剪切位置。
如果你非常关心准确性,那么你需要使用 Java 命令行应用程序切mp3,这是目前为止我所知道的唯一可以解决这些问题的工具。需要注意的是,您需要确保使用的播放器支持“无缝播放”(编码器延迟和填充)信息,如 LAME 标签中所述。
pcutmp3 和 mp3DirectCut 都支持使用提示表来指定分割点。因此,如果您有原始 CD,则可以使用 CD 翻录程序为音频文件生成 .cue 文件。此提示表是一个文本文件,其中包含分割器可以使用的精确音轨边界等信息。如果您没有原始 CD,您可能能够通过网站 cuesheet heaven 生成提示表,该网站会重新解释 freedb 数据。如果没有原始 CD,则制作的此类 .cue 可能不准确(如果您选择了错误的压制),并且几乎肯定不完整(因为它只有音轨边界,没有提示表中的其他任何内容),但它应该可以满足您的目的。
答案3
执行此操作的标准工具不仅适用于 mp3,还适用于许多音频甚至视频格式,那就是 ffmpeg:
ffmpeg -i in.opus -ss 00:00:30.0 -t 00:03:00 -c copy out.opus
会从 30 秒开始截取一段 3 分钟的片段in.opus
,并将其放入out.opus
不带转码的 ( -c copy
)。请注意,虽然这会保留一些元信息(标题、艺术家等),但其他一些元信息(例如歌词)将会丢失。有关更多信息,请参阅其手册页,例如关于-c
:
-c[:stream_specifier] codec (input/output,per-stream)
-codec[:stream_specifier] codec (input/output,per-stream)
Select an encoder (when used before an output file) or a
decoder (when used before an input file) for one or more
streams. codec is the name of a decoder/encoder or a special
value "copy" (output only) to indicate that the stream is
not to be re-encoded.
For example
ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT
encodes all video streams with libx264 and copies all audio
streams.
For each stream, the last matching "c" option is applied, so
ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT
will copy all the streams except the second video, which will
be encoded with libx264, and the 138th audio, which will be
encoded with libvorbis.
@Mike Brown 的回答中的警告确实适用。