feb19.jp blog - life is creative!

AS3のSoundMixer.computeSpectrumの問題点と対処法

ブックマークに追加する tags:   

AS3のSoundMixer.computeSpectrumの問題点と対処法

先日仕事でAS3サイトを制作したのですが、そのサイトのサウンドオンオフボタンの演出として、SoundMixer.computeSpectrumを使った表現をなんとしてでもやる、というものがありました。しかし実際やってみると、なかなか地雷いっぱいトラブルいっぱいで難しかったです。というわけで、その地雷とその対処法。

若干ですが、久しぶりですね。

FMSで音声再生中はSoundMixer.computeSpectrumが使えない

セキュリティの観点から、SoundMixer.computeSpectrumできないようにしているみたいなのですが、そのためにただ単にFMSで映像のストリーミングをするだけでも、セキュリティエラーが出てしまいます。

そのため、FMSストリーミング中だけは、演出をフェイクのものにすることで、泣く泣くこの問題を回避することにしました。

ただもしかしたら、FMS3(FMSSとか?)で、それを回避するサーバーサイドプログラムを組めば、イケルのかな?とか、思いました。ちょっと自分的には高度すぎる上に今回は仕様も確定して納期も近かったのであまり詳しくは調べなかったのですが。

MovieClipのタイムラインに配置したサウンドや、FLVを、SoundMixer.computeSpectrumが解析しない

MovieClipのタイムラインのどこかのフレームを選択して、Flash CS3の「プロパティ」パネルから、音声を配置しても、その音声は解析されません。さらに、音声付きのFLVをフレームに置いた場合もやっぱりSoundMixer.computeSpectrumが反応しません。

一見Flash CS3の「ムービーのプレビュー」で確認すると、ちゃんと反応しているのですけど、例えばスタンドアロンプレイヤーでSWFを再生させたり、どこかのウェブサーバーに置いて、インターネット経由で見たりすると、反応しないのです。

おそらくこれは、FlashPlayer 9のバグだと思うのです。

ただ、今回のプロジェクトでは、偶然にも別のFLVや音声が、URLRequest経由のストリーミングを、ある地点で再生開始した瞬間から、今までの音も反応するようになったので、おそらく何らかの音声ストリーミングがSWFを走った瞬間から、SoundMixer.computeSpectrumは解析を開始するのだと予想しました。

なので、一番最初のフレームで、ダミー、空の音声ファイルをストリーミングしておいて、SoundMixer.computeSpectrumがいつでも再生できるように準備をさせておくことで対応することができました。

Firefoxなどで、別のタブでYoutubeや何かの音声を流したりしていると、SoundMixer.computeSpectrumは、その音声も含めて解析しようとするので、ドメインの不一致で、サンドボックス障害になる

FACEsでnabeさんが解説されていますが、これはIE6ではおこらず、Firefox2で確認できました。FlashPlayerのプラグイン毎の構造の違いによるものなのでしょうか。まさかこれもFlashPlayerのバグではないでしょうね・・・。

こればっかりはどうしようもありませんでした・・・ポップアップでフルスクリーン表示するコンテンツだったので、そこは起こりづらい現象であるということから、nabeさんのように、やはりtry/catchでフェイクにしました。

以上三点をふまえて

何かとSoundMixer.computeSpectrumが問題になったので、今後しばらくはプロジェクトで使わないかもしれません・・・。

もし何か上の3つ以外の問題点、または関連する情報でもいいので色々何かご存知でしたら教えてください。

2008年02月20日09:51

Webデザインブログ

「AS3のSoundMixer.computeSpectrumの問題点と対処法」の関連エントリー

 iTunes Store(Japan)

コメント (2)

nabe:

こんにちわ。Facesに記事を書いたものです。
なるほどーFireFoxでしか起こらないんですね。そこまで気づきませんでした。

feb19:

Macでは確認していないのですが、Firefoxだけではなく、Netscape系のエンジンを持ったブラウザでなるみたいです。

すごく記事参考になりました。また書いてくださいね!

コメントを投稿

トラックバック

このエントリーのトラックバックURL:
http://feb19.jp/mt/mt-tb.cgi/133

この一覧は、次のエントリーを参照しています: AS3のSoundMixer.computeSpectrumの問題点と対処法:

» actionscript3 タイムライン上に配置された音に対する computeSpectrum 送信元 Relishable Blog
なかなか縁のなかった、 SoundMixer.computeSpectrum() を使って音の波形を作るスクリプトを書こうと思ったら 全く反応しない。。。... [詳しくはこちら]

» actionscript3 タイムライン上に配置された音に対する computeSpectrum 送信元 Relishable Blog
なかなか縁のなかった、 SoundMixer.computeSpectrum() を使って音の波形を作るスクリプトを書こうと思ったら 全く反応しない。。。... [詳しくはこちら]

Navigation

古:AS3でAS2のMovieClip.enabledはどうなった
新:adorez la photographie
トップページ

Recently Entries
Mac でファイルの関連付けを変える(Mac で AIR アプリがアップデート出来ないを解決する方法)
ファイルを右クリックして「情報を見る」を選び、表示されたウィンドウの...
Mac OS X 10.6 Snow Leopard から入ってるフォント「Menlo」がコーディング作業にいい感じ
Xcode でコード書いているとき、Eclipse でコード書くより...
AIR で JSON 形式ファイルの入出力
AIR 祭り開催中。今回はファイル入出力。AS3 で扱っている Ob...
Adobe CS5 ティザーサイトオープン
カウントダウンが始まっています。いよいよ CS5 ですね。globa...
AIR でファイルがドラッグアンドドロップされたことを NativeDragEvent で検知する
最近また AIR が楽しい気がして触っているのですが、 Google...
iPhone アプリ "iBeat - BPM Counter" を発売しました & iPhone インタラクションデザインについて
BPM 計測アプリです。既に似たようなアプリはいくつか発売されている...
AS3 の演算子 ||= について
AS3 だけでつかえるものではないのですが、AS3 での動作を確認し...
iPhone SDK 「カテゴリ」について+NSString の空白文字を除去する
Objective-C では、高位のフレームワークで、低位のフレーム...
Flash CS4 で Flex SDK (mx パッケージ、クラス) を使う
Flex 用のライブラリとかを見ると mx パッケージとか使われてい...
Flash CS5 を予習 ~Text Layout Framework (TLF) 編~
Text Layout Framework (TLF) を使って、F...