海量 .flac –> .mp3 轉碼:如何編寫保留 ID3 標籤資訊的 shell 腳本?
最近幾週,我已經從一種相當“親力親為”的 .flac –> .mp3 轉碼方法轉變為一種更加“設置並忘記”的方法。
第一步是停止使用 GUI 前端(帶有 LAME 外掛的 Audacity),而是使用我在此處概述的方法。
第二步是找到一個 bash shell 腳本,它會告訴命令循環以遞歸方式工作,從而允許在一個簡單的步驟中對具有許多包含 .flac 文件的子目錄的目錄進行轉碼。該答案由 askubuntu.com 的使用者提供。
現在我想學習如何進一步細化,以便保留 ID3 標籤資訊。連結到上述 ID3 標記數據的方法,只剩下最少的部分(即僅保留標題欄位)。
誰能教我如何編寫這樣的shell腳本?
shell 腳本已更新如下:
#!/bin/bash file="$1" flac -cd "$file" | lame --preset fast extreme - "${file%.flac}.mp3" id3cp "$file" "${file%.flac}.mp3"
在 ~/Desktop/ stack
find . -name '*.flac' -exec ~/bin/flac2mp3 '{}' \;
中進行操作會得到以下輸出:01 - Amon Tobin - Chomp Samba.flac: done LAME 3.98.4 64bits (http://www.mp3dev.org/) Using polyphase lowpass filter, transition band: 19383 Hz - 19916 Hz Encoding <stdin> to ./01 - Amon Tobin - Chomp Samba.mp3 Encoding as 44.1 kHz j-stereo MPEG-1 Layer III VBR(q=0) Parsing ./01 - Amon Tobin - Chomp Samba.flac: done. Copying to ./01 - Amon Tobin - Chomp Samba.mp3: done
id3info
對於原始 .flac 和生成的 .mp3 分別給出:*** Tag information for 01 - Amon Tobin - Chomp Samba.flac
(即什麼都沒有);
*** Tag information for 01 - Amon Tobin - Chomp Samba.mp3 *** mp3 info MPEG1/layer III Bitrate: 128KBps Frequency: 44KHz
.flac 肯定有標籤資訊。我可以通過打開 EasyTAG 來驗證這一點。EasyTAG 將其稱為“FLAC Vorbis Tag”,而 .mp3 則稱為“ID3 Tag”。這是問題嗎?
#!/bin/sh file="$1" outfile=${file%.flac}.mp3 eval $(metaflac --export-tags-to - "$file" | sed "s/=\(.*\)/='\1'/") flac -cd "$file" | lame --preset fast extreme \ --add-id3v2 --tt "$TITLE" --ta "$ARTIST" --tl "$ALBUM" \ --ty "$DATE" --tn "$TRACKNUMBER" --tg "$GENRE" \ - "$outfile"
如何使用 mp3fs 將 flac 批量編碼為 mp3
您可以使用 mp3fs 將它們呈現為虛擬 mp3,以及可以將復製作業排隊的程序,而不是使用程序將 flac 文件轉換為 mp3。它對我來說非常好用。
下載並安裝 mp3fs 和超級複印機:
sudo apt-get install mp3fs ultracopier
為要執行的每個 mp3fs 創建一對 flac 和 mp3 目錄。我有一個雙核 cpu,所以我執行兩個。如果將 flac 目錄保留在 flac 文件所在的分區上,則可以快速移動它們。該分區在我的系統上稱為“儲存”。
cd /media/Storage mkdir mp3fs mp3fs/flac_1 mp3fs/mp3_1 mp3fs/flac_2 mp3fs/mp3_2
您可以從命令行掛載目錄或將它們添加到
/etc/fstab
. 您還可以在掛載時配置虛擬 mp3 的比特率和編碼算法。我想要具有 320kbps 恆定比特率的 mp3,而跛腳可能需要花費所有時間才能產生最好的 mp3。在命令行上:
mp3fs -b 320 -oquality=0 /media/Storage/mp3fs/flac_1 /media/Storage/mp3fs/mp3_1 -o allow_other,ro mp3fs -b 320 -oquality=0 /media/Storage/mp3fs/flac_2 /media/Storage/mp3fs/mp3_2 -o allow_other,ro
如果保險絲抱怨,比如
fusermount:無法打開 /etc/fuse.conf:權限被拒絕
fusermount:選項 allow_other 僅在 etc/fuse.conf 中設置了“user_allow_other”時才允許
然後取消註釋中的
user_allow_other
選項/etc/fuse.conf
,和/或使其可讀sudo chmod 644 /etc/fuse.conf
或來自
/etc/fstab
:mp3fs#/media/Storage/mp3fs/flac_1 /media/Storage/mp3fs/mp3_1 fuse user,ro,allow_other,bitrate=320,quality=0 0 0 mp3fs#/media/Storage/mp3fs/flac_2 /media/Storage/mp3fs/mp3_2 fuse user,ro,allow_other,bitrate=320,quality=0 0 0
將目錄添加到後
/etc/fstab
,您可以使用sudo mount -a
完畢!啟動超級複印機。它會在您的 gnome 面板或您使用的任何東西中放置一個指示器圖示。點擊它,選擇添加副本。我做了兩次以使用兩個核心。使用您的文件瀏覽器將一些flac 移動到flac_1。導航到 mp3_1 目錄,然後將您的 mp3 拖到超級複印機視窗之一以啟動複製隊列。Ultracopier 將詢問文件的目的地。您現在有一個核心忙於將一批 flacs 編碼為 mp3。
要使用另一個核心,請將 flac 文件移動到 flac_2,然後將 mp3 從 mp3_2 拖到第二個超級複印機視窗。
更新:我現在使用 MiniCopier 而不是超級複印機,它更容易使用。請參閱下面的評論。