10月 03

 
 
■mora楽曲がiPhoneで再生できない原因と解決

 mora楽曲のmp4には、「moov.meta.hdlr」と「moov.meta.ID32」というコンテナ情報(atom)がついています。この情報があるとiPhone/iPod touch上では処理ができず、楽曲再生がスキップされてしまうようです。なので、これを親atomツリーである「moov.meta」ごと消せば、音楽データ自体を再エンコードすることなく(=つまり再劣化なし&artist情報など保持して)、mora楽曲をそのままの形でiPhone/touchで再生できます。

 
 
■変換ソフトを作った方がいたのでリンク 2012年10月06日追記

モーラその後に by @gageas

 簡単に、おそらく複数ファイル同時に処理できると思います。また、moraのmp4の「moov.meta.ID32」には、アルバムアートの他に歌詞Jpeg画像が埋め込まれていたようです。このソフトでは歌詞画像が埋め込まれていた場合、iTunes形式のアルバムアート2枚目として登録してくれるようです。素晴らCー(^^

上記ソフトがあれば以下の処理は必要ありませんが、一応情報として残して置きます。

 
 
■必要なツールの準備 ※Windows32bit環境での対応方法です

 次の2つのファイルを落としてきて、mora楽曲のある一時ダウンロードフォルダなどに必要ファイルをすべて置きます。

AtomicParsley.exe
mp4のatomツリーを編集するコマンドラインツール ※バイナリは32bit版のみの様子
http://www.xucker.jpn.org/keyword/atomicparsley.html
簡易的な使い方の説明サイトです。サイトからさらにダウンロード先へ飛んで落としてください。

zlib1.dll
上記exeを動かすために必要です。
http://www.zlib.net/
dllバイナリの場合、次のページから『zlib125dll.zip』を落として解凍。
http://www.winimage.com/zLibDll/index.html
中にある、dll32フォルダ内のzlibwapi.dllを『zlib1.dll』にリネームしてAtomicParsley.exeと同じフォルダに置きます。

 
 
■mora楽曲(mp4)をドラッグ&ドロップすれば、iPhoneで再生可能な音楽ファイルになるバッチファイルを作成

 上記一連のファイルと同じフォルダに新規テキストファイルを作成し、次のコードをコピペして、ファイル名を『mora2iphone.bat』とします。


@echo off
setlocal

rem set workdir
CD /D "%~dp0"

rem rename mp4->m4a
ren "%~nx1" "%~n1".m4a
set FILE="%~n1".m4a

rem remove atom "moov.meta"
AtomicParsley.exe %FILE% --manualAtomRemove "moov.meta" --overWrite

echo.
echo iPhoneで再生できるファイルになりました。このウインドウを閉じ、iTunesに楽曲を登録して転送してください。
echo.
pause > NUL

endlocal

 
 
 
■仕上げ 以降は毎回この作業だけ

 moraから落とした楽曲、AtomicParsley.exe、zlib1.dll、上記バッチファイルであるmora2iphone.bat・・・・この4つが、すべて同一フォルダにあるのを確認したら、あとはmora楽曲をバッチファイルに1曲ずつD&Dすれば、iPhoneで再生できるよう処理が行われ、拡張子m4aへ変更されたファイルとなります。iTunesに登録し、iPhoneなどへ転送して再生チェックしてみてください。
 注意点として、落としたmora楽曲そのもののコンテナ情報を元に戻せない形でいじるので、必要があれば先にバックアップしておいてください。または、上記bat内コードの–overWriteを消せばD&Dしたファイルは元のまま、自動で別ファイルとして処理済みファイルが作られます。

 
 
 
■未検証ながら、考えられる副作用

 上記処理をした楽曲は、mora(ソニー)の音楽管理ソフトやSony WalkMan、Android等のiOS以外の端末で、アルバムアートが消えている可能性があります
※各端末持ってないので未検証。追記:PS3再生ではアルバムアート消えてました。※1

 
 iPhoneでの再生障害となっていた、消した「moov.meta.ID32」というのは、ID3v2のデータ構造を用いた埋め込みアルバムアートのデータのようです。

 通常、iTunes/iPhoneで用いるアルバムアートは、「moov.udta.meta.ilst.covr」というiTunes専用形式のメタデータatomツリー内に埋め込まれているため、上記処理をしてもiTunes/iPhone上などではアルバムアートはそのまま残り続けます。mora楽曲は、iTunes形式の各種楽曲情報・アルバムアートがはじめから埋め込まれています。

 つまり、moraの楽曲はID3v2データ構造でのアルバムアート埋め込みと、iTunes形式用のアルバムアート埋め込みの、2種類の対応がなされていて汎用性を確保しているようです。

 そして、iTunes上でアルバムアートをいじっても、変更されるのは「moov.udta.meta.ilst.covr」内のデータのみです。「moov.meta.ID32」内のアルバムアートにはiTunesから触れることはできません。

 自分はiPod touchしか持ちあわせていないため、「moov.meta.ID32」にアルバムアートを埋め込んだり読み出す仕組みを、実際にSony製品やAndroidなどが使っているのかは確認できてませんが、いちいちデータがあるということは誰かが使ってるんでしょう。

 なので、上記の処理したmora楽曲は、iPhoneなどiOSデバイス及び、iTunes形式に準拠したデバイス以外では、アルバムアートが消え非表示となる可能性があります。
 ただ、Sony系列であるmora楽曲に、素でiTunes形式のアーティストなどの楽曲情報やアルバムアートが埋め込まれているということは、Sony系端末やAndroid端末でも、iTunes形式のアルバムアート表示に対応している可能性もありそうです。むしろ、そっちの可能性のほうが高いかも??これはWalkmanとかAndroid持ってる人は、試してみてください。

 
※1
 SONY系機器がうちにありました。PS3です。ということで、この記事の処理をしたm4aと、moraそのままの拡張子だけm4aに変えたものを、Dropbox経由でPS3に持ち込んでみました。結論からいうと、PS3では、この記事で処理したm4aはやはりアルバムアートがなくなっていました。moraからダウンロードしたそのままのものは、アルバムアートが表示されました。どちらも再生は普通にできます。
 SONY系機器・ソフトウェアはやはり「moov.meta.ID32」のアルバムアートを利用していて、「moov.udta.meta.ilst.covr」のiTunes形式のものは読み取れない、と考えるのが妥当かもしれません。製品ごとに状況はもしかしたら異なるかもしれませんが。

 
 
■背景

 以下のコードは、mora楽曲の素のままのatom(情報コンテナ)データツリー構造を表示したところです。下にまだデータは続きますが、黄色くしている箇所が、iPhone/touchで再生問題となっているatom=ID3v2形式のアルバムアート埋め込み情報です。これがあるとiPhone(上のiPodアプリ)はイレギュラーなデータと見るのか、その楽曲をスキップしてしまいます。

D:\DLTemp>AtomicParsley mora.mp4 -T
Atom ftyp @ 0 of size: 24, ends @ 24
Atom moov @ 24 of size: 146748, ends @ 146772
     Atom mvhd @ 32 of size: 108, ends @ 140
     Atom trak @ 140 of size: 43549, ends @ 43689
         Atom tkhd @ 148 of size: 92, ends @ 240
         Atom edts @ 240 of size: 36, ends @ 276
             Atom elst @ 248 of size: 28, ends @ 276
         Atom mdia @ 276 of size: 43413, ends @ 43689
             Atom mdhd @ 284 of size: 32, ends @ 316
             Atom hdlr @ 316 of size: 33, ends @ 349
             Atom minf @ 349 of size: 43340, ends @ 43689
                 Atom smhd @ 357 of size: 16, ends @ 373
                 Atom dinf @ 373 of size: 36, ends @ 409
                     Atom dref @ 381 of size: 28, ends @ 409
                         Atom url  @ 397 of size: 12, ends @ 409
                 Atom stbl @ 409 of size: 43247, ends @ 43656
                     Atom stsd @ 417 of size: 91, ends @ 508
                         Atom mp4a @ 433 of size: 75, ends @ 508
                             Atom esds @ 469 of size: 39, ends @ 508
                     Atom stts @ 508 of size: 408, ends @ 916
                     Atom stsc @ 916 of size: 52, ends @ 968
                     Atom stsz @ 968 of size: 40732, ends @ 41700
                     Atom stco @ 41700 of size: 1956, ends @ 43656
                 Atom hdlr @ 43656 of size: 33, ends @ 43689
     Atom meta @ 43689 of size: 51251, ends @ 94940
         Atom hdlr @ 43701 of size: 42, ends @ 43743
         Atom ID32 [und] @ 43743 of size: 51197, ends @ 94940
     Atom udta @ 94940 of size: 51832, ends @ 146772
         Atom albm [jpn] @ 94948 of size: 23, ends @ 94971
         Atom cprt [jpn] @ 94971 of size: 43, ends @ 95014
         Atom dscp [jpn] @ 95014 of size: 36, ends @ 95050
         Atom gnre [jpn] @ 95050 of size: 16, ends @ 95066

 
これがこの記事の一連の処理をするとなくなります

D:\DLTemp>AtomicParsley mora.m4a -T
Atom ftyp @ 0 of size: 24, ends @ 24
Atom moov @ 24 of size: 97497, ends @ 97521
     Atom mvhd @ 32 of size: 108, ends @ 140
     Atom trak @ 140 of size: 43549, ends @ 43689
         Atom tkhd @ 148 of size: 92, ends @ 240
         Atom edts @ 240 of size: 36, ends @ 276
             Atom elst @ 248 of size: 28, ends @ 276
         Atom mdia @ 276 of size: 43413, ends @ 43689
             Atom mdhd @ 284 of size: 32, ends @ 316
             Atom hdlr @ 316 of size: 33, ends @ 349
             Atom minf @ 349 of size: 43340, ends @ 43689
                 Atom smhd @ 357 of size: 16, ends @ 373
                 Atom dinf @ 373 of size: 36, ends @ 409
                     Atom dref @ 381 of size: 28, ends @ 409
                         Atom url  @ 397 of size: 12, ends @ 409
                 Atom stbl @ 409 of size: 43247, ends @ 43656
                     Atom stsd @ 417 of size: 91, ends @ 508
                         Atom mp4a @ 433 of size: 75, ends @ 508
                             Atom esds @ 469 of size: 39, ends @ 508
                     Atom stts @ 508 of size: 408, ends @ 916
                     Atom stsc @ 916 of size: 52, ends @ 968
                     Atom stsz @ 968 of size: 40732, ends @ 41700
                     Atom stco @ 41700 of size: 1956, ends @ 43656
                 Atom hdlr @ 43656 of size: 33, ends @ 43689
     Atom udta @ 43689 of size: 53832, ends @ 97521
         Atom albm [jpn] @ 43697 of size: 23, ends @ 43720
         Atom cprt [jpn] @ 43720 of size: 43, ends @ 43763
         Atom dscp [jpn] @ 43763 of size: 36, ends @ 43799
         Atom gnre [jpn] @ 43799 of size: 16, ends @ 43815

 
次はmp4box -infoの表示です。
通常、iPhoneなどで再生できるm4a(aac)は次のような形で情報が出てきます。

* Movie Info *
        Timescale 90000 - Duration 00:05:53.406
        Fragmented File no - 1 track(s)
        File Brand mp42 - version 0
        Created: GMT Tue Mar 24 15:00:28 2009

File has no MPEG4 IOD/OD

Chapters:
        Chapter #1 - 00:00:00.059 - "morning star"

iTunes Info:
        Name: morning star
        Artist: EGO-WRAPPIN'
        Album: EGO-WRAPPIN' AND THE GOSSIP OF JAXX
        Comment: ExactAudioCopy v0.95b4
        Genre: Jazz
        Created: 2009
        Encoder Software: Nero AAC codec / 1.3.3.0
        TrackNumber: 3 / 11
        Cover Art: PNG File

Track # 1 Info - TrackID 1 - TimeScale 44100 - Duration 00:05:53.406
Media Info: Language "Undetermined" - Type "soun:mp4a" - 15220 samples
MPEG-4 Config: Audio Stream - ObjectTypeIndication 0x40
MPEG-4 Audio AAC LC - 2 Channel(s) - SampleRate 44100
Self-synchronized

 
ところが、mora楽曲(素)だと余計な情報がついてるのがわかります。

[iso file] Box "gnre" has 4 extra bytes
* Movie Info *
        Timescale 90000 - Duration 00:03:56.101
        Fragmented File no - 1 track(s)
        File Brand mp42 - version 0
        Created: GMT Sat Sep 22 02:39:22 2012

Moov Meta type: "ID32" - 0 resource item(s)
File has no MPEG4 IOD/OD

Copyrights:
        (jpn) (P)2012 King Record.Co.,Ltd.

iTunes Info:
        Name: Salvage
        Artist: Team.縺ュ縺薙°繧甜迪ォ]featuring.迚・悸辜育↓
        Album: Salvage
        Comment:
        Writer: nyanyannya
        Album Artist: Team.縺ュ縺薙°繧甜迪ォ]featuring.迚・悸辜育↓
        Genre:
        Created:
        Disk: 1 / 0
        TrackNumber: 1 / 0
        Cover Art: JPEG File

Track # 1 Info - TrackID 1 - TimeScale 44100 - Duration 00:03:56.332
Media Info: Language "English" - Type "soun:mp4a" - 10178 samples
MPEG-4 Config: Audio Stream - ObjectTypeIndication 0x40
MPEG-4 Audio AAC LC - 2 Channel(s) - SampleRate 44100
Self-synchronized

 
当初、先頭行の報告箇所が問題かと思いatom調整などしてみたけど変わらず。
ID32のatomが問題と分かりました。

iPhoneではこのatomを読みに行ったはいいが中身が解析できず?
(ID3v2はmp3時代の遺産メタデータ構造なはずですし…。
それを内包できるのがmp4コンテナのいいところみたいですが)
「まったくわけがわからないよ・・・」と再生をスキップしてしまうんでしょう。
まぁ知りませんけど。

 
ちなみに研究テスト用に買った曲。250円。

Team.ねこかん / Salvage @ foobar2000カスタマイズ表示

Team.ねこかん / Salvage @ foobar2000カスタマイズ表示

CD出てなくて、現状配信のみみたいなのでちょうどいいや、と。
ビットレートも、ちゃんと318kbpsとなってます。
iPod touch 2genでテストしましたが、無事再生できています。

この曲はmoraが320kbpsで、現時点で一番音質がいいかもしれないですね。
他配信はwma、iTMSでは256kbpsだろうし。

 
おしまい
 

 

 

2 Responses to “DRMフリーになったmora楽曲を再エンコードなしでiPhone/touchで再生できるようにする方法”

  1. DRMフリーになったmora楽曲を再エンコードなしでiPhone/touchで再生できるようにする方法 | Thousand Leaves Project | iPhone情報発信局! Says:

    […] DRMフリーになったmora楽曲を再エンコードなしでiPhone/touchで再生できるようにする方法 | Thousand Leaves Project■mora楽曲がそのままではiPhoneで再生できない原因と解決 mora楽曲のmp4には、「moo […]

  2. moraで買ったAACをiTunesに取り込む時の注意事項 Says:

    […] 原情報はこちらとこちらです。 […]