如何从一批 mp3 中截取前 10 秒?

如何从一批 mp3 中截取前 10 秒?

之前有人问过这个问题,海量 MP3 音频文件编辑器,但我想知道现在情况是否有所改变。我也可以接受适用于任何操作系统甚至 CLI 的任何解决方案。

ffmpeg 不起作用(文件输出未被修剪)。

ffmpeg -i 2999.mp3 -ss 0:10 -acodec copy 2999-trimmed.mp3
FFmpeg version 0.6.1, Copyright (c) 2000-2010 the FFmpeg developers
  built on Mar  7 2011 12:32:28 with gcc 4.2.1 (Apple Inc. build 5646)
  configuration: --prefix=/opt/local --enable-gpl --enable-postproc --enable-swscale --enable-avfilter --enable-avfilter-lavf --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libdirac --enable-libschroedinger --enable-libfaac --enable-libfaad --enable-libxvid --enable-libx264 --enable-libvpx --enable-libspeex --enable-nonfree --mandir=/opt/local/share/man --enable-shared --enable-pthreads --disable-indevs --cc=/usr/bin/gcc-4.2 --arch=x86_64
  libavutil     50.15. 1 / 50.15. 1
  libavcodec    52.72. 2 / 52.72. 2
  libavformat   52.64. 2 / 52.64. 2
  libavdevice   52. 2. 0 / 52. 2. 0
  libavfilter    1.19. 0 /  1.19. 0
  libswscale     1.11. 0 /  1.11. 0
  libpostproc   51. 2. 0 / 51. 2. 0
**[mp3 @ 0x12180c800]max_analyze_duration reached**
**[mp3 @ 0x12180c800]Estimating duration from bitrate, this may be inaccurate**
Input #0, mp3, from '2999.mp3':
  Metadata:
    TYER            : 2005-01-21
    TPE1            : البخاري
    TPE2            : البخاري
    TALB            : صحيح البخاري ٢
  Duration: 00:00:28.94, start: 0.000000, bitrate: 32 kb/s
    Stream #0.0: Audio: mp3, 22050 Hz, 1 channels, s16, 32 kb/s
Output #0, mp3, to '2999-trimmed.mp3':
  Metadata:
    TSSE            : Lavf52.64.2
    Stream #0.0: Audio: libmp3lame, 22050 Hz, 1 channels, 32 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop encoding
size=     103kB time=26.36 bitrate=  32.0kbits/s    
video:0kB audio:103kB global headers:0kB muxing overhead 0.031300%

答案1

我经常使用 mp3splt。它的特点是分割完整的 MP3 帧,也就是说,无需解压和重新压缩声音,这意味着质量完全不受影响。

类似这样的操作对于单个文件是有效的:

mp3splt -f 0.10 5000.0 <filename>

5000.0 需要高于任何单个文件的长度;当遇到 EOF 或到达指定的结束点时,mp3splt 会停止。

答案2

    #!/bin/bash

for file in $1/*.mp3
do

echo "file=$file"
mp3splt -f 0.10 5000.0 $file
if test "$?" == "0"; then
#   cp $file $file"_backup" 
    rm $file
    fi
done    

感谢 Zds 推荐 mp3splt

相关内容