NSVムービーのオンデマンド配信法

NSVムービーのオンデマンド配信法
(2004.09.10作成 06.06.15追記)
作成、配信、受信に必要な全てのツールが無料で利用できる「NSVによるインターネットTV」が一部の
Windowsユーザーの動画マニアの間で注目されている。

NSV(Nullsoft Streaming Video)は、Winampで知られるNullsoftが開発したストリーミングできる
 ビデオのコンテナ形式。映像と音声に複数のコーデックを選択することが可能で、VP6、AACを使用して
 クォリティを上げる事が出来る。
VPxコーディクとは米On2社が開発し、Ogg形式を擁する無料コーディク開発集団「Xiph.org」が配布する
 映像コーディク。2000年8月にVP3を、2003年5月にVP6を発表し飛躍的に画質が向上した。
AAC(Advanced Audio Coding)は、MPEG2またはMPEG4で使われる音声圧縮方式で、Appleの
 iPodにも採用されている。MP3よりも1.4倍ほど圧縮効率が高く、128kbps以下でも音質低下が少ない。
Winampは、Winamp2時代にPCのMP3プレーヤとして一世を風靡した。Winamp5になって更に対応する
 音声フォーマットは多彩に
なり、ムービープレーヤとしても進化した。初期状態で再生可能な動画は、
 NSVの他にMPEG、AVI、WMVにも対応している。

今回は、VP6+AAC圧縮NSV形式によるオンデマンドウエブ配信(ライブストリーミングではない)用ファイル
の作成法について、Internet TV@WinampNETWARPを参考に検討した。

=当HPでのオンデマンド配信用ムービーファイルの作成基準=
配信方式:オンデマンド・ストリーミング方式(ライブ配信ではない)。
転送プロトコル:Webサーバー用のHTTPを使用(専用サーバーSHOUTcast、PeerCastは使用せず)。

元素材:自作DVDリッピングMPEG2、自作編集済みMOVファイルなど。

解像度:320×240、432×288(元素材のピクセル比に依存、16の倍数)。
転送レート:250〜450Kbps(解像度に応じて設定)。
フレームレート:29.97fps(NTSC用素材)、24fps(映画用素材))。
圧縮方式:CBR(固定ビットレート)。低・中速度回線でのコマ落ち防止の為。

 前準備

 1) Winamp:Winamp(Fullバージョン)本体と日本語化キットを ここから入手してFullインストール。

 2) NSVTools(updated 4/19/03):NSV公式サイトから入手してインストール。
   中には次のツールが入っている。

   ・FlaskMPEG for NSV :DVDからMPEGやAVIに変換するためのソフトFlaskMPEGをNSV出力
     専用にカスタマイズした特別版。MPEG1,2ファイルしか読み込めない。バッチエンコードは不可。
     日本語言語ファイルをDLして、
NSVToolsのフォルダ内のlangフォルダに保存。
   ・NSV Batch Encoder(NSVate):バッチエンコーダ。NSVencのフロントエンドDirect Showや
     Quicktimeで読み込めるファイルは全て読み込める。 MPEGファイルもエンコード出来る場合がある。
   ・NSVenc:コマンドラインのNSVエンコーダ。
   ・NSV Live Capture:ライブストリーミング放送用のGUIツール。キャプチャー機器から直接NSVへ
     変換可能。
   ・NSV Demuxer:NSVを音声とビデオに分離させるためのツール。
   ・NSV Subtitle Muxer:字幕等を多重化するためのツール。
   ・NSV Tag Editor:NSVファイルのタグ情報を書き換えるツール。
   ・nsvscsrc.exe:あらかじめNSVに変換したファイルからSHOUTcast(中央管理型ストーリーミング
     サーバーソフト)やPeerCast(P2P型ストーリーミング配信ソフト)へ擬似ライブ配信を行うため
     のコマンドラインツール。
     今回不必要だがNSVToolsに入っているのは旧バージョンなので、新しいバージョンに置き換える。

   *NSVTollsはVP3+MP3圧縮が基本設定だが、以下のプラグインも使用出来るようにする。

 3) VP6コーディク(VP6 VFW Codec)ここから入手(本家は 05.03月調査時有料化されていた!)。
   日本語化パッチは、http://www.geocities.co.jp/SiliconValley-SanJose/2451/jpatch.htmlから入手
    (04.12月調査時リンク切れで入手不可!)。
     →初期設定ではC:\Windows\system32がパッチ指定されるので注意!
   なお、NSV形式の他にもTMPGEncなどのフロントエンドソフトで、AVI形式として出力可能だ。
    しかしAVI形式の場合には、再生する側はWindows
MediaPlayerやRealPlayerは無論の事、WinampでもVP6コーディクを
     インストールしておく必要がある。

   <追記>VP6 エンコーダは、個人的使用でもフリーで利用出来なくなっしまった(ここを参照)!

 4) VP6用DLL(Slavas氏版)nsvenc_vp6_setup.exe をインストール(自動的にNSVToolsフォルダ
    内にインストールされる )。(http://www.stud.ktu.lt/%7Evitslav/nsv/nsvenc_vp6_setup.exeは、
    リンク切れ)。

 5) AACエンコード用DLL(nsv_coder_aac.dll)は、Winamp5のプラグインフォルダに含まれている
   enc_aac.dllと同じもの。enc_aac.dllをnsv_coder_aac.dllにリネームしてNSVToolsフォルダに入れる。
   なお、サンプリング周波数が44100(48000)
Hz以外はエンコード出来ないという制限がある。



 FlaskMPEG for NSV  =MPEG(VOB)素材専用版=
1)

ファイルメニュー「開く」でMPEGファイルを読み込む。

2)
FlaskMPEG Control Panelの「Configure」をクリックす
るか、「オプション」メニュー/「出力ファイル共通設定」
を選択すると
3)

「FlaskMPEG
Options」
(共通設定)

画面が表示さ
れる。

タブの設定設定は ここを参照
 ・Video設定:望みのピクチャサイズとフレームレートを指定(出力はMPEG1・・・は本体のミス!)。
 ・Audio設定:Layer2/Waveへ変換のまま。サンプリング設定はオリジナルと同じか、48kHz又は
    44.1kHzしか指定出来ない。
ACCで出力:今回素材は44.1kHzなのでオリジナルと同じ。
 ・品質・クリップ:HQ bicubic Filter。「アスペクト比を保持」は未チェックに変更。
 ・出力ファイルoutput filesを指定しておかないと、Cドライブ第一階層に保存されてしまう。
 ・その他:全範囲指定にチェック。

4)
FlaskMPEG Control Panelの「Select Output」→「Configure Output Module」をクリックするか、
「オプション」メニュー/「NSV設定」を選択すると
「NSV output
configuration」
画面が表示さ
れる。

 ・NSV Format Options:私には解りません?
 ・Audio samplerateはAACでは44100(48000)hzを指定。それ以外(例えば32000hz)で設定す
   とエンコードエラーとなってしまう。なお、MP3では自由に指定できる。
   Audio formatは今回RawAACを選択し、ビットレート128→32kbpsに設定する。
 ・Video:Resample framerateは未チェック(FlaskMPEG Optionsの設定とダブル!)。
    Video formatは今回VP61/VFWを選択する。
 →VP61 Encoding Optionsの「Configure」をクリックすると

5)
「VP6
Configuration
Window」
が表
示される。

各タブの設定は ここを参照
 ・General:トータルから音声を引いた映像のビットレートを指定。但し、計算通りに出力されない。
    モードはGood Quality FastEncodingを選択(OnePassBestQualityは圧縮に3倍必要)。
    利用用途はストリーミングなのでCBRでよい。
    ソースの種類:本体がTMPGEncのように自動解析する訳ではない。
       インターレース解除済みの素材はプログレッシブにチェックする。
    ノイズ低減は映像がボケるだけなのでオフ。自動キーフレームは初期設定のまま。
 ・Advanced私には解りませんので初期設定のままとする。
    Undershoot :割り当てるビットをすくな目に貯蓄する目安の設定。
    量子化設定を適用:画質の最良部分と最悪部分の設定。
    一時リサンプリング:画像の滑らかさの設定。
    空間リサンプリング:画像の鮮明さの設定。
 ・Settings: Good Quality-Streamingを選択。

6)
FlaskMPEG Control Panelの「Flask it!」をクリックするとエンコードが始まりその過程を観察出来る。



 NSV Batch Encoder(NSVate) 
1)
Fileメニューの「Add Source File」からビデオファイルを読み込む。
*読み込み可能なビデオフォーマットは、
  四大ストリーミングエンコーダの比較及び六大ストリーミングエンコーダの比較を参照。
注意:環境によってはMPEG2ファイルを利用出来ない。MPEG2 Demultiplexer, MPEG2 Video Decoder,
    Odio Dekodaの種類にも依存する様だ(Windows用動画ツールの使用具合を参照)。

参考:何んとPCG-GRX81は、MPEG2の読み込みが出来てエンコードしても無音声だった!
2)

Encoding Details」が表示される。
 ・Output Filename:出力ファイル名を記入(自動的に「素材と同名.nsv」になる)。
 ・Output Folder:出力フォルダを「Use Previous Output Folder」又は「Use Source Folder」で
  指定。
 プロファイル(*)を選択して「OK」ボタンを押せば、「NSVate」に登録される。
 注意:入力/出力ファイルのパスに日本語があると、エンコードエラーを起こす!


=自作プロファイルを以下3)〜5)の如く作成=

  →「Edit Profiles」ボタンをクリックすると
3)
「Profile Manager」が表示されるので、「Add New」→「Edit」ボタンをクリックして以下の如く
編集する。
「NSVate Profile
Configuration」

(共通設定)
画面が表示され
る。
 ・Video processing:ノンインターレスやクロッピングの設定が可能。用に応じてチェック。
 ・Resizing :解像度の変更。用に応じてチェックして設定。
 ・Audio processing :サンプリングレートはAACでは44100Hzとする。それ以外に設定す
   エンコードエラーとなってしまう。MP3では自由に指定できる。
 ・Output framerate:フレームレートは24又は15fpsとする。Drop/repeat・・にチェック? 
 →「NSV Encoder Configuration」ボタンをクリックすると
4)

NSV Encoder
Configuration」

FlaskMPEGの
 NSV output
 configuration
 とほぼ同じ*)
画面が表示され
る。

 *Audio samplerate、Audio channels及びVideo Resample framerateはない。
 ・NSV Format Options:私には解りません(初期設定値はFlaskMPEGとは異なっている)?
 ・Audio formatは今回RawAACを選択し、ビットレート128→32kbpsに設定する。
 ・Video formatは今回VP61/VFWを選択する。
5)
→VP61 Encoding Optionsの「Configure」をクリックするとFlaskMPEGと同じ、
「VP6Configuration Window」が表示されるので、同様に設定する。

全ての設定が完了したらOK→OKで自作プロファイルを保存する。
6)
「NSVate」一覧表に登録されたファイルを選択して、
→「Encode selected」をクリックするとエンコードされるが、その経過を映像で観察出来ない。
 下図はバッチエンコード中の「NSVate」一覧表



 ウエブ配信法
筆者は、NSV専用サーバーであるSHOUTcast(中央管理型ストーリーミングサーバーソフト)やPeerCast
(P2P型ストーリーミング配信ソフト)を使用せず、HTTPで配信する。

I. プレイヤー立ち上げ(Stand AlonePlayer)方式
 メタファイルの作成:m3uやplsといった拡張子を持つファイルを使用する。

  もしこのメタファイルを使用しない場合はダウンロードとなってしまう。
  m3uメタファイルは、メモ帳を用いてNSV(.nsv)ファイルの場所をフル
  パスで記載して保存した後、拡張子を.m3uに変更すれば良い。
   http://IPアドレス/xxxx.nsvファイルの場所
追記(05.09.08)
II. ブラウザ埋め込み(Embed)方式
  HTMLに以下を記述
<object classid="clsid:C5E28B9D-0A68-4B50-94E9-E8F6B4697519" width=320 height=240
border=0 codebase="http://www.nullsoft.com/nsv/embed/nsvplayx_vp6_aac.cab#Version=-
1,-1,-1,-1" id="nsvplayx">
<param name="Location" value="http://IPアドレス/xxxx.nsvファイルの場所">
<embed type="application/x-nsv-vp6-aac" width=320 height=240
codebase="http://www.nullsoft.com/nsv/embed/nsvmoz_vp6_aac.xpi"
location="http://IPアドレス/xxxx.nsvファイルの場所" >
</embed>
</object>

なお 、
1) clsid と codebase については、New bunch of ActiveX controls here(こちら)を参照。
2) nsvmoz_vp6_aac.xpi というPluginの配布先は存在しない!?
3) nsvplayx_vp6_aac.cabの置き場を http://www.katch.ne.jp/~kakonacl/douga/nsv/embed
  などに変更してもよい。
追記・修正(2011.05.xx)
 NSVのEmbeded方式の再生に必要な"Nullsoft Video Control(VP6/AAC)"の公式配布先は
 消失してしまいましたので、下記のサイトでインストールして下さい。
   http://kakonacl.xsrv.jp/subtitle/nsv_srt/chicken_srt_nsv.html




追記(06.06.15) 「NSV SplitでNSV動画の再利用は    ここを参照



| Kenのムービー計画へ >動画狂コーナーへ |