2

我在 AS3 项目中从网络摄像头录制到 AMS,为了从麦克风获取音量级别,我必须将麦克风连接到 NetStream。稍后当用户开始记录时,NetStream.time 值从连接相机时开始计算,而不是从调用 NetStream.publish 时开始计算。如果他们停止录制并再次录制,现在 NetStream.time 从 0 开始。到目前为止,解决这个问题的唯一方法似乎是调用发布,然后在连接麦克风后立即关闭 NetStream。AS2 NetStream 的文档提到了这一事实,并建议调用在 AS3 中不起作用的 NetStream.publish(false),也不能只调用没有参数的发布。

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),它将麦克风活动路由到您的扬声器。您现在将能够看到活动级别。但是你可能想在音量为 0 的麦克风上设置 soundTransform,这样麦克风就会被有效地静音。

基本上。

mic.setLoopBack(true);

var transform:SoundTransform = new SoundTransfrom(); 变换.体积 = 0;

mic.soundTransform = 变换;

停止显示活动级别后,请确保删除转换。

于 2013-03-06T09:39:36.107 回答