最初に
JAVAScript でWindowsMediaPlayerの制御を行いたいと思ったことがありました。
ゲームで音を出すためだったのですが、結局は FLASH を使って音を出すことにしました。
クライアントのサウンド関係の使用環境(WindowsMediaPlayerやQuickTimeなど)によって、安定して動作させるのは難しいことが判明したからです。
折角資料を集めたのに捨ててしまうのはもったいないと思いましたので、残すことにしました。
ひょっとしたら、役に立つ時があるかも知れません。
制御コード
/* * [関数名] CreateQuickTimeObj * [機 能] QuickTime のWebページ埋め込みタグ生成 * [説 明] JavaScriptでOBJECTタグ、EMBEDタグを生成し、生成した埋め込みタグを書き出す * ムービーサイズ、、自動再生の有無、コントロール表示・非表示、背景色を指定可 * [引 数] * @param fpas ムービーへのパス(相対パス可) * @param width ムービーの幅 * @param height ムービーの高さ * @param bgcolor 背景色 * @param f_controll コントロール表示 "true" | "false" * @param f_auto 自動再生 "true" | "false" */ function CreateQuickTimeObj(fpass,width,height,bgcolor,f_controll,f_auto){ htm=""; if(f_controll=="true"){ // コントロール表示の場合はコントロールの高さをプラス height=eval(height+16); } htm+="<object"; htm+=" name='QT'"; htm+=" classid='clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B'"; htm+=" width='"+width+"' height='"+height+"'"; htm+=" codebase='http://www.apple.com/qtactivex/qtplugin.cab'>\n"; htm+="<param name='SRC' value='"+fpass+"'>\n"; htm+="<param name='QTSRC' value='"+fpass+"'>\n"; htm+="<param name='CONTROLLER' value='"+f_controll+"'>\n"; htm+="<param name='AUTOPLAY' value='"+f_auto+"'>\n"; htm+="<param name='BGCOLOR' value='"+bgcolor+"'>\n"; htm+="<embed"; htm+=" name='QT'"; htm+=" pluginspage='http://www.apple.co.kp/quicktime/download/'"; /* htm+=" type='video/quicktime'"; Macで再生に不具合が出る為削除 2006/09/16 */ htm+=" src='"+fpass+"'"; htm+=" qtsrc='"+fpass+"'"; htm+=" width='"+width+"' height='"+height+"'"; htm+=" controller='"+f_controll+"'"; htm+=" autoplay='"+f_auto+"'"; htm+=" bgcolor='"+bgcolor+"'>\n"; htm+="</embed>\n"; htm+="</object>\n"; document.write(htm); } <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>PHP & JavaScript Room: 音声・動画配信 埋め込みタグをJavaScript化(IE対策)</title> <script type="text/javascript" src="CreateObjectEmbed_mov.js"></script><!-- 外部JS読み込み --> </head> <body> <h1>FlashムービーのWebページ埋め込みタグをJavaScriptで出力</h1> <!-- 関数をコールして埋め込みソースを書き出し [begin] --> <script type="text/javascript"> /* CreateQuickTimeObj(ムービーへのパス,ムービーの幅,ムービーの高さ,背景色,コントロール表示の有無,自動再生の有無) */ CreateQuickTimeObj("http://f32.aaa.livedoor.jp/~azusa/media/meta_sample.mov",190,240,"#000000","true","true"); </script> <!-- 関数をコールして埋め込みソースを書き出し [end//] --> <!-- JavaScript未対応または無効にしているユーザー向け --> <noscript> <object name='QT' classid='clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B' width='190' height='256' codebase='http://www.apple.com/qtactivex/qtplugin.cab'> <param name='SRC' value='http://f32.aaa.livedoor.jp/~azusa/media/meta_sample.mov' /> <param name='QTSRC' value='http://f32.aaa.livedoor.jp/~azusa/media/meta_sample.mov' /> <param name='AUTOPLAY' value='true' /> <param name='CONTROLLER' value='true' /> <embed name='QT' pluginspage='http://www.apple.co.kp/quicktime/download/' src='http://f32.aaa.livedoor.jp/~azusa/media/meta_sample.mov' qtsrc='http://f32.aaa.livedoor.jp/~azusa/media/meta_sample.mov' width='190' height='256' autoplay='true' controller='true'></embed> </object> </noscript> </body> </html> /* * [関数名] CreateWindowsMediaPlayerObj * [機 能] Windows Media Player のWebページ埋め込みタグ生成 * [説 明] JavaScriptでOBJECTタグ、EMBEDタグを生成し、生成した埋め込みタグを書き出す * ムービーサイズ、自動再生の有無、コントロール表示・非表示を指定可 * [引 数] * @param fpas ムービーへのパス(相対パス可) * @param width ムービーの幅 * @param height ムービーの高さ * @param f_controll コントロール表示の有無 "true" | "false" * @param f_auto 自動再生の有無 "true" | "false" * @param f_status ステータスバー表示の有無 "true" | "false" */ function CreateWMP(fpass,width,height,f_controll,f_auto,f_status){ htm=""; if(f_controll=="true"){ // コントロール表示の場合はコントロールの高さ(45px)をプラス height=eval(height+45); } if(f_status=="true"){ // ステータスバー表示の場合はステータスバーの高さ(24px)をプラス height=eval(height+24); } //OBJECT TAG htm+="<object"; htm+=" id='WMP'"; htm+=" width='"+width+"' height='"+height+"'"; htm+=" classid='CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95'"; htm+=" codebase='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715'"; htm+=" standby='Loading MicrosoftR WindowsR Media Player components...'"; htm+=" type='application/x-oleobject'>\n"; htm+="<param name='FileName' value='"+fpass+"'>\n"; htm+="<param name='ShowControls' value='"+f_controll+"'>\n"; htm+="<param name='AutoStart' value='"+f_auto+"'>\n"; htm+="<param name='ShowStatusBar' value='"+f_status+"'>\n"; //EMBED TAG htm+="<embed name='WMP' type='application/x-mplayer2'"; htm+=" pluginspage='http://www.microsoft.com/Windows/MediaPlayer/'"; htm+=" src='"+fpass+"'"; htm+=" width='"+width+"' height='"+height+"'"; htm+=" showcontrols='"+((f_controll=="true")?1:0)+"'"; htm+=" autostart='"+((f_auto=="true")?1:0)+"'"; htm+=" showstatusbar='"+((f_status=="true")?1:0)+"'>\n"; htm+="</embed>\n"; htm+="</object>\n"; document.write(htm); } <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>PHP & JavaScript Room: 音声・動画配信 埋め込みタグをJavaScript化(IE対策)</title> <script type="text/javascript" src="CreateObjectEmbed_wmv.js"></script><!-- 外部JS読み込み --> </head> <body> <h1>Windows Media PlayerのWebページ埋め込みタグをJavaScriptで出力</h1> <!-- 関数をコールして埋め込みソースを書き出し [begn] --> <script type="text/javascript"> /* CreateWindowsMediaPlayerObj(ムービーへのパス, ムービーの幅, ムービーの高さ, コントロール表示の有無, 自動再生の有無, ステータスバー表示の有無) */ CreateWindowsMediaPlayerObj("http://f32.aaa.livedoor.jp/~azusa/media/meta_sample.asx",320,240,"true","true","true"); </script> <!-- 関数をコールして埋め込みソースを書き出し [end//] --> <!-- JavaScript未対応または無効にしているユーザー向け --> <noscript> <object id='WMP' width='320' height='285' classid='CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95' codebase='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715' standby='Loading MicrosoftR WindowsR Media Player components...' type='application/x-oleobject'> <param name='FileName' value='http://f32.aaa.livedoor.jp/~azusa/media/meta_sample.asx' /> <param name='ShowControls' value='true' /> <param name='AutoStart' value='true' /> <param name='ShowStatusBar' value='true' /> <embed name='WMP' type='application/x-mplayer2' pluginspage='http://www.microsoft.com/Windows/MediaPlayer/' src='http://f32.aaa.livedoor.jp/~azusa/media/meta_sample.asx' width='320' height='285' autostart='1' showcontrols='1' showstatusbar='1'></embed> </object> </noscript> </body> </html> /* * [関数名] CreateFlashObj * [機 能] Flash Player のWebページ埋め込みタグ生成 * [説 明] JavaScriptでOBJECTタグ、EMBEDタグを生成し、生成した埋め込みタグを書き出す * ムービーサイズ、背景色を指定可 * [引 数] * @param fpas ムービーへのパス(外部JSファイルからの相対パス) * @param width ムービーの幅 * @param height ムービーの高さ * @param bgcolor 背景色 */ function CreateFL(fpass,width,height,quality,wmode,bgcolor,scale){ htm=""; htm+="<object id='FP' classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0'"; htm+=" width='"+width+"' height='"+height+"' align='middle'>"; htm+="<param name='allowScriptAccess' value='sameDomain'>\n"; htm+="<param name='movie' value='"+fpass+"'>\n"; htm+="<param name='quality' value='"+quality+"'>\n"; htm+="<param name='wmode' value='"+wmode+"'>\n"; htm+="<param name='bgcolor' value='"+bgcolor+"'>\n"; htm+="<param name='scale' value='"+scale+"'>\n"; htm+="<embed"; htm+=" name='FP'"; htm+=" src='"+fpass+"' "; htm+=" quality='"+quality+"' "; htm+=" wmode='"+wmode+"' "; htm+=" bgcolor='"+bgcolor+"' "; htm+=" width='"+width+"' height='"+height+"' "; htm+=" scale='"+scale+"' "; htm+=" align='middle' "; htm+=" allowScriptAccess='sameDomain' "; htm+=" type='application/x-shockwave-flash' "; htm+=" pluginspage='http://www.macromedia.com/go/getflashplayer'>\n"; htm+="</embed>\n"; htm+="</object>\n"; document.write(htm); } <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>PHP & JavaScript Room: 音声・動画配信 埋め込みタグをJavaScript化(IE対策)</title> <script type="text/javascript" src="CreateObjectEmbed_flash.js"></script><!-- 外部JS読み込み --> </head> <body> <h1>FlashムービーのWebページ埋め込みタグをJavaScriptで出力</h1> <!-- 関数をコールして埋め込みソースを書き出し [begin] --> <script type="text/javascript"> /* CreateFlashObj(ムービーへのパス,ムービーの幅,ムービーの高さ,背景色) */ CreateFlashObj("../../../media/flash/movie02.swf",80,130,"high","opaque","#FFFF00","showall"); </script> <!-- 関数をコールして埋め込みソースを書き出し [end//] --> <!-- JavaScript未対応または無効にしているユーザー向け --> <noscript> <object id='FP' classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0' width='80' height='130' align='middle'> <param name='allowScriptAccess' value='sameDomain' /> <param name='movie' value='../../../media/flash/movie02.swf' /> <param name='quality' value='high' /> <param name='wmode' value='opaque' /> <param name='bgcolor' value='#FFFF00' /> <param name='scale' value='showall' /> <embed name='FP' src='../../../media/flash/movie02.swf' quality='high' wmode='opaque' bgcolor='#FFFF00' width='80' height='130' scale='showall' align='middle' allowScriptAccess='sameDomain' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer'></embed> </object> </noscript> </body> </html>
特に問題になるのが、QuickTime をインストールするとOSのリンクを勝手に全て書き換えてしまうことです。
その結果、WindowsMediaPlayerで安定して動作していた環境が、QuickTimeをインストールした途端に動かなくなります。
Apple の強引なやり方には、反感を覚えてしまいます。
おまけに、QuickTime にはセキュリティホールが頻繁に発見されたりして安心して使用できません。
クロスブラウザを考慮して音を出したいと思ったなら、FLASH を経由すべきだと思います。