iTunes,オーディオブック(`m4b`)の,曲名とかアートワーク,一括自動化処理のために 〜 `mp4v2` の `mp4tags` と `mp4art` 使って

先日,mp4 のファイルを m4b にする,となエントリしましたが,その中で,やっぱりタイトルやアートワーク等の設定も自動化してしまいたいと思うようになりました.

これがやっぱ,何となく...

f:id:wooweezoowee:20180613040059p:plain

嫌っ.

shellscript です.

道具は mp4v2 と言うユーティリティ(?) があって,その mp4tagsmp4art というのを使います.
以前に mp3 へのエントリを書きましたが,今回は m4b ですので.

「mp4v2」,入れる

ぽいっ.

brew install mp4v2

有り難い.

スクリプト 1 - 各名前やジャンル等のテキスト情報は mp4tags

入れたい情報は,アーティスト名,アルバム,曲名,ジャンルとしました.;

mp4tags \
  -artist "${artist}" \
  -album "${album}" \
  -song "${songTitle}" \
  -genre "Radio"\
  "${file}"

${file} がターゲットの m4b データです.

各情報とオプションの関係.

タグ オプション
アーティスト名 -artist
アルバム -album
曲名 -song
ジャンル -genre

オプションは,ショートオプションも用意されています.
-artist なら -a-album-A,以下同様に -s-g としても同じ.

ここでは後々の分かり易さ,見易さを優先して,ロングオプションのフルで書くようにしています.

編集できるタグの情報は他にも沢山あるようで,詳細は mp4tags -h

スクリプト 2 - アートワークは mp4art

そして問題のアートワーク.

こちらは,mp4art タグを使う事にしました.;

mp4art \
  --add "${artwork}" "${file}"

こちらも,${file} がターゲットの m4b ファイルで,${artwork} が埋め込むアートワークの画像ファイル,となっています.

mp4tags でもできるのに,何故?

mp4tags でも -picture (-P) というオプションが用意されてまして,これでもアートワークを挿し込めます.
当初はこの mp4tags-picture を使うつもりでした.

こんな感じ.;

mp4tags \
  -artist "${artist}" \
  -album "${album}" \
  -song "${songTitle}" \
  -genre "Radio" \
  -picture "${artwork}" \
  "${file}"

ですが.

アートワーク画像,ちゃんと書き込むには書き込んでくれるのですが,
どういうことか,iTunes の [情報] で言えば [アルバムアーティスト] へ,アートワーク画像のファイルのパスを書き込んくる.

mp4tags のオプションで言うと -albumartist (-R) のアイテムになるのでしょうか.

f:id:wooweezoowee:20180613040627p:plain

help には 《Set the picture as a .png》ってあって,今回使っているのは jpg だから?とか?

明快さのために mp4tags だけで実現したかったのですが,かとて,拘る気分も気力も無いので(笑,特に深追いすることなく mp4art を使う事にした,というのが経緯です.

あ.-albumartist に値をセットしておいてやれば OK なのかな,と思ってやってみましたけど,なぜかエラー吐かれてダメでした.

参考

ffmpeg では,やはりだめ?

ffmpeg でもアートワークを書き込める,というソースを幾つか目にしたのですが,本当に出来ますか?

こちらではできませんでした...

使い方が悪いのかもしれませんが.

その他に

同様のことを実現するには,他の道具もあるようです.

例えば,こちら

最後に蛇足ですが,iBooks の仕様らしいのですが,
オーディオブック m4b のリストでは,曲名とアルバムで使っている文字列に重複がある部分は省略されて出力されるみたいです.

例えば,アルバム名が「JUNK 伊集院光深夜の馬鹿力」で,曲名は「JUNK 伊集院光深夜の馬鹿力 2018年06月11日」という場合,リストで表示されるのは曲名フルではなく,日にちの部分 "2018年06月11日" のみが出力される,という.

f:id:wooweezoowee:20180613040728p:plain

領域は限られているので,何気,良い仕様だと思った次第.

はいおしまい.