ApsaraVideo VOD で使用される一般的な動画および音声の用語 (ファイル形式、コンテナ形式、コーデック、トランスコーディングなど) について説明します。
ファイル形式
コンピューター上のすべてのファイルには、.doc、.jpg、.avi などの拡張子があり、オペレーティングシステムに、どのアプリケーションで開けるかを示します。一般的な動画ファイルの拡張子には、.avi、.mpg、.mp4 などがあります。
コンテナ形式
コンテナ形式 (マルチメディアコンテナとも呼ばれます) は、定義された仕様に基づき、圧縮されたビデオストリーム、オーディオストリーム、およびメタデータ (タイトルやキャプションなど) を 1 つのファイルにまとめます。
コンテナ形式は、次の 2 つのカテゴリに分類されます:
ストレージ指向の形式には、AVI、ASF (WMA または WMV) 、MP4、MKV、RMVB (RM または RA) があります。
ストリーミング指向の形式には、Flash Video (FLV) 、Transport Stream (TS) 、MP4 があります。TS では、HTTP Live Streaming (HLS) や Real-Time Messaging Protocol (RTMP) などのストリーミングプロトコルが必要です。MP4 は HTTP 経由のストリーミングをサポートしています。
一般的なストリーミング指向の形式と、それに関連するストリーミングプロトコルは次のとおりです:
-
MP4: モバイルデバイス (iOS および Android) とデスクトップブラウザーに対応する、広くサポートされているコンテナ形式です。MP4 ファイルは、配置やタイミング情報を含むすべてのメディアメタデータをヘッダーに格納します。長尺動画ではこのヘッダーが肥大化して読み込みが遅くなります。MP4 は短尺動画に最適です。
MP4 ファイルはボックス (以前はアトムと呼ばれていました) で構成されます。すべてのメディアメタデータはこれらのボックスに格納され、ビデオフレームなどの実際のメディアデータを参照します。動画の長さが増えるほどヘッダーが大きくなり、読み込みが遅くなります。
HLS (HTTP Live Streaming): Apple が開発した HTTP ベースのストリーミングプロトコルです。HLS はデフォルトで TS コンテナ形式を使用し、ストリームを小さな TS フラグメントに分割し、M3U8 インデックスファイルで再生を制御します。HLS は長いヘッダーバッファリング遅延を回避し、オンデマンドビデオに適しています。モバイルデバイス (iOS および Android) では幅広くサポートされていますが、PC の Internet Explorer では互換性に制限がある場合があります。ブラウザーの互換性を最大化するには、ApsaraVideo Player for Web を使用してください。
FLV: Adobe が開発した形式で、PC の Flash Player で幅広くサポートされています。モバイルデバイスでは、FLV を再生するために専用のプレーヤーアプリが必要であり、Apple デバイスを含むほとんどのモバイルブラウザーではサポートされていません。FLV の再生には ApsaraVideo Player を使用してください。
DASH (Dynamic Adaptive Streaming over HTTP): フラグメント化 MP4 (fMP4) を使用して動画を複数の独立してエンコード可能なセグメントに分割します。各セグメントでは、解像度やビットレートなど、異なるエンコーディング設定を使用できます。これにより、プレーヤーはアダプティブビットレートストリーミングとシームレスな品質切り替えのために、セグメントを動的に選択できます。DASH の Media Presentation Description (MPD) ファイルは、HLS の M3U8 ファイルと同じ役割を果たします。DASH は YouTube や Netflix などの主要なストリーミングプラットフォームで広く使用されています。
-
fMP4 を使用する HLS: WWDC 2016 で Apple が発表した拡張で、HLS が TS に加えて fMP4 も使用できるようになります。これにより、1 回のトランスコーディングジョブで、DASH と HLS の両方に互換性のある出力を生成できます。
HLS (fMP4 を使用する HLS を含む) と DASH は、最も広く採用されているアダプティブストリーミング技術です。本番環境へのデプロイには、これらの形式のいずれかを使用してください。
コーデック
コーデック (coder-decoder の略) とは、デジタル動画または音声を圧縮および伸長するプログラムまたはデバイスです。圧縮は通常、非可逆です。コーデックは、動画をある形式から別の形式に変換する際に使用される圧縮技術も定義します。代表的なコーデックファミリーには、次のものがあります:
-
H.26X シリーズ: 国際電気通信連合 (ITU) によって開発されました。H.261、H.262、H.263、H.264、H.265 が含まれます。
H.261: 初期のビデオ会議およびビデオ通話製品で使用されました。
H.262: 放送、DVD、デジタル TV の標準解像度 (SD) 動画に使用されました。
H.263: ビデオ会議、ビデオ通話、オンライン動画で使用されました。
H.264: MPEG-4 Part 10 または Advanced Video Coding (AVC) とも呼ばれます。高精度な録画、圧縮、配信において最も広く採用されている動画圧縮標準です。
H.265: High Efficiency Video Coding (HEVC) とも呼ばれ、H.264 の後継です。HEVC は H.264 の 2 倍の圧縮率 (同等の視覚品質でビットレートを 50% 削減) を実現し、最大 8192 × 4320 (8K) の解像度をサポートします。これは現在の業界の方向性です。
-
MPEG シリーズ: 国際標準化機構 (ISO) 傘下の作業部会である Moving Picture Experts Group (MPEG) によって開発されました。主要な動画コーディング標準には、次のものがあります:
MPEG-1 Part 2: VCD および一部の初期のオンライン動画で使用され、品質はおおむね VHS と同程度です。
MPEG-2 Part 2: H.262 と同等です。DVD、SVCD、デジタル動画放送、ケーブル配信で使用されます。
MPEG-4 Part 2: ネットワーク伝送、放送、メディアストレージに使用されます。MPEG-2 や初期の H.263 よりも高い圧縮率を提供します。
MPEG-4 Part 10: 技術的には ITU-T H.264 と同一で、ITU-T と MPEG により共同開発されました。ITU-T は H.264、ISO/IEC は MPEG-4 AVC と命名しました。
-
Audio Video Coding Standard (AVS): 中国の Audio Video Coding Standards Workgroup により開発された、デジタル音声および動画のコーディング標準ファミリーです。2 世代が策定されています。
第 1 世代には、AVS1 (「Information Technology—Advanced Audio and Video Coding—Part 2: Video」) および AVS+ (「Part 16: Broadcasting Video」) が含まれます。AVS+ は H.264/MPEG-4 AVC High Profile と同等の圧縮効率を実現します。
第 2 世代 (AVS2) は、超高精細 (UHD) 動画 (4K 以上) およびハイダイナミックレンジ (HDR) コンテンツを対象としています。圧縮効率は AVS+ および H.264/MPEG-4 AVC の 2 倍で、HEVC/H.265 を上回ります。
VP8、VP9 (Google) 、RealVideo (RealNetworks) などのその他のコーデックは、オンライン動画ではほとんど使用されないため、ここでは扱いません。
コーデックを選択する際は、対象の再生クライアント (モバイルアプリおよび Web ブラウザー) との互換性を優先してください。広くサポートされているコーデックを使用してください。ApsaraVideo VOD は次のコーデックをサポートしています:
動画: H.264/AVC (デフォルト) 、H.265/HEVC
音声: MP3 (デフォルト) 、AAC、VORBIS、FLAC
トランスコーディング
トランスコーディングは、異なるネットワーク帯域、デバイスの性能、または出力要件に合わせるために、圧縮されたビデオストリームを別のビデオストリームに変換します。このプロセスでは、入力ストリームをデコードし、ターゲット形式に再エンコードします。VOD のシナリオでは、トランスコーディングは一般に、アダプティブビットレート (ABR) ストリーミングをサポートするために、異なるビットレートと解像度の複数のレンディションを生成するために使用されます。入力ストリームと出力ストリームでは、同一または異なるコーデックを使用する場合があります。
コンテナ形式変換
コンテナ形式変換は、オーディオおよびビデオストリームをデコードまたは再エンコードすることなく、動画または音声ファイルのコンテナを変更します。たとえば、AVI ファイルを MP4 に変換します。このプロセスでは、ソースコンテナから圧縮ストリームを抽出し、ターゲットコンテナに再パッケージ化します。
トランスコーディングと比べて、コンテナ形式変換には次の 2 つの主な利点があります:
高速処理: エンコードとデコードは、トランスコーディングにおいて最も時間を要する工程です。コンテナ形式変換では、その両方を完全にスキップします。
無損失の品質: 伸長や再圧縮を行わないため、音声または動画の品質は失われません。
変換後のファイルは、元のファイルとほぼ同一の解像度とビットレートを保持し、オリジナル品質と見なされます。
ビットレート
ビットレートは、動画が単位時間あたりに使用するデータ量で、bits per second (bps) で測定されます。一般的には kilobits per second (Kbps) または megabits per second (Mbps) で表されます。ビットレートは、エンコード時に動画品質を制御するための主要な要素です。
同じ解像度の動画では、ビットレートが高いほど圧縮が少なく品質は高くなりますが、ファイルサイズも大きくなります。次の式でファイルサイズを見積もれます:
ファイルサイズ = 長さ (秒) × ビットレート (bps) / 8
たとえば、1 Mbps でエンコードした 60 分 (3,600 秒) の 720p 動画は、約 3,600 × 1,000,000 / 8 = 450 MB のファイルになります。
各解像度には推奨ビットレート範囲があります。この範囲を下回ると視覚品質が目に見えて低下します。上回ると品質向上は最小限である一方、ストレージと帯域幅のコストが増加します。
解像度
解像度は、動画の精細さを表し、1280 × 720 のように縦横のピクセル数で示します。解像度が高いほどピクセル数が増え、画像はより鮮明になります。
解像度はビットレート要件に直接影響します。一般に、解像度が高いほど許容可能な品質を維持するために高いビットレートが必要ですが、その関係は厳密に線形ではありません。
フレームレート
フレームレートは、1 秒あたりに表示される動画フレーム数で、フレーム/秒 (fps) または hertz (Hz) で測定されます。
フレームレートが高いほど動きは滑らかになり、より自然に見えます。25~30 fps はほとんどのユースケースで十分です。60 fps は体感的なインタラクティブ性と臨場感を大きく向上させます。75 fps を超えると、多くの視聴者には改善がほぼ認識されません。解像度が固定の場合、フレームレートが高いほど GPU の処理能力がより多く必要になります。
GOP (Group of Pictures)
GOP (Group of Pictures) は、MPEG でエンコードされた動画における連続フレームのシーケンスです。各 GOP は I フレームから始まり、次の 3 種類のフレームタイプを含みます:
I フレーム (intra coded picture): キーフレームです。I フレームは自己完結型で、他のフレームを参照せずに完全な画像をエンコードします。単体の JPEG に似ています。すべての GOP は I フレームで始まり、すべての動画シーケンスも I フレームで開始します。
P フレーム (predictive coded picture): 直前の I フレームまたは P フレームとの差分のみを格納します。デコード時には、この差分をキャッシュされた参照フレームに加算して画像を復元します。P フレームは I フレームより少ないビット数で済みますが、先行フレームへの依存があるため伝送エラーの影響を受けやすくなります。
B フレーム (bidirectionally predictive coded picture): 直前と直後の両方のフレームに依存します。B フレームのデコードには、キャッシュされた直前フレームとデコード済みの直後フレームの両方が必要です。B フレームは高い圧縮率を実現しますが、より高いデコード性能が必要です。
GOP 値は、2 つの IDR (Instantaneous Decoding Refresh) フレーム間のフレーム数、つまりキーフレーム間隔です。時間間隔は、GOP 値をフレームレートで割った値に等しくなります。たとえば、ApsaraVideo VOD のデフォルトは 25 fps、GOP 250 フレームで、間隔は 10 秒になります。
GOP サイズは、次の 4 つの相反する要素のバランスを取って設定してください:
ファイルサイズ: GOP を大きくするとファイルサイズは小さくなりますが、過度に大きい GOP の末尾付近のフレームは歪みが発生し、品質が低下する場合があります。
シーク速度: シーク時、プレーヤーは目的位置より前にある最も近いキーフレームにジャンプします。GOP が大きいほど、その位置に到達するまでにデコードする予測フレームが増え、バッファリング時間が長くなります。
エンコーディング効率: P フレームと B フレームは I フレームよりもエンコードが複雑です。これらが多すぎると、全体のエンコーディング効率が低下します。
帯域幅: GOP が小さすぎると、品質を維持するためにより高いビットレートが必要になり、帯域幅の使用量が増加します。
ベースラインとして、少なくとも 1 秒あたり 1 つのキーフレームを使用してください。キーフレームを増やすと品質は向上しますが、帯域幅の消費量が増加します。
スキャンモード
プログレッシブスキャン: すべてのラインを上から下へ順番に走査し、各フレームを 1 回のパスで描画します。
インターレーススキャン: 各フレームを 2 つのフィールドに分割します。最初のフィールドは奇数行を走査し、2 番目のフィールドは偶数行を走査します。2 つのフィールドを合成して完全な画像を形成します。
IDR フレームアライメント
IDR (Instantaneous Decoding Refresh) フレームは I フレームの特殊なタイプで、重要な違いが 1 つあります。通常の I フレームの後でも、後続の P フレームおよび B フレームは、それより前のフレームを参照する場合があります。IDR フレームの後は、それより前の情報を参照できません。
IDR フレームはデコーダーの参照バッファを即時に更新し、IDR 境界を越えてエラーが伝播するのを防ぎます。また、真のランダムアクセスを可能にします。プレーヤーが動画内の位置にシークする場合、最も近い IDR フレームへジャンプするのが最速です。後方解析が不要であるためです。
動画を複数のビットレートにトランスコーディングする場合は、IDR フレームアライメントを有効にして、すべての出力レンディションで IDR フレームが同一のタイムスタンプに揃うように同期してください。これにより、プレーヤーは目に見えるカクつきやフレームの乱れなしにビットレートを切り替えられます。
エンコーディングプロファイル
プロファイルは、特定のユースケース向けに設計されたエンコーディング機能の名前付きセットです。H.264 では 3 つの主要プロファイルが定義されています:
Baseline: プログレッシブスキャンとコンテキスト適応可変長符号化 (CAVLC) により、I フレームと P フレームをサポートします。モバイルデバイスでのビデオ通話など、低消費電力またはフォールトトレラントなアプリケーション向けに設計されています。
Main: B フレームのサポート、インターレーススキャン、およびコンテキスト適応バイナリ算術符号化 (CABAC) を追加します。MP4 プレーヤー、ポータブルビデオプレーヤー、PSP、iPod などの主流の民生機器で使用されます。
High: Main を拡張し、8 × 8 のインター予測、カスタム量子化、可逆動画コーディング、および拡張 YUV 形式 (例:4:4:4) を追加します。放送、Blu-ray Disc、高精細テレビで使用されます。
ビットレート
ビットレートは、1 秒あたりに伝送されるビット数で、bits per second (bps) で測定されます。エンコードされた動画および音声の文脈では、bit rate は bitrate と同義であり、圧縮コンテンツの 1 秒を表すビット数を示します。ビットレートが高いほど品質は高くなりますがファイルは大きくなり、ビットレートが低いほどファイルは小さくなります。詳細については、ビットレートをご参照ください。
ビットレート制御方式
ビットレート制御は、エンコーダーがエンコード中にビットをどのように割り当てるかを決定します。一般的に使用される方式は次の 3 つです:
可変ビットレート (VBR): シーンの複雑さに応じてビットレートを動的に調整します。複雑なシーンでは多くのビットを、単純なシーンでは少ないビットを使用します。VBR は、ファイルサイズを管理しつつ品質を優先します。
固定ビットレート (CBR): コンテンツの複雑さにかかわらず、ファイル全体でビットレートを一定に保ちます。同じ品質レベルでは、CBR ファイルは VBR または ABR ファイルより大きくなります。
-
平均ビットレート (ABR): VBR と CBR の中間です。ABR はストリームを約 50 フレームのセグメント (30 fps の場合は約 1 秒) に分割し、単純なセグメントには低いビットレートを、複雑なセグメントには高いビットレートを割り当てます。ファイル全体の平均ビットレートはターゲット値付近に維持されますが、局所的なピークはターゲット値を超える場合があります。
ABR は、コンテンツの複雑さに適応しながら予測可能なファイルサイズを実現します。ApsaraVideo VOD は、デフォルトのビットレート制御方式として ABR を使用します。
エンコーディング形式
音声のエンコーディング形式は、可逆と非可逆の 2 つに分類されます。実際には、すべての音声エンコーディング方式は元のアナログ信号を近似します。標本化定理により、厳密な再現は理論上不可能です。実用上の忠実度が最も高い PCM エンコーディングは、慣例的に可逆として扱われます。MP3 や AAC を含む一般的なインターネット音声形式は、すべて非可逆エンコーディングを使用します。
サンプルレート
サンプルレート (サンプリング周波数とも呼ばれます) は、連続的なアナログ信号からデジタル信号を生成するために、1 秒あたりに取得される音声サンプル数で、hertz (Hz) で測定されます。サンプルレートが高いほどより多くのディテールを捉え、より正確に音を再現できます。
ビットレート
上記の ビットレート セクションをご参照ください。
音声チャンネル
音声チャンネルは、異なる空間位置から収録または再生される独立した音声信号です。チャンネル数は、録音時の音源数、または再生時のスピーカー数に対応します。
UTC (ISO 8601 標準時刻形式)
UTC は、原子秒に基づく主要な国際時刻標準であり、世界時とほぼ一致しています。略語 UTC は、英語の略語 CUT とフランス語の略語 TUC の妥協案です。
特に指定がない限り、ApsaraVideo VOD はすべての時刻フィールドを UTC で返し、すべての API 時刻パラメーターも UTC (ISO 8601 形式:YYYY-MM-DDThh:mm:ssZ) で指定する必要があります。たとえば、2017-01-11T12:00:00Z は、中国標準時 (UTC+8) の 2017 年 1 月 11 日 20:00:00 に相当します。
ショートビデオ SDK の用語
マルチソース録画
マルチソース録画では、カメラフィードと画面録画など、複数の動画ソースを 1 つの動画に結合できます。ソースは、横並び、上下分割、ピクチャーインピクチャー (PiP) などのレイアウトで配置されます。出力の各フレームには、選択したすべてのソースのデータが同時に含まれます。
トラック
デュエット録画では、2 つのビデオストリームをトラック A とトラック B として抽象化します。トラック A はカメラで撮影した動画を保持します。トラック B はサンプル動画を保持します。この抽象化により、開発者はトラックのレイアウトの概念を理解しやすくなります。
マルチソース録画では、複数の動画ソースを個別のトラックとして抽象化します。たとえば、トラック A はカメラ動画を保持し、トラック B は画面録画動画を保持します。この抽象化により、開発者はトラックのレイアウトの概念を理解しやすくなります。
レイアウト
レイアウトはトラックのプロパティであり、最終出力でトラックの動画が表示される位置を定義します。正規化座標系を使用し、中心点座標とトラックサイズ (幅と高さ) の 2 次元で表します。
-
デュエット録画のレイアウト:
このレイアウトでは、トラック A とトラック B がそれぞれ画面の半分を占有します。両方のトラックの幅は 0.5、高さは 1.0 です。トラック A の中心点は (0.25, 0.5) です。トラック B の中心点は (0.75, 0.5) です。
デュエット録画 API でレイアウトを処理する 2 つのコアクラス:
AliyunMixTrackLayoutParam: 中心点とサイズを記述します。
AliyunMixRecorderDisplayParam: AliyunMixTrackLayoutParam に加えて、displayMode と layoutLevel を含みます。displayMode は、アスペクト比が異なる場合にフィルまたはクリップのどちらにするかを制御します。layoutLevel は表示順序を設定します。値が大きいほど上に表示されます。トラックが重なる場合、layoutLevel が高いトラックがもう一方を覆います。
-
マルチソース録画のレイアウト:
このレイアウトでは、トラック A とトラック B がそれぞれ画面の半分を占有します。両方のトラックの幅は 0.5、高さは 1.0 です。トラック A の中心点は (0.25, 0.5) です。トラック B の中心点は (0.75, 0.5) です。