NetStream.time запускается с момента подключения камеры, а не с вызова NetStream.publish.
Я записываю с веб-камеры на AMS в проекте AS3, и чтобы получить уровень громкости от микрофона, мне нужно подключить микрофон к NetStream. Позже, когда пользователь начинает запись, значение NetStream.time отсчитывается с момента подключения камеры, а не с момента вызова NetStream.publish. Если они останавливают запись и записывают снова, теперь NetStream.time начинается с 0. Пока единственным способом обойти это, кажется, является публикация вызова, а затем закрытие на 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 теперь ноль. Я что-то упустил, есть ли лучшее решение?
1 ответ
Вы можете использовать mic.setLoopBack(true), который направит активность микрофона на ваши динамики. Теперь вы сможете увидеть уровень активности. Но тогда вы, вероятно, захотите установить soundTransform на микрофоне с громкостью 0, чтобы микрофон был эффективно приглушен.
В принципе.
mic.setLoopBack (истина);
var transform: SoundTransform = new SoundTransfrom (); transform.volume = 0;
mic.soundTransform = transform;
После того, как вы перестанете отображать уровень активности, убедитесь, что вы удалили преобразование.