修改多個歌曲封面

for f in *.mp3; do
  ffmpeg -i "$f" -i cover.jpg \
    -map 0:a -map 1 \
    -c copy -id3v2_version 3 \
    -metadata:s:v title="Album cover" \
    -disposition:v:0 attached_pic \
    "tmp_$f" && mv "tmp_$f" "$f"
done

遍歷這個資料夾的所有 .mp3 檔案,把所有封面改成同個資料夾的 cover.jpg 圖片。

語法解釋:

  • for f in *.mp3; do ...; done - 對目前資料夾下所有 mp3 檔案進行迴圈(通常用 f 代表 file 變數)
  • -i "$f" - 輸入 0 - 原始 mp3 檔案(可能含封面)
  • -i cover.jpg - 輸入 1 - 圖片
  • -map 0:a - 從輸入 0 只取出音樂資訊(不含舊封面)
  • -map 1 - 加入「輸入 1」的所有資訊(裡面只有圖片)
  • -c copy - 直接複製串流檔案格式(不壓縮)
  • -id3v2_version 3 - 使用 ID3v2.3 格式(mp3)
  • -metadata:s:v title="Album cover" - 設定 Metadata
  • -disposition:v:0 attached_pic - 標記第 0 個視訊串流為「附加圖片」(告訴播放器這是封面不是影片)
  • "tmp_$f" && mv "tmp_$f" "$f" - FFmpeg 最後輸出的檔名是 tmp_$f,把檔名改成 $f
較舊一篇 Logic Pro 常常說要關閉應用程式
使用 Hugo 建立
主題 StackJimmy 設計