2

AS3 プロジェクトで Web カメラから AMS に録音しています。マイクから音量レベルを取得するには、マイクを NetStream に接続する必要があります。後でユーザーが記録を開始すると、NetStream.publish が呼び出された時点からではなく、カメラが接続された時点から NetStream.time 値がカウントされます。録音を停止して再度録音すると、NetStream.time は 0 から開始されます。これまでのところ、これを回避する唯一の方法は、publish を呼び出して、マイクが接続されたらすぐに NetStream を閉じるようです。AS2 NetStream のドキュメントでは、この事実に言及しており、NetStream.publish(false) を呼び出すことを提案していますが、これは AS3 では機能せず、引数なしで publish を呼び出すだけでも機能しません。

ns = new NetStream(nc);
ns.attachCamera(cam);
ns.attachAudio(mic);

じゃあ後で

ns.publish(filename,"record");
trace(ns.time);

カメラを接続してからパブリッシュを初めて呼び出すまでの経過時間です。

私がこれまでに持っている唯一の解決策は

ns = new NetStream(nc);
ns.attachCamera(cam);
ns.attachAudio(mic);
ns.publish(filename,"record");
ns.close();

ユーザーが並べ替えを開始したとき

ns.publish(filename,"record");
trace(ns.time);

ns.time はゼロになりました。何か不足していますか、より良い解決策はありますか?

4

1 に答える 1

0

mic.setLoopBack(true)を使用できます。これにより、マイクアクティビティがスピーカーにルーティングされます。これで、activityLevelを表示できるようになります。ただし、ボリューム0のマイクにsoundTransformを設定すると、マイクが効果的にミュートされます。

基本的に。

mic.setLoopBack(true);

var transform:SoundTransform = new SoundTransfrom(); transform.volume = 0;

mic.soundTransform=変換;

アクティビティレベルの表示を停止したら、トランスフォームを削除してください。

于 2013-03-06T09:39:36.107 に答える