JW FLV Media Playerはフリーで使える動画プレイヤーで便利なんだけど、どうしても音量を取得するのがうまくいかない。
音量を取得するのは音量の設定をDBに保存するため。
マニュアルを見ると
player.addControllerListener('VOLUME','function');
というコマンドでVOLUMEを変更したときにfunctionを実行させることができると書いてあるが、全然実行されない。
とりあえずプレイヤー周りのコードをさらしてみる。
<div id="container"> <a href="http://www.adobe.com/shockwave/download/index.cgi?Lang=Japanese&P1_Prod_Version=ShockwaveFlash">アドビのサイトより</a>フラッシュをインストールしてください。 </div> <%= javascript_include_tag 'swfobject' %> <script type="text/javascript"> function getVolume(evt){ alert("test"); } var player = new SWFObject("/player.swf","single","720","500","7","#FFFFFF"); player.addParam("allowfullscreen","true"); player.addParam("allowscriptaccess","always"); player.addParam("flashvars","file=<%= @video.video_path %>&volume=90&autostart=true"); player.addControllerListener('VOLUME','getVolume'); player.write("container"); </script>
これだとgetVolumeはボリュームを変更しても実行されない。
公式サイトのBBSを見ていると、↓みたいにみんなどうもplayerReadyという関数の中でaddControllerListenerを実行している。
function playerReady(obj) { player = document.getElementById(obj.id); player.addControllerListener('ITEM', 'itemMonitorC'); player.addModelListener('META', 'metaMonitorM'); };
playerReady関数は定義しておくだけで自動的に実行されるっぽい。おそらく動画プレイヤーの読込が終わった時点で自動的に呼び出されるんだろう。
これをまねしてplayerReady内でaddControllerListenerを実行すればいいのか?と思ってやってみたがだめ。
わからないのでテキストボックスを使って音量を指定して保存するようにするかな。。嫌だけど。