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;

После того, как вы перестанете отображать уровень активности, убедитесь, что вы удалили преобразование.

Другие вопросы по тегам