2014-09-29 87 views
46

如何使用ffmpeg將.flac轉換爲.mp3,保留所有元數據(將.flac文件中的Vorbis註釋轉換爲.mp3的ID3v2元數據)?使用ffmpeg將.fla3轉換爲.f3,保留所有元數據

+4

請注意,下一次,你應該問在[蘇]'ffmpeg' CLI使用的問題。 [so]僅適用於涉及編程的問題。另外,FLAC [官方支持Vorbis評論](http://xiph.org/flac/format.html#format_overview),所以我假設你想轉換爲ID3v2而不是「保持」。 – LordNeckbeard 2014-09-29 23:31:12

+0

好的,我解決了我的問題。我在這裏問,因爲我在StackOverflow上看到這樣的問題(例如[this](http://stackoverflow.com/questions/24840708/ffmpeg-convert-flac-to-mp3-and-add-album-art-in-one一步)或[這](http://stackoverflow.com/questions/15294844/with-ffmpeg-trying-to-change-a-container-from-mpeg-ts-to-mp4-fps-became-twice) ),並認爲分享我的知識可能很有趣。另外,我看到有一個[ffmpeg標籤](http://stackoverflow.com/questions/tagged/ffmpeg),那麼爲什麼不在這裏分享我的解決方案?許多開發人員在很多應用程序中使用ffmpeg。 – 2014-09-30 09:33:13

+2

[tag:ffmpeg]標籤說:「關於交互式使用FFmpeg命令行工具的問題應該在超級用戶上提出。」這不是什麼大問題,但我只想指出,因爲在我看來,這裏有太多的離題問題。 – LordNeckbeard 2014-09-30 17:09:21

回答

83

以下命令繼續.MP3高質量(320 kbps的),和元數據從文件.FLAC被轉換爲的ID3v2格式,其可以被包括在.mp3文件:

ffmpeg -i input.flac -ab 320k -map_metadata 0 -id3v2_version 3 output.mp3 
+0

值得注意的是,「ffmpeg」可能需要替換爲「avconv」。 – shockburner 2016-04-25 22:28:46

+2

FWIW'ffmpeg' 3.2自動將元數據從FLAC中複製到ID3v2中,無需指定'-map_metadata 0 -id3v2_version 3',儘管它不會複製到ID3v1標籤中。我爲此使用了一個單獨的工具。 – Dai 2016-11-26 23:43:52

+0

歌詞仍然沒有得到複製雖然 – user151496 2017-10-14 23:22:48

25

完美以上回答。我結合使用它查找到一個子樹添加所有FLAC文件到iTunes使用此命令

find . -name "*.flac" -exec ffmpeg -i {} -ab 160k -map_metadata 0 -id3v2_version 3 {}.mp3 \; 

向所得到的文件自動添加到iTunes,讓iTunes的進口目錄中

find ~/Music/ -name "Automatically Add*" 

結果如

/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized 

然後運行例如

find . -name "*.mp3" -exec mv {} "/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized/" \; 

自動將所有轉換後的曲目添加到iTunes。

8

如果你想節省一點空間,嘗試hydrogenaud.io推薦:

質量很高:高保真音響,家中或安靜的聽,用最好的文件大小 -V0 (~245 kbps)-V1 (~225 kbps)-V2 (~190 kbps)-V3 (~175 kbps)是推薦的。 這些VBR設置通常會產生透明結果。這些預設之間可能存在差異,但很少見。

來源:http://wiki.hydrogenaud.io/index.php?title=LAME

如果你想使用的ffmpeg這個選項,你應該使用-q:a 0別名。

控制質量與-qscale:a(或別名-q:a)。值是編碼器特定的,因此對於libmp3lame,範圍是0-9,其中較低的值是較高的質量。 0-3通常會產生透明的結果,4(默認)應該接近知覺透明度,6產生「可接受」的質量。選項-qscale:a映射到獨立lame命令行界面工具中的-V選項。

來源:https://trac.ffmpeg.org/wiki/Encode/MP3

如果你想的ID3v1元標記過,您應添加-write_id3v1 1參數。

所以我最後的命令是:

ffmpeg.exe -y -i input.flac -codec:a libmp3lame -q:a 0 -map_metadata 0 -id3v2_version 3 -write_id3v1 1 output.mp3 
5

我測試下面的命令來轉換infile.flac文件outfile.mp3

ffmpeg -i infile.flac -q:a 0 outfile.mp3 

隨着Ubuntu的16.04,上面的命令似乎複製(最所有的?)元數據。

-q:a 0告訴ffmpeg使用最高質量的VBR。

但是,ffmpeg正在將我的專輯封面從jpeg轉碼爲png,這增加了封面的尺寸。

Stream mapping: 
    Stream #0:1 -> #0:0 (mjpeg (native) -> png (native)) 
    Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame)) 

(我猜上述轉換之類的有意義given how ffmpeg works。)

一些挖後,我發現-c:v copy選項,指定視頻流應該被複制,而非轉碼。完整的命令是:

ffmpeg -i infile.flac -c:v copy -q:a 0 outfile.mp3 

在上面的命令結果:

Stream mapping: 
    Stream #0:1 -> #0:0 (copy) 
    Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame)) 
相關問題