2012年1月20日金曜日

iphone上でのaudioタグについていろいろ

html5の登場でなにかと話題になっている(いた?)videoタグがありますが、その対となっているタグがあります。

youtube用のブックマークレット(以下youtubeプログラム)で多用しているAudioタグです。

さて、このタグですが、Iphone上で動作させるといろいろな癖があります。

[癖その1] Javascriptで操作させようとすると制限がかかる。
javascriptでplayや別のソースに切り替えたりという動作は制限がくわわっていると思われていますが。実は可能です。
どうやら一回audioタグで再生をしきったタグには後からいろいろ手を加えることが可能っぽいです。
実際youtubeプログラムでは、再生そのものは、audioタグのコントロールに処理させていますが、その後の動作は、javascriptで再読み込みを実行したり別のファイルをあてがったりしています。
この制限は、移動中等でネットワークの割当がかわると初期化されるっぽいです。

[癖その2]audioタグの再生が読み込みにおいついてしまうと、再生が止まる。
再生がおいつくと停止してしまう・・・まぁ、当然といえば当然です。
問題は[癖1]の性で、場合によっては、中途でリカバリー処理をつくっても動作しないことがあることです。
電車等で音楽をきいていて、曲が変わる→ネットワークの割当がかわる。→再生がおいつく。→とまっちゃう。ということがおきるとjavascriptではどうしようもないです。

[癖その3]音楽ファイルではなく動画ファイルをaudioタグに割り当てることも可能。
Iphoneに限りませんがmp3やm4aみたいな音楽データではなく、mp4やm4vという動画ファイルを割り当てて、音楽だけ流すということが可能です。
ただし、挙動がどうなるかは、環境次第です。
例えば、Iphoneでmp3をaudioタグで再生している場合はアプリの切り替えや画面のロックを実行しても再生はとまらずそのまま聴き続けることができます。
しかし、mp4(youtubeプログラム)を再生している場合は、切り替え等を実行すると、いったん再生が止まってしまいます。

[癖その4]複数のファイルを同時に再生することはできない。
PCブラウザではまったく問題ないことなんですが、Iphone上で同時の音声ファイルを再生しようとすると、1つしか再生できません。能力的には実行可能なのかもしれませんが、残念ながら制限がくわわっているようです。
おかげでhtml5を駆使してゲームをつくっても効果音が使えないです。
同様の問題がロード動作にもおきるらしく、複数のAudioタグを準備して、同時進行でダウンロードを先行させる。(要するにcacheさせる)ということも不可能ではないっぽいのですが、意図した動作になってくれません。

[癖その5]iphoneの設定を消音設定にしていても再生を始めると音がでる。
音楽を流すための機能を有効にしたんだから、音楽をながす・・・当たり前の動作です。
ただし、再生を開始するためには、ユーザーが自分でボタンを押す必要がでてきます。
このときに、javascriptの制限が復活してしまうという特性もあります。
これのおかげで、youtubeプログラムつかっていたら、ボタンが効かなくなったわ(怒)ということがたびたびおきてます。

とまぁaudioタグはapple的には音楽を聴くためのものという位置づけになっているようですね。
裏動作がいろいろあって、こうしたらjavascriptの制限がはずせるというのがいろいろありました。そして、これからもいろいろ見つけるだろうと思います^^;

videoタグほどではないですが、audioタグも前途多難ですわ。

0 件のコメント:

コメントを投稿