今日は音声と映像の基礎知識を学びます。日常の仕事では音声と映像の開発に触れることが多く、現在の仕事では TSPlayer、IjkPlayer、MediaPlayer などの再生機能に関わっています。どのプレーヤーも上層の呼び出しは大差ありませんが、具体的な実装やサポートされる機能は異なります。さらに深く学ぶためには、音声と映像の学習を深める必要があります。Android 開発の主な方向性は、アプリケーション、フレームワーク、音声と映像、NDK などであり、Android 分野でさらに進むには、これらの課題を克服する必要があります。主な内容は以下の通りです:
- 動画コーディング
- 音声コーディング
- マルチメディア再生コンポーネント
- フレームレート
- 解像度
- コーディングフォーマット
- コンテナフォーマット
- ビットレート
- カラースペース
- サンプリングレート
- 量子化精度
- チャンネル
動画コーディング#
動画コーディングとは、特定の圧縮技術を用いて、ある動画ファイル形式を別の動画形式ファイルに変換する方法を指します。動画伝送における主要なコーデック標準は以下の通りです:
-
動画静止画像専門家グループの M-JPEG
- M-JPEG は画像圧縮コーディング標準で、Motion-JPEG の略称です。JPEG 標準は静止画像を処理するために主に使用されますが、M-JPEG は動く動画シーケンスを連続した静止画像として処理します。この圧縮方式は各フレームを独立して完全に圧縮し、編集過程で各フレームをランダムに保存でき、フレーム単位での精密な編集が可能です。M-JPEG はフレーム内の空間的冗長性のみを圧縮し、フレーム間の時間的冗長性は圧縮しないため、圧縮効率は高くありません。
-
国際標準化機構(ISO)運動画像専門家グループの MPEG シリーズ標準
- MPEG 標準には主に 5 つがあります:MPEG-1、MPEG-2、MPEG-4、MPEG-7 および MPEG-21 など。MPEG 標準の動画圧縮コーディング技術は、時間的冗長性を減少させるために動き補償を伴うフレーム間圧縮コーディング技術を利用し、DCT 技術を使用して画像の空間的冗長性を減少させ、エントロピーコーディングを用いて情報表現において統計的冗長性を減少させます。これらの技術の総合的な利用により、圧縮性能が大幅に向上しました。
-
国際電気通信連合(ITU-T)の H.261、H.263、H.264 など
- H.261:最初の実用的なデジタル動画デコーディング標準で、使用される圧縮アルゴリズムは動き補償フレーム間予測とブロック DCT を組み合わせた混合コーディングです。動き補償は全画素精度とループフィルタリングを使用し、CIF と QCIF の 2 つの解像度をサポートします。
- H.263:H.263 は H.261 のコーディングアルゴリズムと同様ですが、少し改善されており、H.263 標準は低ビットレートで H.261 よりも良い画像効果を提供します。動き補償は半画素精度を使用し、CIF、QCIF、SQCIF、4CIF および 16CIF の 5 つの解像度をサポートします。
- H.264:H.264 は ISO と ITU-T の 2 つの組織によって共同で設立された共同動画グループ(JVT)によって策定された新しいデジタル動画コーディング標準です。そのため、ITU-T の H.264 であり、ISO/IEC の MPEG-4 高度動画コーディング(Advanced Video Coding、AVC)の第 10 部でもあります。したがって、MPEG-4 AVC、MPEG-4 Part 10、ISO/IEC 14496-10 いずれも H.264 を指します。H.264 は従来のフレームワークに基づく混合コーディングシステムであり、局所的な最適化が行われ、コーディング効率と信頼性に重点が置かれています。H.264 は高圧縮比を持ちながら、高品質で滑らかな画像を提供し、H.264 で圧縮された動画データは、ネットワーク伝送中に必要な帯域幅が少なく、最高の圧縮率を持つ動画圧縮標準です。
音声コーディング#
一般的な音声コーデック標準は以下の通りです:
- ITU:G.711、G.729 など
- MPEG:MP3、AAC など
- 3GPP:AMR、AMR-WB、AMR-WB+ など
- 企業が定めた標準、例えば Dolby AC-3、DTS、WMA など
一般的な紹介は以下の通りです:
-
MP3(MPEG-1 audio layer 3):音声圧縮技術の一つで、音声データ量を大幅に削減するために設計されています。MPEG Audio Layer 3 の技術を利用して、音楽を 1:10 または 1:12 の圧縮率で、容量の小さいファイルに圧縮します。大多数のユーザーにとって、再生音質は元の非圧縮音声と比較して明らかな低下はありません。これは人間の耳が高周波音信号に対して鈍感である特性を利用し、時域波形信号を周波数域信号に変換し、複数の周波数帯域に分け、異なる圧縮率を使用します。高周波には圧縮比を大きく(場合によっては信号を無視)し、低周波信号には小さな圧縮比を使用して信号の歪みを防ぎます。これにより、人間の耳がほとんど聞こえない高周波音を捨て、聞こえる低周波部分のみを保持することで、音声を一定程度圧縮します。さらに、MP3 は損失圧縮のファイル形式です。
-
AAC:Advanced Audio Coding の略で、最初は MPEG-2 の音声コーディング技術に基づいていました。MPEG-4 が登場した後、AAC はその特性を再統合し、SBR 技術と PS 技術を追加しました。従来の MPEG-2 AAC と区別するために、MPEG-4 AAC とも呼ばれます。AAC は音声データ専用に設計されたファイル圧縮形式で、MP3 と比較して音質が優れ、ファイルサイズも小さいですが、AAC は損失圧縮形式です。大容量デバイスの登場に伴い、その利点は次第に小さくなっています。
-
WMA:Windows Media Audio の略で、マイクロソフトが開発した一連の音声コーデックを指し、対応するデジタル音声コーディング形式も指します。WMA には 4 種類の異なるコーデックがあります:WMA、元の WMA コーデック、MP3 および RealAudio コーデックの競争相手;WMA Pro、より多くのチャンネルと高品質の音声をサポート;WMA Lossless、無損失コーデック;WMA Voice、音声を保存するために低ビットレート圧縮を使用します。すべてのコンテンツを Windows Media Audio コーディング形式でエンコードする純音声 ASF ファイルも WMA 拡張子を使用し、特徴は暗号化をサポートし、不正コピーはローカルで再生できないことです。WMA も損失圧縮のファイル形式に属します。
さらに音声と映像のコーデック標準については、音声コーデック標準を参照してください。
マルチメディア再生コンポーネント#
Android のマルチメディア再生コンポーネントには MediaPlayer、MediaCodec、OMX、StageFright、AudioTrack などが含まれ、具体的には以下の通りです:
- MediaPlayer:アプリケーション層に提供される再生制御インターフェース
- MediaCodec:低レベルのメディアコーデックへのアクセスを提供するインターフェース
- OpenMAX:Open Media Acceleration の略で、OMX とも略され、オープンマルチメディアアクセラレーション層はマルチメディアアプリケーションの標準です。Android の主要なマルチメディアエンジン StageFright は IBinder を介して OpenMax を使用し、コーディングとデコーディング処理に使用されます。
- StageFright:Android 2.2 から導入され、プリセットのメディア再生エンジン OpenCORE を置き換えるために使用されます。Stagefright はネイティブ層に位置するメディア再生エンジンで、ソフトウェアベースのコーデックを内蔵し、人気のあるメディアフォーマットに適しています。そのコーディング機能は OpenMAX フレームワークを利用し、OpenCORE の omx-component 部分を導入しています。Android では共有ライブラリの形式で存在し、libstagefright.so に対応します。
- AudioTrack:単一の音声リソースを管理および再生し、PCM ストリームのみをサポートします。ほとんどの WAV 形式の音声ファイルは PCM ストリームであり、この種の音声ファイルは AudioTrack で直接再生できます。
一般的なマルチメディアフレームワークおよびソリューション#
一般的なマルチメディアフレームワークおよびソリューションには VLC、FFmpeg、GStream などがあり、具体的には以下の通りです:
- VLC:Video LAN Client の略で、自由でオープンソースのクロスプラットフォームマルチメディアプレーヤーおよびフレームワークです。
- FFmpeg:マルチメディアソリューションであり、マルチメディアフレームワークではなく、音声と映像の開発に広く使用されています。
- GStreamer:ストリーミングアプリケーションを構築するためのオープンソースマルチメディアフレームワークです。
フレームレート#
フレームレートは、表示フレーム数を測定するための尺度です。単位は「毎秒表示フレーム数」(Frame per Second、FPS)または「ヘルツ、Hz」で、毎秒のフレーム数(FPS)を示します。フレームレートは、グラフィックプロセッサが処理場面を毎秒更新できる回数を示します。高いフレームレートは、より滑らかでリアルなアニメーションを得ることができます。一般的に 30fps は受け入れられますが、性能を 60fps に向上させると、インタラクション感とリアリズムが明らかに向上します。しかし、一般的に 75fps を超えると、明らかな滑らかさの向上は感じにくくなります。フレームレートが画面のリフレッシュレートを超えると、グラフィック処理能力が無駄になります。モニターはそれほど速く更新できないため、リフレッシュレートを超えるフレームレートは無駄になります。
解像度#
動画解像度は、動画映像製品が形成する画像のサイズまたは寸法を指します。一般的な 1080P、4K などは何を表しているのでしょうか。P 自体の意味は逐次走査で、動画ピクセルの総行数を示します。1080P は合計 1080 行のピクセル数を示し、K は動画ピクセルの総列数を示します。4K は 4000 列のピクセル数を示します。通常、1080P は 1080 x 1920 の解像度を指し、4K は 3840 x 2160 の解像度を指します。
リフレッシュレート#
リフレッシュレートは、画面が毎秒更新される回数を示します。リフレッシュレートは垂直リフレッシュレートと水平リフレッシュレートに分かれます。一般に言及されるリフレッシュレートは通常、垂直リフレッシュレートを指します。垂直リフレッシュレートは、画面の画像が毎秒何回再描画されるかを示し、すなわち毎秒の画面の更新回数を示します。単位は Hz(ヘルツ)で、リフレッシュレートが高いほど良く、画像はより安定し、表示がより自然で明瞭になり、目への影響も少なくなります。リフレッシュ頻度が低いと、画像のちらつきや揺れが激しくなり、目が疲れやすくなります。一般的に、80Hz 以上のリフレッシュ頻度に達すれば、画像のちらつきや揺れ感を完全に消すことができ、目もそれほど疲れません。
コーディングフォーマット#
音声と映像に関して、コーディングフォーマットは音声コーディングと動画コーディングに対応します。前述の音声コーディング標準と動画コーディング標準を照らし合わせると、各コーディング標準には対応するコーディングアルゴリズムがあり、その目的は特定のコーディングアルゴリズムを通じてデータの圧縮と冗長性の削減を実現することです。
コンテナフォーマット#
百度百科のコンテナフォーマットに関する紹介を直接見てみましょう。コンテナフォーマット(または容器)は、すでにコーディング圧縮された動画トラックと音声トラックを特定のフォーマットで 1 つのファイルに格納することを指します。つまり、単なる外殻であり、動画トラックと音声トラックを格納するフォルダーとして考えることもできます。言い換えれば、動画トラックはご飯に相当し、音声トラックは料理に相当し、コンテナフォーマットはそれらを盛るための器、または鍋です。
ビットレート#
ビットレート、すなわちビットレート(Bit rate)は、単位時間内に伝送または処理されるビットの数を指し、単位は bps(bit per second)または b/s で表されます。ビットレートが高いほど、単位時間内に送信されるデータ量(ビット数)が大きくなります。マルチメディア業界では、音声または動画の単位時間内のデータ伝送率を指す際に通常ビットレートを使用し、単位は kbps です。一般的に、1M の帯域幅の場合、オンラインで 125kbps を超えないビデオストリームしか視聴できず、125kbps を超えるビデオはバッファリングを待たなければスムーズに視聴できません。
ビットレートは一般に固定ビットレートと可変ビットレートに分かれます:
- 固定ビットレートはビットストリームのビットレートを一定に保ちますが、動画品質を犠牲にすることがあります。たとえば、ビットレートを一定に保つために、画像が豊富なコンテンツは一部の画像の詳細を失い、ぼやけてしまうことがあります。
- 可変ビットレートは出力ビットストリームのビットレートが可変であることを指します。動画信号自体のピーク情報量は変化するため、動画伝送品質を確保し、情報を十分に活用する観点から、可変ビットレート動画コーディングが最も合理的です。
ビットレートの高低は動画品質とファイルサイズに正比例しますが、ビットレートが一定の数値を超えると、動画品質には影響しなくなります。
カラースペース#
- YUV:色のコーディング方法の一つで、一般的に画像処理コンポーネントで使用されます。YUV は写真や動画をコーディングする際に、人間の感知能力を考慮し、色度の帯域幅を低下させることを許可します。Y は明るさ、U は色度、V は濃度を示します。Y′UV、YUV、YCbCr、YPbPr の範囲は、混同または重複することがよくあります。歴史的な変遷から見ると、YUV と Y'UV は通常、テレビのアナログ信号をコーディングするために使用され、YCbCr はデジタルの画像信号を記述するために使用され、動画や画像の圧縮および伝送に適しています。たとえば、MPEG、JPEG など、現在 YUV はコンピュータシステムで広く使用されています。
- RGB:原色光モード、または RGB カラーモデルまたは赤緑青カラーモデルとも呼ばれ、加色モデルの一種です。赤(Red)、緑(Green)、青(Blue)の三原色の光を異なる比率で加算して、さまざまな色彩光を合成します。現在のほとんどのディスプレイは RGB という色標準を採用しています。
YUV は主にカラービデオ信号の伝送を最適化し、古い白黒テレビとの後方互換性を持たせるために使用されます。RGB ビデオ信号の伝送と比較して、YUV の最大の利点は、非常に少ない帯域幅しか占有しないことです。
サンプリングレート#
サンプリングレートは、連続信号から離散信号を抽出して構成するサンプリングの数を示し、ヘルツ(Hz)で表されます。サンプリングレートは、アナログ信号をデジタル信号に変換する際のサンプリング周波数を指します。人間の耳が聞こえる音は一般的に 20Hz~20KHz の範囲にあり、サンプリング定理により、サンプリング周波数が信号中の最高周波数の 2 倍を超えると、サンプリング後のデジタル信号は真の信号を完全に反映できます。一般的なサンプリングレートは以下の通りです:
- 8000 Hz:電話で使用されるサンプリングレートで、人の話す声には十分です。
- 11025 Hz:AM 調幅放送で使用されるサンプリングレート。
- 22050 Hz および 24000 Hz:FM 調頻放送で使用されるサンプリングレート。
- 44100Hz:音声 CD で、一般的に MPEG-1 音声(VCD、SVCD、MP3)で使用されるサンプリングレート。
- 47250 Hz:商用 PCM 録音機で使用されるサンプリングレート。
- 48000 Hz:miniDV、デジタルテレビ、DVD、DAT、映画および専門音声で使用されるデジタル音声のサンプリングレート。
CD 音楽の標準サンプリング周波数は 44.1KHz で、これは現在のサウンドカードとコンピュータ作業間で最も一般的なサンプリング周波数です。現在流行しているブルーレイのサンプリングレートは非常に高く、192kHz に達しています。現在のサウンドカードの大多数は 44.1kHz、48kHz、96kHz をサポートしており、高級製品は 192kHz 以上をサポートしています。要するに、サンプリングレートが高いほど、得られる音声ファイルの品質が向上し、占有するストレージスペースも大きくなります。
量子化精度#
音波がデジタル信号に変換される過程で、原音の完全性に影響を与える要因はサンプリングレートだけではなく、量子化精度も重要な影響要因です。サンプリング周波数は毎秒のサンプリング数を対象とし、量子化精度は音波の振幅を切り分けることを指します。切り分けの数は最大振幅を 2 の n 乗で計算し、n はビット数です。ビット数は音声の解像度を示します。
さらに、ビット数は音波振幅の範囲(すなわちダイナミックレンジ、最大音量と最小音量の差)を決定します。このビット数が大きいほど、表現できる数値が大きくなり、波形をより正確に記述できます。各ビットのデータは約 6dB のダイナミック信号を記録できます。一般的に、16Bit は最大 96dB のダイナミックレンジを提供できます(高周波の揺れ後は 92dB しかありません)。これに基づいて、20Bit は 120dB のダイナミックレンジに達することが推測できます。ダイナミックレンジが大きくなると、どのような利点があるのでしょうか?ダイナミックレンジはシステムの出力ノイズ電力と最大非歪音量電力の比率を指します。この値が大きいほど、システムは非常に高いダイナミックを耐えることができます。
チャンネル#
チャンネルは、音声が録音または再生される際に異なる空間位置で収集または再生される相互独立の音声信号を指します。したがって、チャンネル数は音声録音時の音源の数または再生時の対応するスピーカーの数を示します。一般的なチャンネルにはモノラル、ステレオ、4 チャンネル、5.1 チャンネル、7.1 チャンネルなどがあります。具体的には以下の通りです:
- モノラル:1 つのスピーカーを設定します。
- ステレオ:モノラルの 1 つのスピーカーを左右対称の 2 つのスピーカーに拡張し、音声が録音過程で 2 つの独立したチャンネルに配分されることで、非常に良い音声定位効果を達成します。この技術は音楽鑑賞において特に有用で、リスナーはさまざまな楽器がどこから来ているかを明確に識別でき、音楽がより想像力豊かになり、臨場感に近づきます。ステレオ技術は Sound Blaster Pro 以降の多くのサウンドカードに広く適用され、影響力のある音声標準となりました。
- 4 チャンネル:4 チャンネルサラウンドは 4 つの発音点を規定し、前左、前右、後左、後右の位置に配置され、リスナーは中央に包囲されます。同時に、低音スピーカーを追加して低周波信号の再生処理を強化することが推奨されます。これが現在の 4.1 チャンネルスピーカーシステムが広く普及している理由です。全体的な効果として、4 チャンネルシステムはリスナーにさまざまな方向からの音声サラウンドを提供し、さまざまな環境における聴覚体験を得ることができ、新しい体験を提供します。
- 5.1 チャンネル:実際には 5.1 チャンネルシステムは 4.1 チャンネルシステムから派生したもので、サラウンドチャンネルを二つに分け、左サラウンドと右サラウンドに分け、中央位置に重低音効果を追加します。
- 7.1 チャンネル:7.1 チャンネルシステムは 5.1 チャンネルシステムを基にして、中左と中右の 2 つの発音点を追加します。簡単に言えば、リスナーの周囲に前後のバランスの取れた音場を構築し、後中音場チャンネルを増やします。