Sound

はじめに

iTunes MediaではM4Aという拡張子でオーディオが保存されており、気になったので調べてみました。

M4Aとは

今回はこちらのサイトこちらの文献を掻い摘んで和訳する形で紹介しようと思います。

M4AはAdvanced Audio Coding (AAC)でエンコードされたオーディオファイルの拡張子であり、非可逆音声圧縮方式の一つです。
M4AはMPEG 4 Audioの略称です。

M4AファイルはMP3ファイルよりも圧縮率が高く、同じビットレートでエンコードした場合、MP3よりも音質はよくなります。
こういった理由からiTunes Music StoreではM4Aが採用されています。
M4AはMPEG-4 Part14の一つで、仲間にM4BやM4Pが存在しています。

M4Aの構造

M4Aは"chunk"という塊が連なって構成されています。
ぞれぞれのchunkは8 byteのヘッダを持っています。
その8 byteのうち、最初の4 byteにはchunkの大きさが格納されており、次の4 byteにはchunkの種類が記述してあります。
chunkの種類は事前に定義された指定子を使用し、以下のようなものがあります。
ex) "ftyp", "mdat", "moov", "pnot", "udta", "uuid", "moof", "free", "skip", "jP2", "wide", "load", "ctab", "imap", "matt", "kmat", "clip", "sync", "chap", "tmcd", "scpt", "ssrc", "PICT"

下の画像はM4Aファイルの例です。

一番最初のchunkは"ftyp"というタイプでなければいけません。
はじめの4 byte(00 00 00 20)はchunkの大きさで32 byteであることを示しています。
次の4 byte(66 74 79 70)は"ftyp"というchunkのタイプを指定しています。
その後ろにファイルのタイプが続きます。

はじめのチャンクの大きさは32 byteだったので、次のチャンクは3行目の頭の部分になります。
3行目の頭の4 byte(00 01 E1 AD)は同様にチャンクの大きさで123309 byteであることを示しています。
次の4 byte(6D 6F 6F 76)でチャンクのタイプが"moov"であることを指定し、
その後ろにチャンクの中身が続きます。

image.png

boxの種類

  • ftyp: ファイルの種類(ファイルの先頭に一つだけ)
  • moov: すべてのメタデータを含むコンテナ
  • mdat: メディアデータ本体のコンテナ(メディアデータのコンテナの数は任意であるため、音声だけのファイルや動画だけのファイルなどを作れる)

今回はここまでにします。
今後AACエンコーディングのことなども書けたら良いかなと思っています。

参考文献