pfsource
いつものプレイヤーでAVIファイルを擬似ストリーミング再生するためのフィルタ

Windows 3.x 時代からある Audio Video Interleave (RIFF).
拡張性の高さや対応ソフトの多さからか, RIFF は 今も利用されている映像・音声コンテナ形式です.

基本的な説明は Wikipedia にありますので, ここでは

【1】 ストリーミング再生できない理由
【2】 簡単な AVI 1.0 と Open-DML (AVI 2.0) の違い
【3】 簡単な AVI 1.0 と 参照型 AVI の違い
【4】 pfsource の "予測ダウンロード" 機能はどこをダウンロードしているのか
【5】 インデックスを使わない再生

について説明したいと思います.



【1】 ストリーミング再生できない理由は, 再生に必要なデータが ファイルの最後 にあるから,
です... それだけです :D

avi1

色つきの部分が, 再生に必要な AVI インデックスです.

インデックスがファイルの後ろにあるのは, AVI 策定時,
PCもネットも遅く, 疑似ストリーミング再生する予定も無かったためです.

そして Microsoft は後に, ストリーミングを念頭に置いた ASF(Windows Media) を採用しました.
技術的には可能でも, オフィシャルな AVI 疑似ストリーミング可能化は, ASF 普及を自ら妨げることになり得ます.



【2】 簡単な AVI 1.0 と Open-DML (AVI 2.0) の違い

avi1

opendml

色々な理由で; Super-IndexStandard-Index が導入された事が大きな違いです.
Super-Index は, ファイル中の Standard-Index の場所を指しています.

AVI 1.0 のインデックスは Old-Index と呼ばれるようになりました.
下位互換性のために, Open-DML でも Old-Index を含むことがあります.

更に 2GB までという AVI 1.0 の仕様を回避するために,
Open-DML では, RIFF の後ろに RIFF を必要な分繋げて
大きなファイルを作ることが出来るようになっています.

日本語による更に詳しい説明については, C 系言語の知識が必要になりますが
AVIファイルフォーマット, 原著 Alexander Noé氏, 邦訳 MakKi氏; 2007が非常に参考になります.



【3】 簡単な AVI 1.0 と 参照型 AVI の違い

avi1

reference AVI

参照型 AVI 方式 (Giga AVI フォーマット) は,
AVI 1.0 の 2GB までという仕様を回避するために,
株式会社アイ・オー・データ機器によって開発された AVI フォーマットです.

映像・音声データが外部ファイルに記録されることが大きな違いです.

最初の RIFF には, 映像・音声データの代わりに,
外部ファイルを参照するための場所 (絶対パス) が記録されます.



【4】 pfsource の "予測ダウンロード" 機能はどこをダウンロードしているのか

AVI ファイル中のインデックスを, プレバッファにダウンロードしています.

まず Super-Index がある場合は Super-Index を,
次に Old-Index がある場合は Old-Index を プレバッファ (再生開始前に取得) します.

更に オプション設定により, 再生が開始されてから,
Super-Index に従って Standard-Index をポストバッファします.

pfsource が Standard-Index を プレバッファ でなく ポストバッファ (再生開始後に取得) するのは,
Standard-Index は movi チャンク内に散在可能であり, プレバッファ しようとすると,
映像・音声データを全てダウンロードしてから再生する事と同じになってしまう可能性がある為です.

以上のような方法でシークに掛かる時間と再接続回数を減らしています.



【5】 インデックスを使わない再生

基本的に, AVI(RIFF) は, ファイル内の構造に関する数値 (チャンクオフセット) がずれたり,
中途半端なデータを格納していると再生できません.

しかしネット上には, 様々なプレイヤーや修復ソフトがあります.

これらのソフトウェアは
- 生き残ったデータから, インデックスを予想・再構築したり
- インデックスに頼らず, 先頭からとにかくデータを読んで再生したり
しています.

特許技術になっているものも有ります.

問題点としては, ファイル形式によって, シークができなかったり,
映像・音声の同期が取れなくなることが挙げられます.


FirstUpload 09/08/02-11:27
LastUpdate 11/01/25-16:49
xenowire.net
Script by Petit CMS