【Mac】m4a ファイルに画像を貼付
atomicparsley というコマンドを使うと、m4a 形式のオーディオファイルに画像を貼付できる。ファインダーや QuickLook で表示される m4a ファイルに、ジャケットみたいに画像がつく、あれだ。
atomicparsley は mp4 ファイルの ID タグを操作するコマンドで、Homebrew で簡単にインストールできる。
brew install atomicparsley
atomicparsley でアートワークを設定する
基本はatomicparsley m4aファイル --artwork 画像ファイル
でいいようだ。
画像形式は jpg か png である。
atomicparsley /path/to/INPUT.m4a --artwork /path/to/art.jpg
元のファイルはイジらず、ファイル名-temp-番号.m4a
というファイルが新たに生成される。
また、指定した画像のファイルサイズが大きい場合は atomicparsley が画像をリサイズして新たに生成してくれる。
m4a ファイルからアートワークを削除するには、以下のように書く。
atomicparsley /path/to/INPUT.m4a --artwork REMOVE_ALL
複数のファイルをいっぺんに処理する
録音した radiko のファイルが溜まってきたので、これに画像を貼付したいのだが、数が多すぎてひとつひとつ処理するのはダルい。
なのでシェルスクリプトを書いた。
-f
というオプションをつけて m4a ファイルの入ったフォルダをターミナルに投下する。
あるいは m4a ファイルひとつを指定する。
sh artwork.sh -f フォルダ 画像ファイル
という感じ。
フォルダ内に「temp」というフォルダを作り、出来上がったファイルはそのなかに格納される。
📝 artwork.sh
#!/bin/zsh
# atomicparsley で m4a ファイルにイメージを添付するスクリプト
# -f をつけてフォルダをターミナルに投下する。
# フォルダ内のすべての m4a にアートワークが添付される。
#
# sh artwork.sh -f path/to/dir path/to/image.jpg
#
# もしくはフォルダのかわりに m4a ファイルそのものを指定する。
# その場合はオプションは必要ない。
#
# sh artwork.sh path/to/audio.m4a path/to/image.jpg
artwork=""; audio=""; dir=""; dir_on="off";
while [ $# -gt 0 ]
do
case $1 in
*.jpg) artwork="$1" ;;
*.jpeg) artwork="$1" ;;
*.png) artwork="$1" ;;
*.m4a) audio="$1" ;;
-f) shift; dir="$1" ;;
*) break ;;
esac
shift
done
if [ -z "${dir}" ]; then
if [ -z "${audio}" ]; then
echo 'オーディオファイルかフォルダの入力が必須です。'
exit 0
else
dir=`dirname "${audio}"`
filename=`basename "${audio}"`
fi
else
dir_on="on"
fi
cd "${dir}"
if ! test -e 'temp'; then
mkdir 'temp'
fi
if [ -z "${artwork}" ]; then
echo 'アートワークの入力が必須です(jpg or png)'
exit 0
fi
IFS_BACKUP=$IFS
IFS=$'\n'
if test "$dir_on" = 'off'; then
atomicparsley "${audio}" --artwork "${artwork}"
fname=`echo ${filename%.*}`
tempfile=`echo "${fname}"'-temp-'`
for f in $(ls .);
do
if echo "$f" | grep -sq "$tempfile"; then
mv "$f" temp/"$filename"
fi
done
else
for M4A in $(ls .);
do
ext=`echo ${M4A##*.}`
if test "$ext" = 'm4a'; then
filename=`basename "${M4A}"`
fname=`echo ${filename%.*}`
tempfile=`echo "${fname}"'-temp-'`
atomicparsley "${M4A}" --artwork "${artwork}"
for t in $(ls .);
do
if echo "$t" | grep -sq "$tempfile"; then
mv "$t" temp/"$filename"
fi
done
fi
done
fi
IFS=$IFS_BACKUP
sh artwork.sh -f path/to/DIR path/to/IMAGE.jpg
というように使う。
atomicparsley によって画像がリサイズされて出力されることがあるが、その画像は特に片づけたりしないので注意。
mp4box でもできる
mp4box は mp4 コンテナを作ったりするコマンドだ。この mp4box でも m4a ファイルに画像を貼付できる。このコマンドもまた Homebrew でインストール可能だ。
brew install mp4box
ただ、mp4box の場合は jpg や png という画像形式は使えず、heic でないと駄目らしい。heic は iPhone で撮影された画像などでよく使われる。
heic への変換はプレビュー.app でも出来るが、コマンドで行うなら sips が便利だ。
sips --setProperty format heic path/INPUT.png --out path/OUTPUT.heic
mp4box をもちいたアートワークの貼付は以下のように書く。
mp4box -itags cover="path/to/IMAGE.heic" INPUT.m4a
画像を削除する場合は以下のように書く。
mp4box -itags cover=NULL path/INPUT.m4a
mp3 に画像を貼付する
mp3 ファイルに画像を貼付する場合は、eyed3 というコマンドが便利だ。このコマンドも例によって Homebrew でインストールできる。
brew install eye-d3
画像の貼付は以下の通り。
eyed3 --add-image path/to/IMAGE.jpg:FRONT_COVER path/to/INPUT.mp3
画像の削除はこう書く。
eyed3 --remove-all-images path/to/INPUT.mp3
eyed3 は、atomicparsley と違い、複数の mp3 を一度に処理できる。
eyed3 --add-image IMAGE.jpg:FRONT_COVER INPUT01.mp3 INPUT02.mp3 INPUT03.mp3
かなり便利なのだが、何点か試してみて、どうしても画像を貼付できない mp3 があった。
原因はよくわからない。
最近のコメント