前回の記事「FLVPlaybackコンポーネントで、closeVideoPlayer()メソッドを使う。」との2部構成みたいな感じです。
まずはコイツを見てくれ。
僕は、ココのアカウントを持っていないし、同様の問題に直面したときは、投稿日時からだいぶ日数が経ってたので、特にココにはコメントしなかったんだけれど、今後同様の問題に直面した人の救いになればと思ってエントリーを書いてみることにするよ。
前回、
movie.closeVideoPlayer(1);
にて、NetStreamを閉じましが、再度再生するために
movie.activeVideoPlayerIndex = 1;
movie.visibleVideoPlayerIndex = 1;
movie.source = "flvファイルへのパス";
movie.play();
このように記述すると、コンポーネントの表示上はミュートになっていないのに、音声が再生されません。
さらに、ボリュームのハンドルや、ミュートボタンを弄ると、音が流れ出します。
どうやら、ビデオとサウンドは、別々のプロセス(インスタンス)で管理されているみたいで、FLVPlaybackコンポーネントを生成したときは、ビデオとサウンドが両方生成され、closeVideoPlayer()メソッドを実行すると、ビデオとサウンドが両方削除されるが、その後に同じコンポーネントに対して
movie.source = "flvファイルへのパス";
movie.play();
上記を実行すると、ビデオ再生だけが生成され、サウンドは生成されず、音声ボタン等を操作したときに初めて生成されているようだ。(全部予想な!!)
この予想が正しければ、FlvPlaybackコンポーネントにサウンドを制御するプロパティがあって、それはきっとクラス型だ!
とあたりをつけて、ドキュメントを漁る。
ほどなくして、soundTransformというプロパティを発見。予想通りSoundTransformというクラスのインスタンスだ。
ということは、再度、FlvPlaybackで再生するときに、soundTransformプロパティを再設定してやればいけるはず!!ってことで
var sound:SoundTransform = new SoundTransform(1 , 0);
movie.soundTransform = sound;
コンストラクタに、SoundTransform(1 , 0);
で、第1引数にボリューム(1で最大音量)、第2引数にパン(0でパン無し)を与えて、生成したSoundTransformクラスのインスタンスを、FlvPlaybackコンポーネントのプロパティsoundTransformに渡します。
これで、晴れて音声が再生されるようになります。やったね♪




コメントする