boe*_*ehj 10 mp3 id3 shell-script tagging flac
最近几周,我从一种相当“动手”的方法转为 .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"
Run Code Online (Sandbox Code Playgroud)
这样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
Run Code Online (Sandbox Code Playgroud)
id3info
对于原始 .flac 和结果 .mp3 分别给出:
*** Tag information for 01 - Amon Tobin - Chomp Samba.flac
Run Code Online (Sandbox Code Playgroud)
(即什么都没有);
*** Tag information for 01 - Amon Tobin - Chomp Samba.mp3
*** mp3 info
MPEG1/layer III
Bitrate: 128KBps
Frequency: 44KHz
Run Code Online (Sandbox Code Playgroud)
.flac 肯定有标签信息。我可以通过打开 EasyTAG 来验证这一点。EasyTAG 将其称为“FLAC Vorbis 标签”,但将其称为 .mp3 的“ID3 标签”。这是问题吗?
#!/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"
Run Code Online (Sandbox Code Playgroud)