banner
jzman

jzman

Coding、思考、自觉。
github

音声と映像の開発に関する基本知識

今日は音声と映像の基礎知識を学びます。日常の仕事では音声と映像の開発に触れることが多く、現在の仕事では TSPlayer、IjkPlayer、MediaPlayer などの再生機能に関わっています。どのプレーヤーも上層の呼び出しは大差ありませんが、具体的な実装やサポートされる機能は異なります。さらに深く学ぶためには、音声と映像の学習を進める必要があります。Android 開発の主な方向性は、アプリケーション、フレームワーク、音声と映像、NDK などです。Android 分野でさらに進むためには、これらの課題を解決する必要があります。主な内容は以下の通りです:

  1. 動画コーディング
  2. 音声コーディング
  3. マルチメディア再生コンポーネント
  4. フレームレート
  5. 解像度
  6. コーディング形式
  7. コンテナ形式
  8. ビットレート
  9. カラースペース
  10. サンプリングレート
  11. 量子化精度
  12. チャンネル

動画コーディング#

動画コーディングとは、特定の圧縮技術を使用して、ある動画ファイル形式を別の動画形式ファイルに変換する方法を指します。動画伝送における主要なコーデック標準は以下の通りです:

  • 動き静止画像専門家グループの 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)によって策定された新しいデジタル動画コーディング標準です。したがって、H.264 は 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 の略で、Microsoft が開発した一連の音声コーデックを指し、対応するデジタル音声コーディング形式も指します。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 以上のリフレッシュ頻度に達すれば、画像のちらつきや揺れ感を完全に排除でき、目もあまり疲れません。

コーディング形式#

音声と映像に関して、コーディング形式は音声コーディングと動画コーディングに対応します。前述の音声コーディング標準と動画コーディング標準を照らし合わせると、各コーディング標準には対応するコーディングアルゴリズムがあり、その目的は特定のコーディングアルゴリズムを通じてデータを圧縮し、データの冗長性を減少させることです。

コンテナ形式#

百度百科のコンテナ形式に関する紹介を直接見てみましょう。コンテナ形式(または容器)は、すでにコーディングされ圧縮された動画トラックと音声トラックを特定の形式でファイルに格納することを指します。つまり、単なる外殻であり、動画トラックと音声トラックを格納するフォルダーとして考えることもできます。言い換えれば、動画トラックはご飯に相当し、音声トラックは料理に相当します。コンテナ形式はご飯と料理を盛るための器、つまりボウルや鍋です。

ビットレート#

ビットレートは、単位時間内に伝送または処理されるビットの数を指します。単位は 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 の動画信号伝送と比較して、最大の利点は非常に少ない帯域幅を占有することです。

サンプリングレート#

サンプリングレートは、連続信号から離散信号を抽出して構成するサンプリングの個数を示し、ヘルツ(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 チャンネルシステムから派生したもので、サラウンドチャンネルを 2 つに分け、左サラウンドと右サラウンドに分け、中央位置に重低音効果を追加します。
  • 7.1 チャンネル:7.1 チャンネルシステムは 5.1 チャンネルシステムの基礎の上に、中左と中右の 2 つの発音点を追加します。簡単に言えば、リスナーの周囲に前後のバランスの取れた音場を構築し、後中音場チャンネルを増やします。
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。