|
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 ![]() 色つきの部分が, 再生に必要な AVI インデックスです. インデックスがファイルの後ろにあるのは, AVI 策定時, PCもネットも遅く, 疑似ストリーミング再生する予定も無かったためです. そして Microsoft は後に, ストリーミングを念頭に置いた ASF(Windows Media) を採用しました. 技術的には可能でも, オフィシャルな AVI 疑似ストリーミング可能化は, ASF 普及を自ら妨げることになり得ます. 【2】 簡単な AVI 1.0 と Open-DML (AVI 2.0) の違い ![]() ![]() 色々な理由で; Super-Index と Standard-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 の違い ![]() ![]() 参照型 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 10/04/24-13:42 |
||