🌊

メディアのファイル形式について

2021/09/13に公開

動画を録画して音声を分離、特定の形式に変換して保存した経験より(2020-08-06)

開発において動画や音声を細かく操作する機会があったので、メディアのファイル形式について調べたのでまとめておきます。
よくコンテナ形式(メディアの保存形式)と圧縮形式、拡張子に対する理解が混同されて用いられますので注意してください。

基礎知識

PCM

PCM (pulse code modulation)とは、音声などのアナログ信号をデジタルデータに変換する方式の一つです。
信号の強度を一定周期でサンプリングしたもので、そのまま保存すれば非圧縮データとなります。
アナログ信号の強度をサンプリング周波数に従って一定間隔で測定し、定められたビット数の範囲で整数値として量子化します。
例えば、CDの音声はサンプリング周波数 44.1 kHz、量子化深度(bit depth) 16 bit で記録されているのですが、これは毎秒44,100回信号を測定し、その強度を65536(2^16)段階の値で表しているという意味です。

interleave

音声技術におけるinterleaveとは、ステレオインターリーブ(ステレオ)のことを指します。

動画ファイル形式

MP4

MP4はMPEG-4規格の一部で、MPEG-4 Part 14で標準化されています。
ちなみにMPEGはMoving Picture Experts Groupの略であり、ISO/IECのワーキンググループ、または彼らが規定した規格の総称です。
拡張子.mp4を推奨されていて、MPEG-4規格の動画・音声の記録に用いられています。
2004年に定めたれたMPEG-4 Part 15からはMP4 AVCEと呼ばれ、H.264やAACというコーデックで圧縮されたファイルを格納できるようになりました。
またこの形式はMOV形式から派生したものであり、現在のデファクトスタンダードです。
ストリーミングサイトなどにポストする場合などはこの形式を使うべきです。

MOV

MOVはApple Inc.製のマルチメディア技術QuickTimeの一部で、動画・音声の記録に用いられています。
標準の拡張子は.mov.qtです。
圧縮方式としては、動画についてはMPEG-1、MPEG-2、MPEG-4/H.264、H.263、DVなどを、音声についてはMP3、AAC、Apple Lossless、WAV、MIDI(音楽)などを選択することができます。
各データはトラックという単位で格納されて再生時に重ね合わせて出力されるため、特定のタイミングで字幕を表示するといった複合的なデータを表現することができます。
MP4はMOVから派生したのでこのような性質を受け継いでいます。
ちなみにmacOSのdefaultの設定で録画した場合やSwiftのAVCaptureMovieFileOutputで録画した場合はMOV形式で保存されます。

MKV

MKVの正式名称はMatroskaでMatroska.orgによって開発されました。
どんなコーデックにも対応しています。
字幕表示のON・OFF、多重字幕、多重音声、ファイル自体が欠損したままの再生など非常に多くのことができる。
拡張子は.mkv(Matroska Video)や.mka(Matroska Audio)が一般的です。
Windows 10から標準対応したので、世界的に流行する機運が高まっています。

音声圧縮方式

WAVE

WAVまたはWAVE(RIFF waveform Audio Format)は、Microsoft CorporationとIBMにより開発された音声データ記述のためのフォーマットで、RIFF(Resource Interchange File Format、タグ付きデータを格納するための汎用メタファイル形式)の一種です。
主としてWindowsで使われ、ファイルに格納した場合の拡張子は、.wavです。
通常は非圧縮linear PCM (linearは非圧縮を意味する)のサンプリングデータ用のフォーマットとして扱われますが、WAVはいわゆるコンテナ形式で、データ形式は自由なので、μ-lawや、ADPCM、MP3、WMAなどの圧縮データを格納することもできます。

AIFF

AIFFはApple Inc.製のコンテナフォーマットで、データ形式はRIFFと似ています。
AIFFは主としてMacintoshやAmiga上で使われ、ファイルに格納した場合の拡張子は、.aiff.aifです。
一般には非圧縮linear PCMのサンプリングデータ用のフォーマットとして扱われますが、圧縮音声も記録でき、非可逆圧縮を利用した場合のファイル拡張子は.aifc(AIFF-Compression)となります。

AAC

AAC(Advanced Audio Coding)は、不可逆のデジタル音声圧縮を行う音声符号化規格で、1997年にISO/IEC JTC 1のMoving Picture Experts Group (MPEG)において規格化されました。
ここで不可逆圧縮というのはdecompressionしたときに、完全に復元されることがないという意味であり、復元がまったくもって不可能という意味ではないという点に注意してください。
MP3の後継フォーマットとして策定され、一般的にAACは同程度のビットレートであればMP3より高い音声品質を実現しています。
ただしMP3がMPEG-1の拡張形式であるのに対して、AACはMPEG-4形式がベースとなっている。
AACはISOとIECにより、MPEG-2およびMPEG-4仕様の一部として標準化されました。
ファイル形式としては、MOV, MP4, AVI, Matroska, MPEG-2 TSに対応しています。m4aという拡張子がつくこともあるようです。

MP3

MP3は、元々ビデオ圧縮規格であるMPEG-1のオーディオ規格として開発されました。
不可逆圧縮であり、それ以前の規格であるMP1およびMP2を改良したものにあたります。
当初はMPEG-1 Audio Layer-3の略称だったが、のちに互換性を持つMPEG-2 AudioBC (MPEG-2 Audio Layer-3)が加わったので、合わせてMPEG-1/2 Audio Layer-3とすることもあります。
ファイル形式としては、ASF、AVI、Ogg、OGM、Matroska、MOV、MP4、MPEG-2、WAVに対応しています。

.m4aってなんやねん

拡張子.m4aはApple Inc.が使いだしたもので、MP4コンテナにAAC形式かApple Lossless形式で圧縮された音声データや楽曲情報(タグ)を入れたものです。
本来のルールからすると拡張子.mp4にすべきものですが、iPod/iTunesの隆盛により今や一般化しています。
拡張子.aacのファイルは、AAC形式の音声データをコンテナなどに入れずに裸のままファイルにしたものです。
楽曲情報(タグ)などが必要な場合はMP3と同じID3タグか、Monkey's Audioと同じAPEタグを付ける場合が多いようです。
ちなみにこういったものについて、(例えばAACの場合、)音声データ形式だけは同じでもファイルの構造が異なりますので、拡張子だけを.m4a.aacなどと書き換えてはいけません。
音声ファイルとしての機能、性能面での優劣は殆どありませんが、iPod/iTunesのおかげで.m4aは現在デファクトスタンダードであり、.m4aの方が対応ソフトや機器が多いと思います。
このように、拡張子が多様化してしまうのは、拡張子というものが「どの形式のコンテナにどの形式で処理されたメディアを格納するか」に対応しているからなのです。
したがって、これらのデータに変換などの処理をかませるときは拡張子に注目するというよりは、格納されているデータの形式に注目する必要があります。

R&Dテックブログ

Discussion