次の方法で共有


エンコーディングのヒント

Microsoft Corporation

目次

はじめに

  •  Windows Media Audio/Video 8 コンテンツを作成する2つのツール

エンコードの準備

  •  エンコード PC の準備
  •  素材の準備
  •  キャプチャ方式の指定
  •  スクリーンキャプチャ時のシナリオ設定

Windows Media エンコーダ 7.1 を使ったエンコード設定

  •  ソース設定
  •  プロファイル設定
  •  エンコード

Windows Media 8 エンコーディングユーティリティを使ったエンコード設定

  •  Windows Media 8 エンコーディングユーティリティのサポートする入力ソース
  •  Windows Media 8 エンコーディングユーティリティの特徴

はじめに

Microsoft では、Windows Media 形式のコンテンツを制作するためのいくつかのツールを提供しています。これらのツールは以下のサイトから無償でダウンロードできます。

https://www.microsoft.com/japan/windows/windowsmedia/download/default.aspx

この記事では、最新の CODEC - Windows Media Audio/Video 8 に対応した 2 つのツールについて説明します。Windows Media Audio/Video 8 CODEC については、次のサイトをご参照ください。

https://www.microsoft.com/japan/windows/windowsmedia/WM8/default.aspx

基本的に、より新しい CODEC を利用することで、より良い品質のコンテンツを作成することができます。また既存の Player で最新 CODEC を利用したコンテンツを再生する場合には、必要な CODEC がインターネット上から自動的にダウンロードされますので、以前のバージョンのPlayerを持っているクライアントでも、新 CODEC を利用したコンテンツを再生することができます。インターネットに接続していないクライアントに新 CODEC を配布するためのツールも提供されています。このツールは、下記のサイトからダウンロードできる「Windows Media 7 Resource Kit Beta3」に含まれています。

https://www.microsoft.com/windows/windowsmedia/en/download/default.asp\#location2

Windows Media Audio/Video 8 コンテンツを作成する2つのツール

  • Windows Media エンコーダ 7.1

    Windows Media エンコーダ 7.1 は、グラフィカルなユーザーインターフェースと使いやすいウィザードを搭載した強力な制作ツールです。キャプチャからエンコードパラメータまで、プロ仕様の機能を備えています。 ただし、Windows Media 8 CODEC の新機能である、2pass encoding や VBR (可変ビットレート) の設定はできません。
    https://www.microsoft.com/japan/windows/windowsmedia/WM7/encoder.aspx

  • Windows Media 8 エンコーディングユーティリティ

    Windows Media 8 エンコーディングユーティリティは、Windows Media 8 CODEC の 2pass encoding や VBR 、その他のエンコードパラメータを備えたコマンドラインツールです。 ただし、Windows Media エンコーダ 7.1 の多くのグラフィカルな機能はもちろん、ライブソースからの入力やストリーミング出力はできません。既に AVI ファイルとして保存してあるファイルをWindows Mediaファイルに変換するために利用します。
    https://www.microsoft.com/japan/windows/windowsmedia/WM8/encoding.aspx

エンコードの準備

エンコード PC の準備

Windows Media エンコーダ 7.1 を使用してリアルタイムでエンコードする場合は、高速な CPU が必要です。特に 640x480 のコンテンツをエンコードするには、4CPU のシステムを推奨します。また Screen Capture 機能を使う場合にも、キャプチャする解像度に合わせた高速な CPU が必要となります。ただし、エンコーダ7.1またはエンコーディングユーティリティ 8 でキャプチャ済みのメディアファイルを変換する場合には、CPU スピードに合わせてエンコーディングプロセスが進みますので、特別に高速な CPU は必要ではありません。CPU スピードがコンテンツのエンコーディングに十分でない時、リアルタイムエンコードの場合には品質が落ちますが、キャプチャ済みファイルの変換の場合にはエンコードにかかる時間が長くなるだけです。

AVI にキャプチャする場合はバススピードに負荷がかかります。またファイルに出力する場合は、高速な Disk アクセスが必要です。

推奨のエンコーダ環境は以下のとおりです。

  • Dual Pentium III 733MHz +
  • Windows 2000
  • RAM 512 MB
  • Ospray-500WM DV Pro
  • SoundBlaster Live
  • 10,000 rpm + HDD ( RAID-0 )
  • 133MHz System Bus

ここで、ハードウェアの負荷を軽減するために、以下のことに注意すると良いでしょう。

  1. ハードディスクをデフラグ
  2. ネットワーク接続やファイル共有を切断
  3. 他のアプリケーションを閉じる(特にディスクアクセスをするもの)
  4. キャプチャカードと SCSI カードの DMI バッファでの衝突に注意する。Dual PCI Busシステムを推奨

また、高ビットレートなコンテンツを制作する場合には、クライアントの負荷も考慮します。 320 x 240 のコンテンツを表示させるには 300 MHz 以上の CPU、640x480 や、320 x 240x 60 fps では 700 MHz 以上の CPU を搭載したクライアントが必要になります。 1 Mbps を超える高ビットレートコンテンツの場合には、敢えて最新でない CODEC-Windows Media Audio/Video 7 CODEC を使用することで、多少クライアントの再生負荷を軽減することができます。

素材の準備

素材も、放送品質のものを用意してください。BetaSP または Digital Betacam などの放送品質のテープ形式を使用することをお勧めします。このような形式が使用できない場合は、コンシューマ DV 形式も使用することができます。VHS や Hi8 のような、より低級なコンシューマ形式を使用しなければならない場合は、TimeBase Corrector (TBC)を備えた業務用再生デッキに投資することを考慮してください。これらの機器は S/N 比が高く、TBC は安定した映像の制作に役立ちます。ノイズと映像のぶれを抑えることが、低データ レートに負けない品質の圧縮ビデオを制作する鍵となります。
さらに、ビデオ機器との接続形式にも留意してください。

  • SDI (CCIR-601) - デジタル信号のまますべての作業を行えます
  • S-Video - 最も一般的で、適正な品質が得られます
  • DV - いったん圧縮されるので、エンコード前に解凍が必要
  • Composite -

キャプチャ方式の指定

キャプチャカードの設定で、ピクセルフォーマットも確認します。

RGB は、高品質ですがファイルは大きくなり、バスの負荷もあがります。 YUV は、多くのバリエーションがあります。さらに、YUY2 は最高品質を実現します。 リアルタイムエンコードの時は、デフォルトにするか、YUV ベースのフォーマットにします。

ピクセルフォーマットに関する詳細な情報は、下記 URL を参照してください。

http://www.fourcc.org/

また、事前に AVI ファイルにキャプチャしておくと、エンコーダがリアルタイムでエンコードする必要が無いので本来の画質を保つことになります。また、編集が容易になりますし、複数の同一コンテンツの制作も容易です。Windows Media 8 エンコーディングユーティリティを使用する場合には、AVIキャプチャ工程は必須です。

ただし、その分工数は増えますし、非圧縮で AVI にキャプチャするには、高速な入出力要求に対応できるシステムが必要になります。

本来 AVI ファイルは 2 GB まで、という制限がありますが、Resource Kit に収録されている Amcap では AVI Type2 が利用可能です。これを利用すれば、2 GB 以上のコンテンツも AVI にキャプチャすることができます。また、Windows Media エンコーダ7.1 で wmv/wma に非圧縮で取り込むことも可能です。この場合ファイルサイズに上限はありませんが、AVI ファイルほど編集は容易ではありません。また、最大 640 x 480 x 30 fps という制約があります。

反対にリアルタイムでエンコードする場合、CPU 使用率が 80 % を超えないようモニターする必要があります。

さらに、オーディオレベルも確認します。録音レベルが適切でないと、ノイズが発生したり、最適な品質が得られなかったりします。Windows Media エンコーダ 7.1 では、エンコーダ中に現在の音量レベルを表示することができるので、事前にテスト的にエンコードしてここをチェックし、ソースのエンコード音量を調整しておくことをお勧めします。この調整は、codec の選択よりも重要である場合があり、品質向上に効果的です。

レベルは、緑 - 黄 - 赤 の色で表示されますので、最大が緑の上限ぎりぎりにくるように設定しましょう。 可能であれば、DV ソースで 16 bit/48 KHz での入力を推奨します。

スクリーンキャプチャ時のシナリオ設定

Windows Media エンコーダ 7.1 の画面の取り込み (スクリーン キャプチャ) 機能によって、デスクトップ全体や個別のウィンドウ、または画面の一部の画像を取り込んで、ほかのコンテンツと同様にブロードキャスト配信したり、ファイルにエンコードすることができます。

画面イメージの取り込みは、処理するデータ量が多く、画像を素早く圧縮するために必要な CPU の負荷が大きいため、パフォーマンス集約型のプロセスです。コンピュータの処理能力、取り込む画面の大きさ、ディスプレイの表示色数 (256 色、16 ビットなど)、指定したフレーム レートなどのすべてが、パフォーマンスに影響します。さらに、エンコードされる画面イメージの質が、エンコード処理中に発生する動きの量に影響される可能性があります。Windows Media Screen コーデックは、動きの少ない大きな領域の取り込み用に特別に設計されています (たとえば、動きの激しいビデオの取り込みでこのコーデックを使った結果、その画質が良好とはいえません)。

取り込む画面イメージを良好な画質でエンコードおよび再生するには、次の指示に従います。 :

  • ディスプレイの解像度を低くして使うように設定します。たとえば、1024 x 768 サイズで取り込む場合は、640 x 480 サイズで取り込む場合に比べてデータ量が増えます。
  • 256 色または 16 ビット カラーを使うように、ディスプレイを設定します。
  • Windows Media Screen コーデックを含んだプロファイルを使います。
  • プロファイル内の低速のフレーム レートを使います。
  • 取り込み中は、連続して素早くウィンドウを開閉するなどの、複数の画面の変更を避けます。

Windows Media エンコーダ7.1を使ったエンコード設定

ここでは、ウィザードでなく[セッション]-[新規作成]メニューでの設定方法を説明します。

ソース設定

より高品質なエンコードをするには、まずソースのタイプに応じたキャプチャ手順を考慮する必要があります。ソースファイルの形式によって、最適なフレームレート、画面サイズ、処理手順が変わってくるからです。

NTSC の場合は、ソースが 30 fps でかつ インターレース化されています。そこで、まずプログレッシブ化 ( ノンインターレース化 ) をし、30 fps か 60 fps で出力します。帯域幅に制限がある場合は、30 の半分の 15fps にします。

Film コンテンツの場合は、ソースは 24 fps から 30 fps に変更されており(テレシネ)、また画面サイズは PC ディスプレイと同一ではありません。逆テレシネ 処理をし、上下の黒い部分を省くよう設定します。こちらのフレームレートは、24 を基数として計算します。

PAL の場合は ソースと同じ 25 fps にします。この時フレームレートは、25 を基数として計算します。

Dd148576.encode71_1(ja-jp,MSDN.10).gif

ここで、ソースとして画面取り込みを指定することもできます。

ビデオのトリミング 映画コンテンツの場合には、画面サイズを調整する必要があります。

そのままにしておくと、上下の黒い部分も帯域幅を消費するからです。

ここで、上下の切り詰めるべき空間を設定しますが、その際、必ず8 ピクセルの倍数となるように設定します。また、通常の4:3素材の場合でも、上下左右の端にノイズがのっている場合がありますので、その場合も必要量をトリミングします。

Dd148576.encode71_2(ja-jp,MSDN.10).gif

Dd148576.encode71_3(ja-jp,MSDN.10).gif

ノンインターレース化とは、NTSC 向けにインターレース化されたコンテンツをプログレッシブ化する処理です。

インターレース化されたコンテンツは、奇数フィールドのみのフレームと偶数フィールドのみのフレームのセットを表示し、2 フレームで1セットの画像を完成させるようになっています。Windows Media エンコーダ 7.1 では、これを元通りの完全なフレームに戻す、「ノンインターレース化」機能が利用できます。

これにより、ちらつきが解消し、早い移動物などの表示に有利になります。また圧縮にも有利です。

Dd148576.encode71_4(ja-jp,MSDN.10).gif

Dd148576.encode71_5(ja-jp,MSDN.10).gif

Dd148576.encode71_6(ja-jp,MSDN.10).gif

また、60 フィールドのデータをリサンプリング化することで、 60 fps のコンテンツに変換することもできます。60 fps にする場合、300 Kbps 以上の帯域幅が必要です。

Dd148576.encode71_7(ja-jp,MSDN.10).gif

テレシネとは、映画用フィルムコンテンツを TV (NTSC) 向けにコンバートする処理のことです。

24 fps を 30 fps に変更し、インターレース化しています。

ということは、元がフィルムのコンテンツは、みな 30 fps に増幅され、インターレス処理されているということです。

Dd148576.encode71_8(ja-jp,MSDN.10).gif

そこで、Windows Media エンコーダ 7.1 では、逆テレシネ (Inverse Telecine) という機能を搭載しています。

このプロセスでは、テレシネ処理で水増しされたデータを除去し、ノンインターレース化します。

これにより、より圧縮に適した形になり、インターレースの問題も除去されます。

ただし、テレシネ処理後に編集されていると、正しく逆テレシネできないことがあります。

この処理をハードウェアでおこなうと、CPUの負荷は軽減され、高品質ですが、システム価格は高額になります。これをソフトウェア上で処理することで、安価なシステムを実現できます。

これらの 「ノンインターレース化」や「逆テレシネ」処理を行うには、キャプチャする際に画面サイズに注意する必要があります。上記の図でわかるように、これらの処理にはすべてのフィールドが必要です。ところが、320 x 240 でキャプチャした場合、1フィールドが無効化しています。

そこで、キャプチャボード設定上の 「キャプチャする画面サイズ」は、必ず 縦は 480 の設定にしてください。

アウトプットが 640 x 480 の場合はそのままの値ですが、320 x 240 の場合は、キャプチャは 320 x 480 と設定してください。

またこの処理をおこなうと、CPU使用率が10 - 25 % 上がります。

プロファイル設定

Dd148576.encode71_9(ja-jp,MSDN.10).gif

プロファイルの高度なカスタマイズが可能です。プロファイルは、拡張子.PRX のXMLファイルに保存することもできます。

Dd148576.encode71_10(ja-jp,MSDN.10).gif

ここで、10 までの複数の帯域を選択してマルチビットレートの指定にすることができます。

これを Windows Media Server から配信することで インテリジェントストリーミングが可能ですが、 CPU 負荷 及び ファイルの容量は大きくなります。

反対に、「指定帯域幅より実際の帯域幅の方が大きい」といった場合には、間違えてマルチビットレートの指定をしている場合があります。また、配信対象 新規作成時の最大ビットレートの値は、実帯域幅ではありません。たとえば 500Kbps の指定をした場合、実ビットレートは 509Kbps になります。この図でいうと、メディアビットレートを 500 Kbps に設定したことになるので、実ビットレートである効果的なビットレートは 509 Kbpsになるのです。実ビットレートを 500 Kbps にしたい場合は、効果的なビットレートが 500 Kbps になるよう、メディアビットレートを微調整してください。(この場合 491 Kbps)

Dd148576.encode71_11(ja-jp,MSDN.10).gif

ここで、上記トリミング で画面サイズを変更している場合は、変更後の画面サイズを指定します。

バッファ量を大きくすることで、コンテンツの変化に対応が可能です。

Windows Media Player 7 より、この設定が 画質やフレーム数に影響するようになりました。

たとえば高画質なコンテンツを提供する場合は、バッファ量を大きくしておくことで、再生開始までの待ち時間が長くなりますが、その分高品質な画像を提供することができます。

デフォルトではこの値は 3 秒になっていますが、ストリーミングの場合では 20秒まで、

ダウンロードの場合は 90 秒まで増やすことができます。

バッファ量を大きく設定すると、クライアントでのメモリ使用量も大きくなります。

Dd148576.encode71_12(ja-jp,MSDN.10).gif

Dd148576.encode71_13(ja-jp,MSDN.10).gif

フレームレートについては、上記の素材に関する説明を参照してください。

Dd148576.encode71_14(ja-jp,MSDN.10).gif

キーフレームの間隔 の設定で、Encoder はその間隔中にかならず1つキーフレームを挿入します。

ただ、キーフレームが途中で必要になった場合にも自動的に挿入されますので、間隔が大きくて問題となるようなことはありません。

この間隔を小さくすると、早送り、巻き戻しがきれいになりますが、当然より多くの帯域が必要になります。

画像の品質とは、最低限の画質を示します。

たとえば、30 fps で 品質 0 の設定をした場合、とにかく 1/30 秒 で1フレーム表示、画質は二の次、という動作をします。

品質の設定をあげていくにしたがって、設定された品質を満たさない限り次のフレームを表示しない、という動作になります。

そこで、帯域幅が限られている中で、品質をあげればあげるほど、要求されたフレームレートに対応できないという結果となり、フレームのコマ落ちが発生します。ただし、画像の品質は高くなります。

ですのでこの設定は、「コマ落ちが発生しない上限まであげる」ことが最適と考えられます。

また画質に合わせてフレームレートを調整する場合もありますので、動きが少ない場合はフレームレートより品質を優先して 80-100 の設定、動きが激しい場合はフレームレートを優先して 50-70 の設定、といった使い分けをする必要があります。

エンコード

すべての設定が完了したところで、エンコードを開始します。Windows Media エンコーダ 7.1 では、入力・出力画面をリアルタイムで表示できるので、出力品質をその場で確認できます。また、エンコードプロセスを詳細にモニター可能です。

ただし、この表示により余計なCPU負荷もありますので、高品質なエンコードをする場合はメニューバー[表示] - [ビデオ] のチェックを外し、ビデオ画面のリアルタイム表示を無効にしてください。

Windows Media 8 エンコーディングユーティリティを使ったエンコード設定

Windows Media 8 エンコーディングユーティリティは、コマンドラインユーティリティです。[コマンドプロンプト]ウィンドウから直接入力することもできますが、エンコード設定の保存のために、メモ帳などでバッチプログラムとして記述して実行することをお勧めします。この方法により、既存の複数のコンテンツのバッチエンコードも可能になります。

Windows Media 8 エンコーディングユーティリティのサポートする入力ソース

拡張子 ファイルタイプ 詳細
.avi オーディオ及びビデオ オーディオは非圧縮の16bit PCMのみサポート。ビデオは次のピクセルフォーマットをサポート:
IYUV (I420)
YV12
YUY2
UYVY
YVYU
YVU9
RGB (24 bit)
RGB (16 bit)
RGB (15 bit)
RGB (32 bit)
RGB (8 bit)
 PC上でICMでコンプレッサが利用可能な場合には、圧縮されたaviファイルもサポート。
.wav オーディオ 非圧縮の16bit PCMのみサポート。
.wma, .wmv Windows Mediaフォーマット 非圧縮の16bit .wma と比圧縮の.wmv ファイルをサポート。Windows Media 8 エンコーダユーティリティは.asf version 1.のみサポート。

Windows Media 8 エンコーディングユーティリティの特徴

VBR (可変ビットレート) エンコードをサポートしているため、画質に合わせて使用するビットレートを変動させることができ、結果的に高画質となります。このような特性のため、ストリーミングサービスには向きませんので、ローカル再生を目的としたコンテンツの制作時に利用します。

Dd148576.encode71_15(ja-jp,MSDN.10).gif

2 パスエンコーディングをサポートしているため、より高品質のエンコードをすることができます。2 パスエンコーディングでは、ビデオのエンコードプロセスを2回実施し、1 回目では場面の性質によって、ビットレート、フレームレート、バッファサイズの最適な組み合わせを探し、2 回目で実際のエンコードをします。このため通常の 2 倍の時間がかかりますが、品質の向上に役立ちます。