如何在不重新编码的情况下分割 MP3 文件?

如何在不重新编码的情况下分割 MP3 文件?

我有一个 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 的回答中的警告确实适用。

答案4

有一些有用的工具,例如

您可以下载有一定限制的试用版或者购买它们。

相关内容