裁剪 MP3到前30秒

原始问题

我希望能够从现有的 MP3文件中生成一个新的(完全有效的) MP3文件,用作预览——先试后买的样式。新文件应该只包含轨道的第一个 N秒。

现在,我知道我可以只“砍流”在 N秒(从比特率和头大小计算)当传递文件,但这是一个有点肮脏和一个真正的 PITA 在 VBR 轨道。我希望能够生成一个适当的 MP3文件。

Anyone any ideas?

答案

mp3splitffmpeg都是很好的解决方案。我选择 ffmpeg 是因为它通常安装在 Linux 服务器上,也是 很容易装在窗户上。下面是用 ffmpeg 生成预览的一些更好的命令行参数

  • -t <seconds> 在指定的秒数后印
  • 强制文件覆盖
  • -ab <bitrate> set bitrate 例如 < em >-ab 96k
  • -ar <rate Hz> 设定采样率,例如 - ar 22050为22.05 kHz
  • 从文件到文件的复制跟踪元数据

instead of setting -ab and -ar, you can copy the original track settings, as Tim Farley suggests, with:

  • -acodec copy
78930 次浏览

尝试:

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

你可以试试 MP3Splt

我以前在一个 C # 服务中使用过它,它只是简单地包装了 mp3splt.exe win32进程。我假设在您的 Linux/PHP 场景中也可以做类似的事情。

I also recommend ffmpeg, but the command line suggested by John Boker has an unintended side effect: it re-encodes the file to the default bitrate (which is 64 kb/s in the version I have here at least). This might give your customers a false impression of the quality of your sound files, and it also takes longer to do.

这里有一个命令行,它可以在不转换代码的情况下缩短到30秒:

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

Acodec 开关告诉 ffmpeg 使用不转码的特殊“ copy”编解码器。

注意: 该命令是根据 Oben Sonne 的评论更新的

如果您希望删除前30秒(并保留剩余的时间) ,请使用以下方法:

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

你可以使用 mp3cut:

cutmp3 -i foo.mp3 -O 30s.mp3 -a 0:00.0 -b 0:30.0

It's in ubuntu repo, so just: sudo apt-get install cutmp3.

我在做同样的事情时犯了一个错误

Invalid audio stream. Exactly one MP3 audio stream is required.
Could not write header for output file #0 (incorrect codec parameters     ?): Invalid argumentStream mapping:

对我来说,解决办法是:

ffmpeg -ss 00:02:43.00 -t 00:00:10 -i input.mp3 -codec:a libmp3lame out.mp3

这个命令也可以很好地工作。 我把我的音乐文件从20秒裁剪到40秒。

- y: 强制覆盖输出文件。

ffmpeg -i test.mp3 -ss 00:00:20 -to 00:00:40 -c copy -y temp.mp3

我的软件包 医疗包是一个非常简单的命令行应用程序,作为 ffmpeg的包装器。

你可以使用以下命令修剪视频:

medipack trim input.mp3 -s 00:00 -e 00:30 -o output.mp3
medipack trim input.mp3 -s 00:00 -t 00:30 -o output.mp3

您可以按如下方式查看装饰子命令的选项:

srb@srb-pc:$ medipack trim -h
usage: medipack trim [-h] [-s START] [-e END | -t TIME] [-o OUTPUT] [inp]


positional arguments:
inp                   input video file ex: input.mp4


optional arguments:
-h, --help            show this help message and exit
-s START, --start START
start time for cuting in format hh:mm:ss or mm:ss
-e END, --end END     end time for cuting in format hh:mm:ss or mm:ss
-t TIME, --time TIME  clip duration in format hh:mm:ss or mm:ss
-o OUTPUT, --output OUTPUT

您还可以使用 medipack -h探索其他选项

srb@srb-pc:$ medipack --help
usage: medipack.py [-h] [-v] {trim,crop,resize,extract} ...


positional arguments:
{trim,crop,resize,extract}


optional arguments:
-h, --help            show this help message and exit
-v, --version         Display version number

you may visit my repo https://github.com/srbcheema1/medipack and checkout examples in README.