2013-02-13 53 views
2

我正在從網絡攝像機到ASMS項目中的AMS進行錄製,並從麥克風獲取音量級別我必須將麥克風連接到NetStream 。稍後,當用戶啓動錄製時,NetStream.time值將從相機附加時開始計數,而不是從NetStream.publish被調用時開始計數。如果他們停止錄製並再次錄製,則NetStream.time現在從0開始。到目前爲止,解決此問題的唯一方法似乎是調用發佈,然後在連接麥克風後立即關閉NetStream。 AS2 NetStream的文檔提到了這個事實,並且建議調用​​NetStream.publish(false),這在AS3中不起作用,也不會調用不帶參數的發佈。NetStream.time從相機連接時開始,而不是在NetStream.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(); 

的,當用戶啓動reording現在

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

ns.time爲零。我錯過了什麼,有沒有更好的解決方案?

+0

有趣的是,我從來沒有注意到這一點。我想這是因爲我一直將麥克風(和相機)連接到NetStream,並立即開始錄製。有沒有關於你的使用案例,排除這一點?關於獲得音量級別的一些事情? (我不明白那部分)。在您準備開始錄製之前不要創建「NetStream」似乎是最佳路徑。另一個(不是很好)的想法是使用你自己的'Timer'。 – 2013-02-13 16:27:06

+0

我想在錄音開始之前從麥克風顯示音量水平,以便它們可以在增益或系統輸入電平較低時調整增益或系統輸入電平。 Microphone.level爲0,直到您將其附加到NetStream,並且您第一次執行此操作時,NetStream.time將啓動計數,這有點奇怪。 – 2013-02-13 22:58:30

+0

感謝您的解釋。還有另一種獲得麥克風級別的方法(它檢測的聲音量)。現在它已經逃脫了我,但是我通過一個「麥克風/攝像頭嚮導」類型的顯示器來完成這個任務,讓用戶選擇使用哪個攝像頭/麥克風。我能夠在「聲音計量器」中直觀地看到它所拾取的聲音 - 這種聲音可以在連接到系統的多個麥克風上工作,並且不必將它們連接到NetStream。我正在查看API,但似乎無法找到我使用的(並且無法再訪問該代碼)。 – 2013-02-13 23:21:55

回答

0

您可以使用mic.setLoopBack(true),它將麥克風活動路由到您的揚聲器。您現在將能夠看到activityLevel。但是你可能會想要在音量爲0的麥克風上設置一個soundTransform,這樣麥克風就會被有效地靜音。

基本上。

mic.setLoopBack(true);

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

mic.soundTransform = transform;

停止顯示活動級別後,請確保您刪除了轉換。

相關問題