All Articles

音声・動画・ストリーミングのデータの基本

音声・動画・ストリーミングについて、データフォーマットを起点に調べたことをまとめます。

取っ掛かりとして Wikipedia の以下のページから見始めて、気になる用語などを色々調べました。

基本用語

まず、音声や動画データを扱う上で登場する、以下の 4 つの用語についてまとめます。

  • エンコード
  • デコード
  • コーデック
  • コンテナフォーマット

エンコード

音声や動画については、圧縮することをエンコードと言います。

参考: エンコード - Wikipedia

どのように圧縮しているかの概要は、以下のページが分かりやすかったです。

デコード

エンコードされた状態のデータはそのまま再生できないため、再生するときに行う処理がデコードです。

コーデック

エンコードとデコードが可能な装置やソフトウェア、アルゴリズムをコーデックと言います。

参考: コーデック - Wikipedia

コンテナフォーマット

複数のデータを 1 つのファイルにまとめる際の形式をコンテナフォーマットと言います。

例えば、

  • WAV
  • MOV (QuickTime file Format)
  • MP4

といったファイル形式は、コンテナフォーマットの一種です。

この中に音声・動画・チャプター・字幕などのデータを入れます。

参考: コンテナフォーマット - Wikipedia

なお、これらの用語については以下のサイトの解説も分かりやすいです。

なお、コンテナフォーマットと tar などのアーカイブの違いについては、少し調べても分かりませんでした。

音声ファイルフォーマット

次に、音声データについて書いていきます。

音声ファイルフォーマットとしてよく耳にするのは、

  • WAV
  • MP3

あたりだと思います。

WAV (または WAVE)

WAV は正確には音声データフォーマットではなく、音声データのためのコンテナデータフォーマットです。

WAV 自体は非圧縮で、内部には任意のデータを持つことができます。

保持するデータとしては、圧縮されていない音声データの場合もあれば、MP3 のデータを保存することも可能です。

WAF は圧縮されていない、MP3 は圧縮されている、という説明がされる場合もあるようです。

参考

MP3 (MPEG-1 Audio Layer-3)

MP3 は、音声データを圧縮したファイルフォーマットです。

ちなみに、Wikipedia によると MP3 と MP4 は直接関連がないそうです。

MP3 と MP4 の名称が類似していることから MP4 が同類の Audio Layer-4 と誤解されるケースが見受けられるが、MP4 はあくまで MPEG-4 の関連規格であり、直接の関連性はない規格である。

参考: MP3 - Wikipedia

音声データの処理

音声データの処理で登場する、フーリエ変換などについて少し触れておきます。

フーリエ変換

音声データは様々な周波数から成り立っているため、フーリエ変換で分解して扱うのが定番です。

参考

高速フーリエ変換

フーリエ変換をコンピュータで実行するにはそのためのアルゴリズムが必要です。

コンピュータで高速に (離散) フーリエ変換を実行するためのアルゴリズムが、「高速フーリエ変換」です。

スペクトログラム

音声データをフーリエ変換を利用して可視化したものがスペクトログラムです。

参考: スペクトログラム - Wikipedia

メル尺度

音声を人間の聴覚に基づいて変換する際の尺度として、メル尺度というものがあるそうです。

参考: メル尺度 - Wikipedia

動画ファイルフォーマット

続いて、動画ファイルフォーマットについてです。

よく登場する

  • MP4
  • MOV
  • H.264/MPEG-4 AVC

について書いていきます。

MP4 (MPEG-4 Part 14)

MP4 自体は動画のフォーマットではなく、コンテナフォーマットです。

内部に動画・音声・静止画・テキストを保存できます。

参考: MP4 - Wikipedia

MOV (QuickTime Movie)

MOV は、Mac OS を中心に使われている QuickTime のコンテナフォーマットです。

MP4 や MOV の中で保持される動画は、H.264/MPEG-4 AVC などの形式になります。

H.264/MPEG-4 AVC

H.264 (または MPEG-4 AVC) は、動画圧縮規格 1 つです。

参考: H.264 - Wikipedia

ストリーミング

最後に、音声や動画のストリーミングについてです。

参考: ストリーミング - Wikipedia

ストリーミングのプロトコル

ストリーミングに使われるプロトコル・API として、

  • HLS (HTTP Live Streaming)
  • WebRTC
  • RTMP (Real Time Messaging Protocol)

について書いていきます。

HLS (HTTP Live Streaming)

Apple による HTTP ベースのストリーミング・プロトコルです。

.m3u8 とい拡張子のファイルと、.ts という拡張子のファイルで実現されます。

仕組みについては、以下のページが分かりやすいです。

HLS 以外にも、HTTP ベースのストリーミングプロトコルとして MPEG-DASH があり、YouTube もこれらを使っていると書いている記事もありました。

参考: YouTube はなんでライブ配信が“1 対多”でもスムーズなの? - PHILE WEB

WebRTC

WebRTC は、Web 標準の P2P マルチキャスト配信の API です。

プロトコル自体は標準化されていないとのことです。

Web 会議ツールの実装などで使えるプロトコルとしてよく名前が挙がります。

(Zoom は WebRTC を使っていないそうです)

RTMP (Real Time Messaging Protocol)

IFTF で標準化されているストリーミングのプロトコルです。

多くのブラウザは直接対応していません。

ライブ配信などでよく使われる OBS (Open Broadcaster Software) は、RTMP を送出するツールのため、RTMP をサポートするサービスならどれでも利用可能なようです。

参考: Open Broadcaster Software - Wikipedia