Carpe Diem

備忘録。https://github.com/jun06t

Pseudo-Streaming(擬似ストリーミング)を用いてシーク機能の実装

Flashを用いたWebプレーヤでは基本的に「ダウンロードしながら再生」はできるものの、シークなどはダウンロードが済んだ部分しかできません。HTML5だと自在にシークできますが。そこでApacheにモジュールを組み込むことで任意の場所にシーク出来るようにします。 ストリーミングのおさらい。 ◆Pseudo-Streaming 擬似ストリーミング。プログレッシブダウンロード。個人サーバでよく使われる。シークやビットレート操作などはサーバの設定やWebプレーヤをいじれば対応できるっぽい。 RTMP-Streaming 本来の意味でのストリーミング。ライブストリーミング。ライブ配信やトランスコードとかはこっちを使用。 ではシーク機能について説明します。ここで必要なのは ①サーバ側のPseudo-Streamingの有効化(Apacheでモジュールを使用) ②Webプレーヤ設定 です。 ①サーバ側の設定 apxs2が入ってない場合は $ sudo apt-get install apache2-threaded-dev ではダウンロードから $ wget http://h264.code-shop.com/download/apache_mod_h264_streaming-2.2.7.tar.gz $ tar -zxvf apache_mod_h264_streaming-2.2.7.tar.gz ビルドしてインストール。この時apxs2の場所を指定します。Ubuntuだと/usr/bin/apxs2だと思うので $ cd ~/mod_h264_streaming-2.2.7 $ ./configure --with-apxs="/usr/bin/apxs2" $ make $ sudo make install これでインストールは完了です。次にモジュールの有効化 /etc/apache2/mods-available に h264.load と h264.conf を作成します。名前は他のモジュールと重ならなければ何でもいいです。 $ sudo emacs -nw /etc/apache2/mods-available/h264.load LoadModule h264_streaming_module /usr/lib/apache2/modules/mod_h264_streaming.so $ sudo emacs -nw /etc/apache2/mods-available/h264.conf AddHandler h264-streaming.extensions .mp4 ファイルを作成したら有効化 $ sudo a2enmod h264 Apacheの再起動。 $ sudo /etc/init.d/apache2 restart これで大丈夫だと思います。ちゃんと機能してるかは、wgetでレスポンスヘッダを見る(wget -S アドレス)といいです。 X-Mod-H264-Streaming:version=~ が出てればOK。僕の場合.confの書き方を<if modules="~">にしてましたが、それがうまく動かなかった?ためか上のレスポンスが返ってこない=モジュールが機能しておらず、実装に手間取りました。 ②Webプレーヤの設定(JW Player) これは次の1行を加えるだけでいいと思います。 provider:'http', これはjwplaey.js用です。swfobject.jsではまた書き方が少し変わります。が、providerがhttpと言うのは同じはずです。 以下例です。 <script type='text/javascript' src='/jwplayer/jwplayer.js'></script> <div id="mediaplayer"></div> <script type="text/javascript">   jwplayer('mediaplayer').setup({     'modes': [         {type: 'flash', src: 'player.swf'},     ],     'width': '480',     'height': '270',     'file': '/videos/bunny.mp4',     'image': '/thumbs/bunny.jpg',     'provider':'http'   }); </script> 以上です。 ソース: Apache で HTTP Pseudo-Streaming を行うには Mod-H264-Streaming-Apache-Version2 JW player Configuration Options