ソフトウェア

動画をデジタルで扱うための基本知識まとめ、映像や音声はどうやってPCで処理されているのか?


技術の進歩によって、スマートフォンでいつでもどこでも映画やテレビ番組を楽しめるようになりました。また、誰でも簡単に動画を編集し、YouTubeやVimeoなどのオンライン共有サービスで公開することもできます。動画をデジタルで処理する上で必要な基礎知識について、ウェブページ上で動作する動画プレイヤーを開発する「Mux」が解説しています。

HowVideo.works
https://howvideo.works/#processing

◆映像
人間は画像を目で捉えると、残像として認識の中に画像が一瞬残ります。その残像が残っている間に、前とちょっと違った画像を見ると動いているように認識されるというのが、映像の原理です。


映像を構成する1枚の画像のことを「フレーム」と呼びます。また、映像の世界でよく出てくる「fps」という単位は「フレーム毎秒(frames per second)」という意味で、画像が連続する1秒当たりの枚数である「フレームレート」を示します。一般的には30fpsや60fpsが多く、映画では24fpsという規格がよく使われます。

そして、デジタル情報としてフレームを表示するには、「ピクセル」と呼ばれる小さな点を使います。このピクセルは光の三原色である赤・緑・青(RGB)の階調情報を持っており、1色当たりのデータ容量が「色深度」という形で示されます。例えば1色当たり28=256段階に階調を記録できる場合、色深度は8ビットとなり、1ピクセル当たりの情報量は8ビット×3=24ビット=3バイトとなります。


また、フレームを構成するピクセルの量がフレームの情報量である「解像度」で、横のピクセル数×縦のピクセル数で表わされます。例えば解像度1920×1080ピクセルの動画だと、フレームのピクセル量は横1920ピクセル×縦1080ピクセル=207万3600ピクセルになります。


映像のデータサイズは、解像度・フレームレート・色深度・映像の長さで計算できます。例えば解像度1920×1080ピクセル・色深度8ビット・フレームレート60fpsの映像が5秒間ある場合、ファイルサイズは1920×1080ピクセル×3バイト×60fps×5秒=18億6624万バイト(約1.78ギガバイト)になります。

◆音声
映像と一緒になっている音声は空気の振動を耳で捉えることで認識できます。つまり、音声は波として表現することが可能。ただし、音声をデジタル化するためには、本来は連続的な波を離散的な数字に変換する必要があります。


そこで、一定の間隔で規則的に音声の波をサンプリングし、最も近い値に量子化します。1秒間にどれだけ波をサンプリングできるかを示すのが「サンプリング周波数」です。例えば、CDで使われるサンプリング周波数は通常44.1kHzです。これは「音の波が1秒につき4万4100個のデータに変換される」ということを意味します。サンプリング周波数はいわば音声のフレームレートであり、高ければ高いほど音が滑らかになり、高音質に感じられます。


さらにサンプリングされるデータ1つに持たせられる情報容量が「ビット深度」です。例えるのであれば、ビット深度は音の解像度であり、ビット深度が高ければ高いほど音の表現力が高まり、高音質に感じられます。

音声のデータサイズは、音声のチャンネル数・サンプリング周波数・ビット深度・音声の長さで決まります。例えば5.1chサラウンド(6チャンネル)・サンプリング周波数48kHz・ビット深度16ビット(2バイト)の音声が5秒間ある場合、ファイルサイズは6チャンネル×4万8000Hz×2バイト×5秒=288万バイト(約2.74メガバイト)になります。

◆コーデック
映像と音声を数値化することで、動画をデジタル化することができます。ただし、オリジナルのままだとファイルサイズがあまりにも巨大になります。そこで重要になるのが、映像や音声を圧縮するための規格である「コーデック」です。また、圧縮されていないデータをコーデックに基づいて圧縮することを「エンコード」と呼びます。オープンソースで開発されるフリーソフトウェアのFFmpegは、このエンコードを行うための老舗コマンドツールであり、対応コーデックも多いので幅広く利用されています。


そして、圧縮されたデータを再生することを「デコード」と呼びます。特定のコーデックでエンコードされた映像や音声をデコードするためには、再生機器にその特定のコーデックがインストールされている必要があります。

コーデックには非圧縮・可逆圧縮・非可逆圧縮の3種類があります。非圧縮コーデックはオリジナルのデータを保存するので、オリジナルと遜色ない動画を再生できますが、ファイルサイズは大きくなります。


可逆圧縮コーデックは圧縮したデータをほぼオリジナルに戻すことができるもので、ファイルサイズだけを小さくすることができます。ただし、何度もエンコードを繰り返すと少しずつ動画の品質は劣化していきます。また、データの圧縮率もそこまで大きくはありません。

非可逆圧縮コーデックは、動画の利便性や互換性を優先し、データの一部を簡略化することで高い圧縮性を見せます。ただし、オリジナルの動画が持つ品質は失われたままで、元に戻すことはできません。エンコードを重ねていくと、動画の品質も大きく失われていきます。

◆コンテナ
映像と音声をエンコードしてもそれで終わりではなく、圧縮した映像と音声をひとつのファイルにまとめる必要があります。複数のデータをまとめて格納するファイル形式をコンテナと呼びます。このコンテナには映像と音声だけではなく、再生時の同期情報やメタデータ、字幕、チャプターなども一緒に格納されます。


コンテナは何でも格納できるというわけではなく、コーデックの特許や可用性、再生デバイスのスペック、記録メディアの種類によって制限され、MPEG-4MatroskaMPEG-2 TSなどの規格があります。

コンテナに格納された動画を再生する場合は、ファイルやHTTPなどのプロトコルを介してメディアを読み込み、コンテナに格納されているデータを展開し、コーデックを使って映像と音声を再生します。


◆トランスコーディング・トランスレーティング・トランスサイジング
「トランスコーディング」は、動画のコーデックを変換するプロセスのことで、互換性やストレージコストなどの経済性を理由に行われます。例えば以下の画像のように、H.264/MPEG-4 AVCコーデックの映像が格納されたMP4形式の動画ファイルを、AV1コーデックの映像が格納されたMP4形式の動画ファイルに変換するのもトランスコーディングの1例です。


また、ファイルサイズを小さくするために、動画のエンコードを変更せずにビットレートだけを変更するのが「トランスレーティング」です。ビットレートは1秒当たりのデータ量であり、このビットレートを抑えることでファイルサイズも小さくなります。トランスレーティングによって、ネットワーク品質が低い環境やスペックの低いデバイスでも再生できるようになるほか、必要なストレージや回線帯域幅を節約できるので、経済性も向上します。

「トランスサイジング」は、動画の解像度を変更すること。動画の解像度を大きくすることをアップコンバート、小さくすることをダウンコンバートと呼びます。アップコンバートの場合、単純に解像度を大きくしても画質は低いままなので映像がぼやけてしまいますが、「Anime4K」のように動画の画質を維持しながら解像度を上げる技術も登場しています。

リアルタイムでアニメを4Kサイズにアップスケーリングできるオープンソースのアルゴリズム「Anime4K」 - GIGAZINE


◆パッケージング
近年は動画をすべてダウンロードしてから再生するのではなく、インターネットからデータを受信しながら再生するストリーミングが主流となっています。しかし、再生デバイスには、性能が低くて複雑な映像や音声の処理ができないものも存在します。また、ユーザーのネットワーク環境によって通信帯域幅が異なるため、コンテンツをダウンロードするために時間がかかることもあります。

そこで、「アダプティブビットレート(ABR)ストリーミング」という技術が登場しました。これは1つの動画データを自動的にビットレートを変換しながら受信するためのもの。例えば1時間の動画をABRストリーミングで配信する場合、動画を数秒ずつに分割し、それぞれの解像度を作成します。もし受信するデバイスでメディアを処理できなくなった場合、動的にビットレートが切り替わります。ネットワーク環境が貧弱になっても自動的に低解像度に切り替わるので、動画の視聴が途切れにくくなるというわけ。このABRストリーミングを可能にする処理がパッケージングです。


MUXは「互換性を高めるために行う作業以外にも、ユーザーエクスペリエンスを向上させるため、あるいはメリットを増やすために、はるかに複雑な作業が行われています。デジタルメディアを処理するためには、時間とハードウェアが必要であり、時間とお金のコストに見合うかどうかをバランスよく考えなければなりません」と述べました。

この記事のタイトルとURLをコピーする

・関連記事
高品質な動画のスムーズな配信を実現する技術とは? - GIGAZINE

Facebookは1日何億本もの動画をどうやってエンコードしているのか? - GIGAZINE

3kbpsという低いビットレートでも高音質を実現するコーデック「Lyra」をGoogleが開発 - GIGAZINE

ブラウザ上で動画生成や変換ができるWebAssembly版FFmpeg「ffmpeg.wasm」レビュー - GIGAZINE

幅広く利用される動画圧縮コーデック「H.264/MPEG-4 AVC」はどうやって巨大なサイズのムービーを劇的に圧縮するのか? - GIGAZINE

無料で5ミリ秒という超低遅延を実現する非可逆音声圧縮コーデック「Opus」、何がすごいのかまとめ - GIGAZINE

YouTubeやニコニコ動画などのムービーを最高画質・高音質でダウンロード可能な「yt-dlp」の使い方まとめ、年齢制限ムービーも一発ダウンロード可能 - GIGAZINE

in ソフトウェア, Posted by log1i_yk

You can read the machine translated English article here.