2008-09-04 59 views
73

原始的問題作物MP3到前30秒

我希望能夠生成一個新的(完全有效)MP3從現有的MP3文件,文件將被用作預覽 - 先試用後你-buy風格。新文件應僅包含曲目的第一個n秒。

現在,我知道在傳送文件時,我可以在秒(根據比特率和標頭大小計算)「切斷流」,但這有點髒並且是VBR軌道上的真實PITA。我希望能夠生成一個合適的MP3文件。

任何任何想法?

答案

兩個mp3splitffmpeg都是很好的解決方案。我選擇了ffmpeg,因爲它通常安裝在Linux服務器上,並且也是easily available for windows。這裏的一些良好的命令行參數用於生成預覽用的ffmpeg

  • -t <seconds>斬波後指定的秒數
  • -y力文件覆蓋
  • -ab <bitrate>集合比特率例如-ab 96k
  • -ar <rate Hz>設定採樣率例如從INFILE -ar 22050爲22.05kHz時
  • -map_meta_data <outfile>:<infile>複製跟蹤元到outfile

,而不是設置-AB和-ar,您可以複製原來的軌道設置,蒂姆·法利指出,與:

  • -acodec copy
+0

我沒有意識到ffmpeg可以做到這一點。謝謝。 – 2017-12-16 07:28:14

回答

99

我也推薦使用ffmpeg,但是John Boker建議的命令行有一個意想不到的副作用:它將文件重新編碼爲默認比特率(至少在這裏是64 kb/s)。這可能會讓您的客戶對聲音文件的質量產生錯誤印象,而且這也需要更長的時間。

這裏有一個命令行,將切片30秒,無需轉碼:

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

的-acodec開關告訴FFmpeg使用特殊的「複製」編解碼器不轉碼。它閃電般快。

注:該命令是根據從OBEN Sonne的評論更新

2

我沒有用它來達到這個目的,但我敢打賭ffmpeg可以做到這一點。

15

嘗試:

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

你可能想嘗試Mp3Splt

我以前在一個簡單包裝了mp3splt.exe win32過程的C#服務中使用過它。我假設你的Linux/PHP場景可以做類似的事情。

+2

使用MP3 Split與成功的MP3剪切 – Freshblood 2014-04-10 19:20:36

5

只是一個想法之前:您可以跳過原曲的開頭。說,你可以使用30秒的片段開始第三個的歌曲。
在一些歌曲中,前30秒不會告訴你很多,因爲它只是「設置場景」的一部分 - 例如Pink FloydShine On You Crazy Diamond

+4

+1偉大的歌曲! – alex 2009-06-16 04:20:37

+0

up for pink floyd – 2016-02-01 13:01:35

42

如果你要刪除的前30秒(並保留其餘的),然後使用此:

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

可以使用mp3cut :

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

這是在Ubuntu回購,所以才:sudo apt-get install cutmp3

1

請注意,我在CentOS上使用ffmpeg,mptsplit和mp3cutter的時間非常糟糕,他們都報告「Header Missing」。所以,我不得不隨MP3類和一些數學文件大小。

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:一libmp3lame out.mp3

2

該命令也適用於完美。 我把我的音樂從20秒縮短到40秒。

-y:強制輸出文件覆蓋。

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