「これはヤバかったな」という遅刻エピソード

phpで音を鳴らしたいです。

サーバーにアップしておいた、10個の音を、条件毎に別の音が鳴るページを作りたい。

if (n=="1"){
サウンド1を再生
} elseif(n=="2"){
サウンド2を再生
}
・・・・

みたいな感じです。



php5を使用しています。

ブラウザに依存せずにIEでもFireFox、スマートフォンでもなるようにしたいです。


お願いします。

A 回答 (6件)

PHPで音を鳴らす、と考えるのは間違いですね。



PHPはサーバーサイドスクリプトです。
あり得ない事ですが、もしPHPで音を鳴らす事ができたとしても、サーバー室内でピロピロ音が鳴るだけでユーザーにはまるで聞こえません。
なので、ブラウザの技術で音を鳴らすようにするタグを、条件毎に切り替えるという事で対応します。
(結局は、PHPプログラムから見れば条件分岐させて表示を変えるのと違いはない)

実際に流す音楽を鳴らす方法には、いくつか選択肢はありますが、
http://www.7key.jp/hp/_ex/5.html
こんなところがいいかと。

この回答への補足

あ、すみません。
autostart="true"

にすれば流れますね。

ただ、ieでしか動作しませんでした。。。

一番使いたいのはiPhoneなどのスマフォで動作してほしいです。

補足日時:2011/12/15 15:55
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

この方法は試したのですが・・・自動的に再生してくれないです。
ある条件を満たしたら自動的に指定の音が鳴るというシステムを作りたいです。

説明不足ですみません。

お礼日時:2011/12/15 15:50

私の回答は特別なことではありません。


本来「再生ボタンをクリックしたら」という発生のタイミング(トリガー)のところを、「HTMLが読み込まれたら」や「HTMLが読み込まれて1秒経過したら」などに変更するだけです。
「iOSのオート再生のさせ方」という直接的な調べ方ではなく、基本的なaudioタグの扱い方を調べられるとよいと思います。

iframeについては、直接音声ファイルにアクセスする方法なので、忘れてください。
    • good
    • 1

試していないですが、iOSでaudioタグのauto属性が無効なので、javascriptでloadして読み込み完了後にやはりjavascriptでトリガーすれば出来ると思うのですが。

もっと単純な方法を考えるなら、アクセス先をhtmlではなく、音声ファイルそのもにアクセスさせるとか。同時に画像やテキストを表示したいならiframeにしこむとか。いろいろ方法はあるんじゃないですかね。
    • good
    • 0
この回答へのお礼

再度回答ありがとうございます。

すみません(汗)専門用語が分からないです。お時間がある時で良いので、参考サイトか、説明をしてくれるとたすかりますm(_ _)m

・javascriptでトリガーとは?

・同時に画像やテキストを表示したいならiframeにしこむとか??


音声ファイルにアクセスすれば確かに音はなりそうですが、読み込みに時間がかかってしまうので、現実的ではないです。

お礼日時:2011/12/20 10:15

まずはPHPを使用せずに、音を鳴らす機能を静的なHTMLで実装してみてください。


それができれば、おのずと答えは出るはずです。
つまり、どれだけPHPを調べても、そこに答えはないですよ。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

実はそれが出来なくて困っています。
おっしゃる通り、HTMLで鳴らす事が出来れば、PHPで書き出せば済む事ですからね。

javascriptも調べたのですが…今のところ見つかっていないです。

IEやFireFoxではなるように出来たのですが、どうしてもiPhone環境ではなりません。
safari対応のソースを使っても、iOSではダメとか・・・

何か方法を知っていましたら、参考URLでも良いのでお願いします。
iOS4では鳴らす事が出来るという記事は見つかったのですが、同じ方法でやりましたがiOS5ではダメでした。

お礼日時:2011/12/19 06:57

サーバーサイドだから音を鳴らすことが出来ないというのは正解でありつつも間違いだったりします。


PHPは確かにサーバーサイドだけど、ブラウザからアクセスするのであれば処理結果としてHTMLを出力できるので、音を鳴らすHTMLを出力したら良いだけの話です。コンソールでの処理なら(出来ないことないけど)諦めて別の手段を選んだほうが得策です。


if (n=="1"){
サウンド1を再生するHTMLを出力
} elseif(n=="2"){
サウンド2を再生するHTMLを出力
}


んで、出力するHTMLですが、ブラウザ依存なしにするならembedタグを使うのがベターだと思います。

サウンドを再生するHTML書式は
http://www.interq.or.jp/blue/inside/mp3/plug-in. …
等を確認してください。
「HTML embed mp3」とかでググれば沢山出てくるでしょう。


また、無理に1つのタグで音声再生する必要は無く、ユーザーエージェントで機種やブラウザ判別して出力するタグを変更することも可能です。
※「PHP ブラウザ判別」「PHP 機種判別」とかで検索するといっぱいサンプルが出てきます。
これを利用したらembedで再生できないブラウザであっても大丈夫でしょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

<embed src="xxx.mp3" autostart="true" width=70 height=25>

と、autostart="true"にしているにもかかわらず、iPhoneでは自動再生してくれません。。。

お礼日時:2011/12/18 01:26

スマートフォンですね…


ちょっと調べてみましたが、iPhone専用のHTML技術情報は少ない…

iPhoneのブラウザはSafariだという事なので、Safariで音が鳴らせればiPhoneでも同じ動きではないか?というところに期待して以下のURLでの回答を参考にしてはいかがでしょうか?
ちなみに回答の動作については、私は確認していません。

http://oshiete.goo.ne.jp/qa/5753914.html

Android携帯の方は、WebブラウザがWebKitベースと言うことで、おおざっぱに言えばSafariと同系列とみなせるので、同じ方法で対応できるかも知れません。
    • good
    • 0
この回答へのお礼

再度ありがとうございます。

うーん。理解不能でした・・・・。

いろいろ調べたのですが、iPhoneで音を鳴らすのは難しいみたいです。。。
autoplayが有効にならないなどの問題があり、iOS4では鳴らす方法はあるのですが、iOS5での方法は乗っていませんでした。

お礼日時:2011/12/18 01:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報