2017年10月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
無料ブログはココログ

« 憩いの森のウサギ小屋 | トップページ | ラーメンにっこう »

2011.04.11

JavaScriptでMP3再生の試行錯誤の覚え書き(その2)

豊郷の話が続いたりしたのでちょっと間が空いてしまいましたが、(その1)からの続きです。

とりあえず問題なく動いているように見えたスクリプトですが、再生できない曲と再生できる曲があることが判りました。現象としては、曲がロードされていないように見えます。
ただ、パス名が原因(変な文字が含まれているとか)というわけではなく、再生できなかった曲でもタイミングによっては再生できたり、ついさっき再生できた曲が今度は再生できなかったりします。

いろいろ調べてみると、Quicktimeを使ってinnerHTMLの書き換えで再生させようとするとうまくいかない事があり、setTimeout()を使って再生すると上手くいくと書かれたものを見つけました。
そこでスクリプトを修正し、autoplayをfalseにし、embedタグにid(embplay)を設定して、innerHTML設定後にsetTimeout()で
document.getElementById("embplay").Play();
などとやってみたのですが上手くいきません。
そもそもPlay()がエラーになっているようです。
また、autoplayをfalseにしてもロードされないという現象は変わらずに起きており、そもそもロード出来ないと再生も出来ないわけで、どちらにしてもこの方法では解決しないような気がしてきました。
そうなると、問題はQuicktimeを使っているからであって、Windows Media Playerを使えばいいのでは無いかと言う事になりました。再生用スクリプトを変更します。

// 再生
function soundPlay(soundfile) {
    var option = '"';
    option += ' type="application/x-mplayer2"';
    option += ' autostart="1"';
    option += ' width="320"';
    option += ' height="45"';
    option += ' playcount="0"';
    option += ' volume="-1500"';
    document.getElementById("player").innerHTML 
        = '<embed src="' + soundfile + option + ' />';
    document.getElementById("playstop").disabled = false;
}
(html側のid=playerのdivタグも高さを変えています)

embedタグのパラメータtypeの設定を変更しました。
heightもコントローラのサイズに合わせて大きくしています。
また、Quicktimeでは自動再生のパラメータがautoplayだったのが、autostartになっています。
さらに、ボリュームの設定値が、Quicktimeでは0~100だったものが、0が最大で、ボリュームを下げるのはマイナス値を設定するようになります。最小のボリュームがどれだけの値になるのかがちょっとわかりませんでした。-10000が最小と書かれたものもあったのですが、-5000を指定すると既に最小ボリュームになっていました。
リピート指定はQuicktimeではloopでしたが、playcountとなり、-1で1回再生(デフォルト)、0で無限リピート、1以上の数値を指定すると、指定回数のリピートとなります。

これで、FirefoxでもWindows Media Playerを使って再生出来るようになり、ロードの失敗も起こらなくなってめでたしめでたしです。
それに、これならIEでも動くかもしれません。まあ、IEはembedタグではなくobjectタグを使うとか、違いがあるようなのでやっぱり動かないかもしれませんけど。IEで動かす気はないので、どうでもいいんですが。
本来ならばいろんな環境で動くようにするのが望ましいのでしょうし、外に公開しているホームページだったりすると考慮しなければならないでしょうが、今回は自分の環境で自分が使えればそれでいいので、手抜きしています(^^;)


【5/7 追記】
新PCの導入でブラウザも新規にインストールしたところ、FirefoxではWindows Media Playerを使ってくれなくなりました。
OSが64bit版になったからか? などと思いつつも旧PCの設定などをいろいろ調べてみると、Microsoft Windows Media Player Firefox Pluginというのが必要なようです。入れた記憶はなかったのですが、旧PCでは以前に入れていたようです。
また、規定のプログラムで、メディアプレーヤーを「Windows Media Playerを使う」にしないといけないようです。こちらも旧PCでは以前に設定していたようです。
これらの設定を行わないとQuickTimeが使われてしまうようですね。もちろん、QuickTimeが入っていない環境ならWindows Media Playerを使ってくれるのでしょうけど。

« 憩いの森のウサギ小屋 | トップページ | ラーメンにっこう »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/39755/51357409

この記事へのトラックバック一覧です: JavaScriptでMP3再生の試行錯誤の覚え書き(その2):

« 憩いの森のウサギ小屋 | トップページ | ラーメンにっこう »

にほんブログ村

Amazon.co.jp