convertコマンドで色を置換する

ImageMagickの話ね。

fillオプションとopaqueオプションを使う。

$ convert -fill 'after' -opaque 'before' /path/to/input /path/to/output

色の指定にはredとかblackとかの表記も使える(-fill redみたいな)し、’rgb(R,G,B)’みたいにしても良い(-fill ‘rgb(255,0,0)’)。勿論-fill ‘#RRGGBB’も可。

このやり方だと指定した色と同値の色しか置換されないため、特にjpeg画像なんかは目も当てられない状態になる。その時のための-fuzzオプション。

-fuzz distance{%}みたいにつけてやると、distance分だけ離れていても同じ色として考える。何に対する割合かというと、多分RGBの最大値に対してってこと。

 

今回使ったのは、スキャンした画像から赤いはんこ部分を取り除く目的。

はんこ部分の中心付近が一番劣化で色がブレてなさそうという事で、色をKolourPaintで調べてdc3c3cくらいという事がわかった。ちなみにKolourPaintというのは、Linuxの上でmspaintみたいな操作感を実現しようというソフト。GIMPがデフォで入ってたりするけど、そんなに高度な事をやる必要が無くて、軽量動作が嬉しいみたいな場合に便利。

fuzzオプションのお陰で多くを置換出来るけど、はんこ部分の外側には赤が滲み出ているような状態で、fuzzの引数を調整する事でこれを取り除こうとすると、今度は文書本体が引っかかるようになってしまい、ダメだなぁという状態に。

小規模な赤という事で、白黒化しちゃえば消えるし、そこで調整すればうまく調整できるという訳で、白黒化も含めて一発でやっちゃう。今回使ったのはこちら。

$ convert -fuzz 25% -fill '#ffffff' -opaque '#dc3c3c' -threshold 55% input.jpg output.jpg

便利だ。

ImageMagickで画像を2値化(訂正版)

訂正版っていうか、実用的な指定方法が見つかったってだけ。

ImageMagickで画像を2値化という記事を書いたけど、-thresholdに与える値をどうするかってところが問題だった。何度も試して丁度いい値を探すのはいいけど、最初のアタリをつけたところが下手だと試行回数が増える。

実はこれ、割合指定できる。

例えば50%を与えると、各チャンネル50%を境にして、0%と100%に振られるようになる。24bitカラーなら各チャンネル8bitずつ、0〜255なので、0ないし255に割り当てられるんだろうな。

当てずっぽうにアタリを付ける必要がなくなるので捗る。どっちにしろ最初は当てずっぽうするしかないんだけどね。

bashでファイル名を一括して変更

hoge_out.pdfというファイルが沢山ある状態で、_outを削除したかった。

Windowsなら練馬とか使えば便利でいいんだけど、環境はLinuxという事で。

 

$ for f in `ls`; do mv $f ${f/_out/}; done

{f/_out/}の後の方の/の後ろに置換後文字列を入れれば置換出来る。{f/hoge/fuga}みたいな。

もしpdf以外にもファイルがあって、pdfだけを処理したいなら、`ls`を`ls | grep pdf`みたいにしてやればいいと思う(未確認だけど)。

DAPを作る妄想

まだまだ妄想さ~

 

目標

・音が出る

・カラー液晶を備える

・それなりのストレージ容量を持つ

・データの追加が楽

・持ち歩ける

 

音→大前提だ

カラー液晶→かっこいいだろ?

ストレージ容量→それなりに必要でしょ、今使ってる16GBストレージじゃ手持ちのデータをFLACで固めた10GBでぱんぱんなんすよね…

データの追加→いや~クソTunesとかクソ-アプリとか使いにくいじゃん??

持ち歩ける→手持ちのDAPからのリプレースを考えてるので

 

前提として、みんな大好きRaspberry piを使う。以前考えたことがあって、その内容を流用したいため。

さて、色々検討していく。

 

音が出る

てきとうにUSB-DACつかう。このへん?

本体から直接出力してもいいけどノイズが気になる(予感がする)のでやめておく。

バスパワーで駆動するっぽいので、Piからだと電力不足が気になるところだけど、取り敢えずは考えないでやってみる事にした。

 

カラー液晶を備える

adafruitからhttps://www.adafruit.com/products/911を買った。

電源には6~15Vを使用するらしいので、この時は単3電池4本直列接続で用意。

最終的に持ち歩けるように、電力はモバイルブースターから拾えばいいかな~とか思っているけれど、USBで取り出すのが一般的なので、5Vしか出してくれない。昇圧回路を用意する必要がありそう。

 

それなりのストレージ容量を持つ

現状使っているWalkmanのFシリーズは16GBモデルなんだけど、手持ちのデータをFLACで放り込んだだけで9割くらい食ってる。250曲くらいしかないんだけどね。

Raspberry piにはUSBポートがあるので、SDカードでもなんでも使えばよろしい。不足した場合を考慮してLVMで追加してくってのもアリかな。

 

データの追加が楽

言わずもがなってところ。

毎度ストレージを取り外してパソコンに繋ぐとかはキツい。モデルによってはイーサネット使えるので、smbとかで適当になんとかするか(問題は後回しだ)

 

持ち歩ける

電力は使ってないあまりのモバイルブースター使うから良いとして、PiとUSB-DACで結構なサイズ感になりそう。

適当なアルミケースを加工して突っ込む気持ちになっているけど、「アルミケースを加工して」がどうしようもねぇぞ~って感じなのでこれこそ後回しにする。

 

 

妄想は妄想って事で、次はUSB-DACを買ってきて遊んでみよう。

追加で1つPi買ってくるかー

普段使いのOSをLinuxにするという事について

Windows batchなファイルを書いていて、Windows使いにくいのではって思ってしまって、ふと思い立った。

普段使いの立場からWindowsをクビにして、Linuxを採用するっていう前提のもと、考えていった内容をつらつらと書く。

 

現状半分くらいはそういう状態になっていて、家の外で使ってる、ブラウジングしたりプログラム書いたりしてるノートPCで使っているのはArchLinuxなのよね。

パッケージ管理システムがしっかりしててソフトの追加とか楽だし(aurマジ神様)動作も軽快。更新もWindows Updateみたいに鬼のように時間かかる事もなく、更新後再起動を強制される事もない(好きな時に再起動してよろしい)。起動・シャットダウンも大した時間かかんないのですぐ再起動しちゃって、更新後問題が起こって無さそうな事を確認する事も多い。

じゃあ、何故未だにWindowsをメインPCに入れて使っているのかというと、結局対応ソフトの多さと、あとゲームだよな。

ソフトの話をすると、普段使うのはこのくらいか。

・ブラウザ(Chrome, Firefox等)
・Tween
・mpc-hc

ブラウザはそもそもLinuxでも使えるし(プロファイルの移行が簡単に出来るかは知らないけど)、mpc-hcは別に思い入れがあって使ってる訳じゃない。VLCにしてもいいけど、mpvってのもいいらしい?使ったことないけど、なんとかなりそう。

Tweenは操作感をそのままに移行したいなら、Qweenをなんとかするってのもアリだし、mikutterでみっくみくーってのも十分アリという訳で、心配しなくてもいいかなーとか。

ノートPCに外部モニタを繋いだ時の動きとか見るに、マルチモニタに対しても問題なく機能するだろうし、メインPCをLinuxにしても普通に使えるんではなかろうかと。

ゲームが殆ど出来なくなるけど、ゲーミングマシンと称して今のをそのまま残しておいても良さそうだ。CPUはi7 870なので、今となってはそんなに強くないけれど、ゲーム用途ならCPUよりGPUだ。今使ってるのはGTX750Tiだけど、パワーが不安なら換装してもいい。GTX750Tiは殆どの製品が補助電源取らないのでM/Bに負荷がかかるのではと不安になるしね(実際に使っているZOTACの製品も補助電源を取らない)。

ゲーミングマシン(今使ってるメインマシン)には、今と同様な感じでSSDをシステムドライブとして残しておいて、ゲームデータ等のために1TBくらいのHDD置いとけばいいだろ。

問題になるのは各入出力だ。サウンド、モニタ、キーボード、マウス…。

ゲームの音とメインマシン(普段使いPC)での音、両方を出力させる必要がありそう。普段使い側で録画視聴するなら勿論そうだし、メッセンジャーとかの通知音とかを受け取れるようにしておく必要がある。

ミキサーを用意してやって、共通のスピーカーなりヘッドセットなりで取り出せばいいけど、ノイズが気になるようであればデジタルで受け取ってミキシングも出来るDACみたいなのを用意する必要があるか?実際のところそんなに良いデバイスで聞いてる訳じゃないので、まぁ素直にアナログ音声をミキシング出来るようにしておけばいいかーとか。マイクはちょっと考えどころだ。

それからモニタ。現状では23インチワイド一枚の両脇に21インチワイドを一枚ずつ配置している。今までは、中央と右の2枚に普段使いPC(右画面は録画映像が垂れ流されている事が多い)、左にサブマシンの様子(たまにPS3映像)、みたいな状態が多かった。

PS3の映像を左モニタにうつしてプレイしていると、これ非常にみにくい。やっぱり視線は中央にあるのが自然だ。

とすると、中央モニタには何の出力を任せればいい?ってのは結構悩みどころ。ゲーム画面か、普段使いPCの画面か。ゲームをする時はゲーム画面で、そうでない時は普段使いPCの画面で、ってサクサク切り替えられれば便利でいいんだけど、どうやって切り替える?ここに失敗すると、ゲームと普段使いの境界が曖昧になって、グダグダな運用になるのは経験済みだ(サブマシンを組んだ時に、サブとゲームの境界が曖昧な運用方針を採ってしまい失敗。今サブマシンはNASになっている)。

中央モニタの上にアームで並べるのも一つの手かもしれない。そうすると、中央・右モニタは普段使い、中央の上に置いた上モニタにゲーム画面、というようになるか?それとも、上・右モニタは普段使い、中央モニタにゲーム画面?選択肢は少し変化したが、状況は似たようなものだ。

お金のない自分にはキツい超追加投資となるが、Picture by Picture(PbP)に対応した4Kモニタを購入し、FullHD接続をするという手もある。処理能力に限りもあるので無駄に解像度を増やすことはせず、ゲーム画面にFullHD1つ分、残りの3つ分を普段使いに回してやれば、だいぶよさ気なのではないか。完全ベゼルレスクアッドモニタみたいな感じ。想像しただけでニタニタしちゃうね。

ただ、ゲーミングマシンから映像が出力されてない時にどうなるかってところと、画面サイズが問題。

前者はちらっと調べたところ記述がなんだか見当たらない気がしたので置いとくとして、後者。解像度が増えたからといって表示できる情報量が単純に増えると喜んではいられない。Xperia Z5 Premiumがあのサイズで4Kを突っ込んだみたいだけど、その画面サイズでFullHD4枚分だ、とかやってらんない。めちゃくちゃ目を凝らさないと文字が読めないでしょう。

画素密度を意識すると40インチとかのサイズ感じゃないとダメっぽい。でもいきなり40インチ超のモニタを突っ込んでも、画面に対して自分の目が近すぎてだいぶ厳しいのではなかろうか。画面から自分を遠ざける、それに合わせて操作デバイスも遠ざける必要がある。現状では操作デバイスを遠ざける事の出来るほど奥行きのあるデスク状態ではないので、これを変えるのでなければ、キーボード・マウス用のテーブルなどを新たに用意する必要がありそうだ。

キーボード・マウスは、最も人間に近く、触っている時間も非常に長いため、よく手に馴染む物が好ましい。また、ゲーミング、普段使いの2台のマシンを操作する事になるので、2種類必要な気もする。切替器のようなものを使うと、ゲームのローディングな合間に操作とか、短時間で復帰出来る事が期待される状況に対して、厳しいものがある。

2セット用意するか?となると、次に問題になるのは操作系の設置場所だ。その時多く操作するものを手元に置いておきたい。しかし多く操作するものはその時その時で変化するのだ。

妥協案としては、メインで操作する系統を手元に設置し(その時に配置換えをする)、頻繁な操作をしない系統は無線等の取り回しのしやすいもので操作するというのが良いのではないか。

例えばゲームをする時、手元にはゲーミングマシンに繋がっている系統を設置し、普段使いでは情報収集や録画視聴・メッセンジャーの操作等のために無線マウス・無線キーボードを使って操作、これを膝の上でもどこでも置きやすい場所に設置する。

またゲームをしない時、ゲーミングマシンの操作は殆ど一切と言ってもいいほど行わないであろうから、これの系統をどこか奥の方へ沈め、普段使いの系統を手元に設置する。

考えるべきは、設置する仕組みをどう実現するか。アームで伸ばすのは耐荷重が気になるし、操作するたびにふわふわ動かれると困る。それぞれにテーブルを用意(2階建てなテーブルを用意する?)しても良いが、ケーブルの絡まりを解消する必要がある。また、配置換えがあからさまに面倒だ。まだまだ検討の余地あり。

普段使いがLinuxでも、どうしてもWindowsが必要な時もあるであろう。例えばMSOfficeを触る必要があるとか、ソフトウェアの動作確認がしたいとか、wineで動作しないとか代替が効かないとかなソフトウェアを使う必要があるとか。ゲーミングマシン以外にWindowsなマシンを用意するのが楽でいいけど、やっぱ予算的に無理。Windowsのライセンスは余っているんだし、普段使いLinuxの上に仮想環境でWindows乗せちゃえばいいか。パフォーマンスが悪ければ、それだけ普段使いになるよう促進されるだろう。きっと。

ふと思い出したけど(検討すんの忘れてたけど)、愛用してるfoobar2000、Linuxじゃ動かないんだった。なんだかwineで動くという情報もあるけど、なんだか不安だ。今度実験してみよう。

 

つらつらと書いたけれど、結局まとめると、

・普段使いをLinuxにするのは割りとアリ(この記事の大半は複数マシンの想定だしもうやる気満々)

・現在の普段使いPCを(予算的に余裕があればGPU強化して)ゲーミングマシンにする。ストレージはHDDちゃんと整理する。1TBもあれば十分。

・新しい普段使いPCには、以前から考えていた構成から、GPUを弱くして(ゲームみたいな重い処理やらなくていいため。ゲーミングマシンから不要になったGTX750Tiでもいいか)その他も検討。

・サウンドはミキサー買うなり作るなりして用意しろ(買うと、すんげー高いか、安いけど使いにくいか、なので作るのも一つの手)

・モニタの配置に困ったらPbPに対応した4K買え(関係ないけどEBOOT.PBPを思い出すね)

・4Kにするなら、画面から離れたくなるので、操作系統のために新たなテーブルを用意

みたいな感じかな。

 

いくら考えてもお金が手に入る訳じゃないので、結局、お金が無い、が結論だ。

おしまい。長かった。

音楽ファイルの形式をまとめて変えるスクリプトを書いた

いつもどおり記事タイトルが訳わかんねーな

 

前回の音楽ファイルの取り扱いを考えるで書いた、tak+cueで保存しているデータをmka(cue+flac+jpeg)みたいな感じで保存し直すスクリプト。

全部Windows batchで書こうとしたんだけど、正直言って触れば触るほど訳わかんなくなって(Windows batch死ね)全然無理だったので、win-bashを使ってWindowsの上でbashなシェルスクリプトとして書いた。

それでも引数処理が面倒だったのと、D&Dで実行出来ないため、シェルスクリプトを呼び出すためのWindows batchを書いたりして大変アレ。まぁ目的は達成出来ているのでおkでしょ。

 

・make_mka.bat

@echo OFF

:LOOP
if "%~dpnx1" == "" goto END
echo Input: %~dpnx1
set in="%~dpnx1"
set sc="%~dp0make_mka.sh"
set pt="%~dp1"
bash %sc% %in% %pt%
echo;
shift
goto LOOP

:END
echo all jobs were completed.
timeout /t -1

・make_mka.sh

in_cue=`cat "$1" | nkf -Sw`
cd "$2"

echo Generating xml file...
echo \<Tags\>\<Tag\> >temp.xml
echo "$in_cue" | grep DISCID
if [ $?==0 ]; then
echo \<Simple\>\<Name\>DISCID\</Name\>\<String\> >>temp.xml
echo "$in_cue" | grep DISCID | awk '{print $3}' >>temp.xml
echo \</String\>\</Simple\> >>temp.xml
fi
echo "$in_cue" | grep DATE
if [ $?==0 ]; then
echo \<Simple\>\<Name\>DATE\</Name\>\<String\> >>temp.xml
echo "$in_cue" | grep DATE | awk '{print $3}' >>temp.xml
echo \</String\>\</Simple\> >>temp.xml
fi
echo "$in_cue" | grep GENRE
if [ $?==0 ]; then
echo \<Simple\>\<Name\>GENRE\</Name\>\<String\> >>temp.xml
echo "$in_cue" | grep GENRE | awk '{print $3}' >>temp.xml
echo \</String\>\</Simple\> >>temp.xml
fi
echo "$in_cue" | grep TITLE
if [ $?==0 ]; then
echo \<Simple\>\<Name\>TITLE\</Name\>\<String\> >>temp.xml
echo "$in_cue" | grep TITLE | awk 'NR==1' | sed -e s/TITLE.\"// -e s/\"// >>temp.xml
echo \</String\>\</Simple\> >>temp.xml
fi
echo \<Simple\>\<Name\>TOTAL_PARTS\</Name\>\<String\> >>temp.xml
echo "$in_cue" | grep -G 'TRACK.[0-9]\+' | awk 'END{print $2}' >>temp.xml
echo \</String\>\</Simple\> >>temp.xml
echo \</Tag\>\</Tags\> >>temp.xml
out_cue=`tr -d '\n' < temp.xml`
echo "$out_cue" >temp.xml
echo

echo converting from tak to flac...
tak=`echo "$1" | sed -e s/cue$/tak/`
wav=`echo "$1" | sed -e s/cue$/wav/`
takc -d "$tak"
flac=`echo "$tak" | sed -e s/tak$/flac/`
ffmpeg -i "$wav"  "$flac"

echo

echo muxing...
mka=`echo $tak | sed -e s/tak$/mka/`
path=$(echo "$2")cover.jpg
mkvmerge.exe -o "$mka" "$flac" --attachment-mime-type image/jpeg --attach-file "$path" --chapters "$1" --global-tags temp.xml

echo cleaning...
rm temp.xml
rm "$flac"
rm "$wav"

echo "$1"

 

細かい動作の流れや仕組みはコードを見てもらうとして、以下コメント。

make_mka.batでは引数が複数あっても(複数D&Dされても)動作しそうに書いてあるけど、これは最初の妄想のままであって、これが実際に動作はしない。あっはっは。アルバムアートのファイル名とかを多少手直しすればいけそうな気もするけど、この状態で手持ちのデータは全部処理しちゃったのでもういっかな。

mkvmergeはcueシートを元にmkaのチャプターを切ってくれる(トラック情報を反映してくれる)っぽいので凄いじゃんと思ったら、アルバムタイトルとか総トラック数とかDISCIDとかを反映してくれなかった。これはどうやらChapterではなくTagという扱いみたい。それらしいxmlを読み込んでやると反映してくれるので、それらしいtemp.xmlを生成する部分が殆どを占めてるね。

sedやawkを使ってcueから情報取り出してるけど、bashでcueシートのパースとかやってる人が見当たらなかったのでてきとうに書いた。

それから、cueシートの読み込み(make_mka.shの1行目)で、cueシートにアルファベット以外が含まれていると文字化けして適切に情報が取り出せなかった(トラックタイトルはChapter扱いなのでmkvmergeがよしなにしてくれていたけど、アルバムタイトルはTag扱いなのでxmlから拾うため)ので、win-bashらへんに含まれていなかったnkfを別に入手して使った。

tak->flacを直接ffmpegでやるとうまくいくデータとうまくいかないデータがあった(原因はよくわかんない)ので、まずtak公式のtakcでtak->wavとデコードしてから、ffmpegでwav->flacしてる。flacへのエンコードも公式のエンコーダ使えばいいじゃんって今思ってる。

 

全体的に、

・文字のエスケープの区別(パス、ファイル内、ダブルコーテーションやシングルコーテーション、記号)がちゃんと理解出来てない

・sedやawkを使った文字列加工がかなり手探りで汚い(かといって修正する気になる訳じゃない)

取り敢えず書くか~みたいな感じでずっと書いてるので、そろそろ綺麗にする努力とかすればいいじゃんね、といった気持ちではあるけど、面倒なもんは面倒なのさ。後から手を入れる予定も無いから別に糞コードでもいいだろ、みたいな。

音楽ファイルの取り扱いを考える

昔採用した方法をそのまま使っていて、なんだかアレだし、そろそろ音楽視聴の環境を変えようと思っているので、ファイル管理についても考えてみる。

 

現状:moraよりのダウンロード購入、CD媒体で購入したものが入り乱れている

ダウンロード購入はトラック単位で買えたりするので、インストは不要とか、カップリングが不要とか、アルバムで買う時重複してるから不要とか、そういう時に重宝する。

一方、CD媒体で購入するのは、それはそれで物欲を満たすことが出来るし、ダウンロード販売を行っていないCD(同人CDまさしく)ではこういう事しか出来ない。

それぞれの保存状態は、

・ダウンロード購入したもの
mp4形式(aac+mjpeg)
メタタグあり
mjpegがアルバムアート

・CD媒体で購入したもの
tak+cue
メタデータはcueシートで管理

takを選択しているのに特にこだわりはないけれど、使っているfoobar2000がデフォルトではtakには対応していない(プラグインで対応)ので、ちょっとなぁといった気持ち(その気持ちのまま何年も放置)。Walkmanではデフォでそのまま再生できるしFLACに変えようかなと思ったり思わなかったり(あやふやなのは手持ちのWalkmanがヘボいため)

理想は、
・ロスレスで保管(DAPでそのまま再生出来れば尚良しだが妥協も可)
・メタタグつけとく
・アルバムアートもつけとくと再生するときかっこいい

実際takにはアルバムアートくっつけれるが、foobar2000で素直にtaggingからアタッチしようとするとcueシートにくっつけようとしちゃって、失敗する。

それから、takにくっつけても、cueシートから読み出しているので、表示されない。tak+cueと同じフォルダにcover.jpgみたいな名前で配置しておけば表示される。ただしそこから切り分けたりエンコードしたりして出来上がったファイル(DAPに入れたいもの)にはアルバムアートはついてない。cueシートにはそもそもアルバムアートに関する情報を記録出来なさそうだな。

つまり、cueシートでの管理をやめるという話になる。埋め込むという方向で考えていくと、mkaとかどうよ、という気持ちに。

cue+flacで1ファイル管理出来るし、アルバムアートだって放り込めるはず。

という訳でテスト。

1.takを単体でfoobar2000に放り込みflacへコンバート
2.cueシートをコピーしてFILEの記述をtakからflacへ
3.MKA変換機にcueシートを読み込む(ついでにcover.jpgも放り込んでおく)
4.mkaデータを作成する
5.出来上がったmkaをfoobar2000に放り込む
6.曲単位でflacへとコンバートしてみる
7.x-アプリに登録してみる
8.Walkmanに転送してみる

だいぶ行程が長いけれど、おおよそ目論見通りの動作が得られた。

ただし、MKA変換機を通した段階で、アルバムタイトルがいなくなる事があった。cueシートにはTITLE枠で入っていたはずなのだが、ちょっと理解が足りないな。

MKA変換機が使えない環境(非Windows)でも、出来上がったmkaの情報を見るに、mkvmergeというツールで作成されたようなので、コマンドラインにどういうオプションを渡しているのかが解明出来れば、どの環境でも使えるようになるなといったところ。

まだちょっと調整というか理解というか調査というか、しないといけないけど、これで良さそうだな。

 

 

まとめ。

・mka(cue+flac)で1CD1ファイルの形で固めていく

・アルバムアートもつける

・mkaに固める時にはmkvmergeを使えば良さそう

・foobar2000で再生出来るし、トラック単位でflacにコンバートしても情報は失われない

・tak->flac、cue+flac+jpg->mkaはそれぞれコマンドラインで出来そうなので自動化も出来そう

・ただしMKA変換機がcueシートの中身をちゃんと読んでいるっぽいので、cueシートのパースが必要になるかも?

moraでダウンロードしたみたいなデータを自分で作る

一体何を言っているんだといった感じだ…

 

moraでダウンロードしたデータは、

・トラック毎に1ファイル

・メタデータがちゃんと入ってる

・ジャケット画像もちゃんと入ってる

一方、自分でCDからリッピングしたデータは、tak+cueで保管しているので、

・ディスク単位で1ファイル

・メタデータはcueに入っている

・ジャケット画像なんてある訳ない

 

という訳で、こういうデータを自分で作ってやる。

 

今回使うのは癒やし系と名高いStylipSのChoos me♡ダーリン。

爆笑の安さである。StylipSに恨みでもあるのか。まさかゆいかおりが悪いとでも言うのかね??

 

tak+cueで保管していたけど、Walkmanにインポートする時にmp3にエンコードしていて、なんだか面倒だったのでこのmp3データを使う。ジャケットは適当に画像検索して拾ってきた。

 

ひとまず試しにやってみる。

$ ffmpeg -i cmd.mp3 -i cover.jpg -vcodec mjpeg cmd.mp4

foober2000でジャケット画像が拾えるかどうかでチェック。結果は失敗。動画プレイヤーでも再生できない。なんなんだ。

 

調べ回ったけど、なんだかffmpegじゃ出来ないみたいだ。2段階に分けて作業する。

1.音声をm4aにする

2.ジャケット画像を突っ込む

mp4じゃなくてm4aにしてるのは、これなら明示的に音声だよってアピール出来るかなーってだけ。Androidでは拡張子がかなり重視されていて(無視されるなら拡張子の存在意義が問われるところだけど)、どんなアプリで開くかの自由度が結構キツイので、音声風味な拡張子にしておきたい。

という訳で作業。

$ ffmpeg -i cmd.mp3 -acodec libfdk_aac cmd.m4a
$ AtomicParsley cmd.m4a --artwork cover.jpg

なんだかどこの情報でも「temporaryなデータが出力されます」で記述が終了していて(公式のドキュメント嫁)、最終ファイルはどう処理するんだ…って思ったけど、foobar2000ではちゃんと表示されたし、Xperia(SO-02G)のミュージックアプリでもきちんと動いた。Walkmanもあった(NW-F805)のでx-アプリを通してインポートしたけどこれも成功。iPadはあるけどiTunesを起動したくなかったので見送り。

–overWriteってオプションを追加しておけば上書きされるので変な名前のファイルが作成されて混乱する事もないでしょう。

 

AtomicParsleyはArchLinuxなら普通にパッケージがあるのでこれをインストールした。Windowsにバイナリが有るかは確認してない。

 

takからエンコードすればmp3→aacの2重エンコードの気持ち悪さもなんとかできるでしょう。

 

また内容の薄い記事になってしまった。しょうがないな。うん。

 

 

しかし中古で買ったNW-F805だけど、イヤホンジャックがガバガバ過ぎて使い物にならん。SO-02Gで聞いたりNW-F805で聞いたりノートパソコンで聞いたり、有線で聞いたりBluetoothで聞いたりと、全く安定しない状況だが、何とか出来ないものかと…

以前DAP自作を画策していた頃があったけど、これをまた考えてみるかなー。