音声・動画・ストリーミングについて、データフォーマットを起点に調べたことをまとめます。
取っ掛かりとして Wikipedia の以下のページから見始めて、気になる用語などを色々調べました。
基本用語
まず、音声や動画データを扱う上で登場する、以下の 4 つの用語についてまとめます。
- エンコード
- デコード
- コーデック
- コンテナフォーマット
エンコード
音声や動画については、圧縮することをエンコードと言います。
どのように圧縮しているかの概要は、以下のページが分かりやすかったです。
デコード
エンコードされた状態のデータはそのまま再生できないため、再生するときに行う処理がデコードです。
コーデック
エンコードとデコードが可能な装置やソフトウェア、アルゴリズムをコーデックと言います。
コンテナフォーマット
複数のデータを 1 つのファイルにまとめる際の形式をコンテナフォーマットと言います。
例えば、
- WAV
- MOV (QuickTime file Format)
- MP4
といったファイル形式は、コンテナフォーマットの一種です。
この中に音声・動画・チャプター・字幕などのデータを入れます。
なお、これらの用語については以下のサイトの解説も分かりやすいです。
なお、コンテナフォーマットと tar などのアーカイブの違いについては、少し調べても分かりませんでした。
音声ファイルフォーマット
次に、音声データについて書いていきます。
音声ファイルフォーマットとしてよく耳にするのは、
- WAV
- MP3
あたりだと思います。
WAV (または WAVE)
WAV は正確には音声データフォーマットではなく、音声データのためのコンテナデータフォーマットです。
WAV 自体は非圧縮で、内部には任意のデータを持つことができます。
保持するデータとしては、圧縮されていない音声データの場合もあれば、MP3 のデータを保存することも可能です。
WAF は圧縮されていない、MP3 は圧縮されている、という説明がされる場合もあるようです。
参考
- WAV - Wikipedia
- 【デジタル音源とは?】WAV と MP3 の違い | MotionElements
- 【全ての謎が解けるかも?】MP3 と WAV の違いを徹底検証しましょう! | Vook(ヴック)
MP3 (MPEG-1 Audio Layer-3)
MP3 は、音声データを圧縮したファイルフォーマットです。
ちなみに、Wikipedia によると MP3 と MP4 は直接関連がないそうです。
MP3 と MP4 の名称が類似していることから MP4 が同類の Audio Layer-4 と誤解されるケースが見受けられるが、MP4 はあくまで MPEG-4 の関連規格であり、直接の関連性はない規格である。
参考: MP3 - 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 つです。
ストリーミング
最後に、音声や動画のストリーミングについてです。
ストリーミングのプロトコル
ストリーミングに使われるプロトコル・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 をサポートするサービスならどれでも利用可能なようです。