Life is Adventure!

bitly最新版 | Home | Avidemux 動画編集

Faststart擬似ストリーミング

数年前、動画共有サイトを試験的に制作し、iPod nanoでとった動画(mp4)をアップした。そのとき、Web Playerでの再生が、動画をダウンロードした後で始まることに気づいた。それまでの動画はmpgをIVC(Internet Video Converter)でFLVに変換し、Flash Playerで再生していた。そのときは再生がすぐ始まった。昨年末からはHD動画を撮っている。大容量なのでWebにアップするときはAVCを使って10分の1くらいに圧縮している。この変換でFaststartオプションを有効にしているが、再生がすぐには始まらない。

Webページも動画ファイルも同じサーバからHTTP配信することを"擬似ストリーミング"というが、動画ファイルの作り方によって配信・再生のタイミングが変わるらしい。ネット検索すると、そういう話が出てくる。

そこでテストしてみた。Yamb (Yet Anather MP$Box) という無料ソフトを使って無劣化変換をすると、擬似ストリーミングが有効な動画ファイル(MP4AAC/H.264)が作成される。二度手間で面倒だが、Yamb実行は数秒で完了する。

テストベンチ Ben Hur : 640x270 MP4/H.264 1Mbps 25MB 03:03

① AVC出力ファイル(w/ Faststart)

② Yambで①から作成した無劣化ファイル(プロファイルは①と同じ)

今日の言葉: 

コメント (6)

※ほかのビデオもチェックした結果、Yambで再編集すればよいことが分かった。
WiMAX実効スピード5~6Mbpsの環境で、5秒以内に再生が開始される。
※これまで100MBを超える動画ではダウンロードに時間がかかり数分以上待たされることがあった。待ちきれない友人からの苦情はこれでなくなるだろう。

HTTP擬似ストリーミングとは別にHTTP動的ストリーミング(Dynamic Streaming)がある。Flash Plugin 10.1+から使えるが、JWPlayer5.10(2011/11)は未だサポートしていない。
Video Delivery

HTTP Pseudostreaming should not be confused with HTTP Dynamic Streaming. The latter is a brand-new mechanism soley supported by the Flash Plugin 10.1+ that works by chopping up the original video in so-called chunks of a few seconds each. The videoplayer seamlessly glues these chunks together again. The JW Player does not yet support HTTP Dynamic Streaming.

HTTP Pseudostreaming は多くのサーバでは標準で設置されていない。つぎのモジュールが必要となる。
①The H264 streaming module for Apache, Lighttpd, IIS and NginX. It supports MP4 videos.
②The FLV streaming module for Lighttpd. It supports FLV videos.
この二つ(オープンソース)がもっとも多く使われている。
未調査だが、FLVを使っていたときは有効だったのは②が設置されていたからで、MP4では①がないためにダウンロード後にしか再生が開始されなかったのかもしれない。
しかし、Yamb出力ファイルでは擬似ストリーミングが機能するということは①も設置されているということか?サーバ側の機能に加えて動画ファイルの構成も関係するということだ。

前記のモジュールがなくてもPHPスクリプトで擬似ストリーミングを実現できる。よく使われているのがXmoov-PHPだそうだ。しかし、サーバ資源を食う、脆弱性リスクある、FLVのみ有効、という理由から推奨されない。

動画ファイルのmetadataのひとつにseekpointsがある。これが含まれていないと擬似ストリーミングは機能しない。このmetadataを出力しない変換ソフトがある。含まれているかを調べるときは、Metaviewer pluginを使う。seekpointsまたはkeyframesのリストがないときは、FLVMDI tool を使ってmetadataを挿入できる。
YambはFLVMDIと同じことをしているのだろう。Yambは一個人がつくったもので2009年以降アップデートされていない。今後はFLVMDIを使ったほうがいい。
HTML5 MP4をvideoタグで書けばプラグインなしにブラウザが再生してくれる。しかもmetadataがない動画でも擬似ストリーミングが可能だ。すべてのブラウザがHTML5 mp4/H.264対応になれば楽になる。

Metaviewerをセットアップした。
http://agorian.com/trip/script/metaviewer.htm

コメントを投稿


counter