播放MP3至前30秒

时间:2008-09-04 14:35:14

标签: mp3 ffmpeg

原始问题

我希望能够从现有的MP3文件生成一个新的(完全有效的)MP3文件,以用作预览 - 先试后买的风格。新文件应该只包含曲目的第一个 n 秒。

现在,我知道我可以在传递文件时在 n 秒(从比特率和标头大小计算)中“切断流”,但这有点脏,真正的PITA on一个VBR轨道。我希望能够生成一个合适的MP3文件。

任何想法?

答案

mp3splitffmpeg都是很好的解决方案。我选择了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

而不是设置-ab和-ar,您可以像Tim Farley建议的那样复制原始曲目设置:

  • -acodec copy

9 个答案:

答案 0 :(得分:126)

我也推荐使用ffmpeg,但John Boker建议的命令行有一个意想不到的副作用:它将文件重新编码为默认比特率(至少我在这里的版本是64 kb / s)。这可能会让您的客户对声音文件的质量产生错误的印象,而且还需要更长的时间。

这是一个命令行,在没有转码的情况下切片到30秒:

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

-acodec开关告诉ffmpeg使用不转码的特殊“复制”编解码器。它闪电般快。

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

答案 1 :(得分:50)

如果您想要删除前30秒(并保留剩余部分),请使用:

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

答案 2 :(得分:17)

尝试:

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

答案 3 :(得分:11)

你可以使用mp3cut:

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

这是在ubuntu repo中,所以只需:sudo apt-get install cutmp3

答案 4 :(得分:9)

此命令也可以完美运行。 我将音乐文件从20秒到40秒裁剪。

  

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

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

答案 5 :(得分:5)

您可能想尝试Mp3Splt

之前我在C#服务中使用过它,它只包含了mp3splt.exe win32进程。我假设你的Linux / PHP场景可以做类似的事情。

答案 6 :(得分:3)

我没有将它用于此特定用途,但我打赌ffmpeg可以做到这一点。

答案 7 :(得分:0)

我在做同样的事情时遇到了错误

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

答案 8 :(得分:0)

medipack 是一个非常简单的命令行应用,可以作为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

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

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

您可以访问https://github.com/srbcheema1/medipack并在README中签出示例。