[Android] m4a(AAC)ファイルの文字化けに対処してみる
基本的にはWindows PC上で作業し、完了後にAndroid端末に転送するという形を取っておるのですが、その曲を音楽プレーヤーで表示させるとタイトルが文字化けしてしまうことがあります。
Android4.4.2(CyanogenMod11)がインストールされた2種類のデバイスで確認しておりますので、とりあえずKitKat搭載機で発生する現象である様子。
不思議なことに、同じ方法やタイミングで作成した他のファイルは問題ないことも多く、長いこと悩んでおりました。少々時間ができたので、ここらで集中的に対処してみることに。文字化けの原因として考えられそうなのは...
・文字コードが間違っている
・音楽ファイルのタグ情報が壊れている
・メディアライブラリが壊れている
...のいずれかと想像されます。ということで、まずは文字コードのチェックから。この手のトラブルに対処する一般的な方法は、音楽ファイルに埋め込まれたタグの編集機能を持ったアプリを使うというもの。
タグを読み込み、文字化けしているようなら再入力、正しく表示されているようならそのまま保存することで、文字コードが正しく設定されます。こうしたアプリは多数リリースされておりますが"iTag"と"AudioTagger"の2つを試してみました。
ところが、どうもうまく行きません。"iTag"では効果がなく、"AudioTagger"を使うと文字化けは解消されるものの、今度はアーティスト名が空欄になってしまい、音楽プレーヤー上で"不明なアーティスト"となってしまいます。
もちろん、きちんとアーティスト名を入力した上で保存しておりますが、なぜかこうした結果になってしまいます。さらに、このファイルを"iTag"で開いてみると、消えたはずのアーティスト名を確認できるという謎仕様。
文字が化けてしまうのは、コードの問題もありそうですが、直接的な原因ではなさそうな雰囲気です。
次は音楽ファイルのチェックです。こちらは単純に、音楽ファイルを作りなおして再度転送してみるという方法。結果としては、何も解決せず。同じタグ情報を持ったファイルではまったく同様に文字化けします。
最後はメディアライブラリのチェックです。これが原因である可能性は低いのですが、一応念のため。方法としては少々乱暴ですが、メディアライブラリの再構築を利用します。やり方は、"設定"→"アプリ"("すべて"のタブ内)にある"メディアストレージ"を開き、"データの消去"を実行すればOK。
ただ、着信音などの設定がリセットされたり、ギャラリーのサムネイルが消えたりといった感じで少々のリスクがあるため、実行はお勧めできません。で、結果ですが、こちらもまったく効果ナシ。
完全に手詰まりな感じではあったのですが、現象が発生している以上、どこかに原因があるハズ。よくよく考えてみると、メディアサーバがおかしな動作をしているのではないか? という気がしてきました。
そのような考えに至ったのは、メディアライブラリを再構築した際、以前修復したファイルで再び文字化けが発生したため。作業の直前まで正しく表示されていたので、原因はメディアライブラリの再構築にあると思われます。
つまり、メディアサーバが情報を集める際、特定の文字コードを誤認するか、あるいはタグの構造を誤って認識してしまい、これをそのままメディアライブラリに記録。結果としてデータベース構造は正常だけれども、内容が間違っているために文字化けが起こる...という仮説であります。
そうであるとするなら、メディアライブラリを直接修正することで何とかなりそうな予感。こうした場合に威力を発揮するのが"ID3Fixer"というアプリです。
機能的には他のタグ編集アプリのそれを網羅しており、同じように使うことができます。
が、決定的に異なるのは、修正方法が選択可能となっている点。音楽ファイルに内蔵されたタグを修正するのか、それともメディアライブラリの該当部分を修正するのか、どちらかを選ぶことができます。
具体的には、作業の最終段階でこちらのような選択肢が表示され、下の"Fix Android database only. does not affect the music files."を選択することでメディアライブラリの該当部分を書き換えることができます。
ちなみに、デフォルトでは上が選択されており、こちらでは音楽ファイルに格納されたタグを書き換えるという、他のタグ編集アプリと同じ動作をします。
効果はすぐに現れ、メディアライブラリを参照する音楽プレーヤーで確認することができます。もちろん、文字化けは完全になくなりました。
ただし、根本的な問題が解決された訳ではありません。例えば、システムのアップグレードやカスタムROMのインストールなどにより、メディアライブラリの再構築が実施された場合には、再び文字化けが発生します。なので、その際には再び同じ作業をする必要があります。
また、システムの再起動時にもメディアサーバのスキャンが実行されますが、この時には新たな情報が見つかった場合に追加されるだけなので問題ナシ。修正した文字化けが復活することもありません。
ウチの環境だけで発生する特異な現象かもしれませんが、似たような問題に頭を抱えている方にとって何かの参考になりますれば。
コメント