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