Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Adobe Flash Platform * Захоплення вводиться звуку

  1. Отримання доступу до мікрофона
  2. Трансляція звуку з мікрофона на локальні динаміки
  3. Зміна звуку, яке захоплюється з мікрофона
  4. Визначення активності мікрофона
  5. Відправка звуку на сервер мультимедійного вмісту і з сервера
  6. Захоплення аудіо з мікрофона

Наша взаимовыгодная связь https://banwar.org/

Клас Microphone дозволяє додатку підключатися до мікрофона або іншого пристрою введення звуку, встановленому в призначеній для користувача системі, і потім транслювати вводиться звук на системні динаміки або відправляти його на віддалений сервер, такий як Flash Media Server

Клас Microphone дозволяє додатку підключатися до мікрофона або іншого пристрою введення звуку, встановленому в призначеній для користувача системі, і потім транслювати вводиться звук на системні динаміки або відправляти його на віддалений сервер, такий як Flash Media Server. Можна отримати доступ до необробленої звукової інформації з мікрофона для виконання запису або обробки. Звук також можна надсилати безпосередньо на системні динаміки або передавати стислу звукову інформацію на віддалений сервер. Для даних, відправлених на віддалений сервер, можна використовувати кодек Speex або Nellymoser. (Кодек Speex доступний для використання, починаючи з Flash Player версії 10 і Adobe AIR версії 1.5.)

Отримання доступу до мікрофона

Клас Microphone не має власного конструктора. Замість нього використовується статичний метод Microphone.getMicrophone (), який дозволяє отримати новий екземпляр Microphone, як показано нижче.

var mic: Microphone = Microphone.getMicrophone ();

Виклик методу Microphone.getMicrophone () без параметра повертає перший пристрій введення звуку, виявлене в системі користувача.

В системі може бути встановлено кілька пристроїв введення звуку. Додаток може використовувати властивість Microphone.names, щоб отримати масив імен всіх доступних пристроїв введення звуку. Потім воно може викликати метод Microphone.getMicrophone () з параметром index, значення якого відповідає позиції індексу потрібного пристрою в масиві.

До системи може бути не підключений ні мікрофон, ні інший пристрій введення звуку. За допомогою властивості Microphone.names або методу Microphone.getMicrophone () можна перевірити, чи встановлено пристрій введення звуку в системі користувача. Якщо користувач не встановив пристрій введення звуку, масив names матиме нульову довжину, а метод getMicrophone () повертає значення null.

Коли додаток викликає метод Microphone.getMicrophone (), програвач Flash Player виводить вікно «Параметри Flash Player», в якому користувач може дозволити або заборонити програвача Flash Player доступ до камери або мікрофона в системі. Після того, як користувач натисне кнопку «Дозволити» або «Заборонити» в цьому вікні, відправляється подія StatusEvent. Властивість code цього примірника StatusEvent вказує, дозволений або заборонений доступ до мікрофона, як показано в наступному прикладі.

import flash.media.Microphone; var mic: Microphone = Microphone.getMicrophone (); mic.addEventListener (StatusEvent.STATUS, this.onMicStatus); function onMicStatus (event: StatusEvent): void {if (event.code == "Microphone.Unmuted") {trace ( "Microphone access was allowed."); } Else if (event.code == "Microphone.Muted") {trace ( "Microphone access was denied."); }}

Властивість StatusEvent.code буде містити значення «Microphone.Unmuted», якщо доступ дозволений, або «Microphone.Muted», якщо доступ заборонений.

Властивість Microphone.muted отримує значення true або false, коли користувач відповідно дозволяє або забороняє доступ до мікрофона. Однак властивість muted задається для примірника Microphone тільки після відправки події StatusEvent, тому додаток також має дочекатися відправки події StatusEvent.STATUS, перш ніж перевіряти властивість Microphone.muted.

Для того щоб в програвачі Flash Player було показано діалогове вікно налаштування, вікно програми має бути досить великим для його відображення (не менше 215 x 138 пікселів). В іншому випадку доступ автоматично забороняється.

Вмісту, що виконується в ізольованій програмному середовищі додатки AIR, не потрібно дозвіл користувача для отримання доступу до мікрофону. Таким чином, події status при відключенні і включенні мікрофона ніколи не відправляються. Вмісту, яке виконується в AIR за межами ізольованого програмного середовища додатки, потрібен дозвіл користувача, тому відправка подій status можлива.

Трансляція звуку з мікрофона на локальні динаміки

Звук, що вводиться з мікрофона, можна транслювати на динаміки локальної системи за допомогою методу Microphone.setLoopback (), параметр якого має значення true.

Коли звук з локального мікрофона транслюється на локальні динаміки, існує ризик створення ефекту зворотного зв'язку, який може викликати гучні свистячі звуки і навіть пошкодити звукове обладнання. Виклик методу Microphone.setUseEchoSuppression () зі значенням параметра true зменшує, але не усуває повністю ризик виникнення ефекту зворотного зв'язку. Компанія Adobe рекомендує завжди викликати метод Microphone.setUseEchoSuppression (true) перед викликом Microphone.setLoopback (true), якщо немає впевненості в тому, що користувач відтворює звук не через динаміки, а за допомогою навушників або іншого пристрою.

Наступний код демонструє трансляцію звуку з локального мікрофона на динаміки локальної системи.

var mic: Microphone = Microphone.getMicrophone (); mic.setUseEchoSuppression (true); mic.setLoopBack (true);

Зміна звуку, яке захоплюється з мікрофона

Додаток може змінювати звукові дані, що надходять з мікрофона, двома способами. По-перше, воно може змінювати рівень посилення вводиться звуку, множачи вводяться значення на заданий коефіцієнт, щоб зробити звук голосніше чи тихіше. Властивість Microphone.gain приймає числові значення від 0 до 100 включно. Значення 50 відповідає множнику 1 і позначає нормальну гучність. Значення 0 відповідає множнику 0 і заглушає вводиться звук. Значення вище 50 роблять звук голосніше.

Додаток також може змінювати частоту дискретизації вводиться звуку. Чим більша їх кількість, тим вище якість звуку, але при цьому також ущільнюються потоки даних, які вимагають більше ресурсів для передачі і зберігання. Властивість Microphone.rate представляє частоту дискретизації звуку в кілогерцах (кГц). Частота дискретизації за замовчуванням становить 8 кГц. Якщо мікрофон підтримує більш високу частоту, можна задати для властивості Microphone.rate значення більше 8 кГц. Наприклад, якщо задати властивості Microphone.rate значення 11, то частота дискретизації становитиме 11 кГц, а при значенні 22 частота дорівнюватиме 22 кГц. Доступна частота дискретизації залежить від обраного кодека. При використанні кодека Nellymoser можна вибрати частоту дискретизації, рівну 5, 8, 11, 16, 22 або 44 кГц. При використанні кодека Speex (доступний, починаючи з Flash Player версії 10 і Adobe AIR версії 1.5) ви можете вибрати тільки частоту 16 кГц.

Визначення активності мікрофона

З метою економії пропускної здатності і ресурсів обробки програвач Flash Player намагається визначити, коли мікрофон не передає звуку. Якщо рівень активності мікрофона залишається нижче порога тиші протягом певного часу, програвач Flash Player перестає передавати вводиться звук і відправляє просте подія ActivityEvent. При використанні кодека Speex (доступний, починаючи з Flash Player версії 10 і Adobe AIR версії 1.5) встановіть рівень тиші на нульове значення, щоб додаток здійснювало безперервну передачу звуку. Система виявлення мовної активності Speex автоматично знижує споживання пропускної здатності.

Примітка. Об'єкт Microphone відправляє події activity, тільки коли додаток відстежує мікрофон. Таким чином, якщо функція setLoopBack (true) не викликається, додайте прослуховувач для подій звукових даних семплів або підключіть мікрофон до об'єкта NetStream. В цьому випадку події activity не потрапляють.

Для відстеження і контролю активності в класі Microphone передбачено три властивості.

  • Властивість activityLevel, призначене тільки для читання, вказує кількість звуку, яке визначається мікрофоном, за шкалою від 0 до 100.

  • Властивість silenceLevel вказує кількість звуку, необхідне для активації мікрофону і відправки події ActivityEvent.ACTIVITY. Властивість silenceLevel також використовує шкалу від 0 до 100, за замовчуванням використовується значення 10.

  • Властивість silenceTimeout вказує кількість мілісекунд, протягом яких рівень активності повинен знаходитися нижче порога тиші, перш ніж буде відправлено подія ActivityEvent.ACTIVITY, в якому стверджується, що мікрофон заглушений. За замовчуванням властивість silenceTimeout має значення 2000.

І властивість Microphone.silenceLevel, і властивість Microphone.silenceTimeout призначені тільки для читання, але їх значення можна змінити за допомогою методу Microphone.setSilenceLevel ().

У деяких випадках процес активації мікрофону при виявленні нової активності може викликати невелику затримку. Постійна підтримка мікрофона в активному стані запобігає такі затримки при активації. Додаток може викликати метод Microphone.setSilenceLevel () з параметром silenceLevel в значенні 0, щоб програвач Flash Player підтримував мікрофон в активному стані і продовжував збирати звукові дані, навіть коли звук не визначається. І навпаки, якщо задати параметру silenceLevel значення 100, мікрофон взагалі не має використовуватися.

У наступному прикладі показана інформація про мікрофон, а також повідомлення про події activity і status, відправлених об'єктом Microphone.

import flash.events.ActivityEvent; import flash.events.StatusEvent; import flash.media.Microphone; var deviceArray: Array = Microphone.names; trace ( "Available sound input devices:"); for (var i: int = 0; i <deviceArray.length; i ++) {trace ( "" + deviceArray [i]); } Var mic: Microphone = Microphone.getMicrophone (); mic.gain = 60; mic.rate = 11; mic.setUseEchoSuppression (true); mic.setLoopBack (true); mic.setSilenceLevel (5 1000); mic.addEventListener (ActivityEvent.ACTIVITY, this.onMicActivity); mic.addEventListener (StatusEvent.STATUS, this.onMicStatus); var micDetails: String = "Sound input device name:" + mic.name + '\ n'; micDetails + = "Gain:" + mic.gain + '\ n'; micDetails + = "Rate:" + mic.rate + "kHz" + '\ n'; micDetails + = "Muted:" + mic.muted + '\ n'; micDetails + = "Silence level:" + mic.silenceLevel + '\ n'; micDetails + = "Silence timeout:" + mic.silenceTimeout + '\ n'; micDetails + = "Echo suppression:" + mic.useEchoSuppression + '\ n'; trace (micDetails); function onMicActivity (event: ActivityEvent): void {trace ( "activating =" + event.activating + ", activityLevel =" + mic.activityLevel); } Function onMicStatus (event: StatusEvent): void {trace ( "status: level =" + event.level + ", code =" + event.code); }

При тестуванні цього прикладу говорите в мікрофон або створюйте шуми, щоб поспостерігати за значеннями інструкції trace на консолі або у вікні налагодження.

Відправка звуку на сервер мультимедійного вмісту і з сервера

Коли ActionScript використовується з потоковим сервером мультимедійні дані, таким як Flash Media Server, стають доступні додаткові можливості.

Зокрема, додаток може приєднати об'єкт Microphone до об'єкта NetStream і передавати дані безпосередньо з мікрофона користувача на сервер. Аудіодані також можна передавати потоком з сервера з додатком і відтворювати в складі об'єкта MovieClip або за допомогою об'єкта Video.

Кодек Speex доступний, починаючи з Flash Player версії 10 і Adobe AIR версії 1.5. Для вибору кодека, використовуваного для стиснення відправляються на медіа-сервер аудіо, налаштуйте властивість codec об'єкта Microphone. Це властивість може мати два значення, які перераховані в класі SoundCodec. Якщо властивості codec задано значення SoundCodec.SPEEX, для стиснення аудіо вибирається кодек Speex. Якщо властивості задано значення SoundCodec.NELLYMOSER (за замовчуванням), для стиснення аудіо вибирається кодек Nellymoser.

Додаткові відомості див. Онлайнові технічні характеристики по Flash Media Server на сторінці www.adobe.com/go/learn_fms_docs_ru .

Захоплення аудіо з мікрофона

У програмах Flash Player 10.1 і AIR 2 і пізніших версіях інформацію можна захоплювати з даних мікрофона в якості байтового масиву значень з плаваючою комою. Кожне значення представляє семпл монофонических звукової інформації.

Щоб отримати мікрофонні дані, задайте прослуховувач подій для події sampleData об'єкта Microphone. Об'єкт Microphone періодично відправляє події sampleData в міру того, як буфер мікрофона заповнюється звуковими семплами. Об'єкт SampleDataEvent має властивість data, яке представляє собою байтовий масив звукових семплів. Кожен семпл представлений значеннями з плаваючою комою, які відносяться до монофонічними звукових семплів.

Наступний код захоплює звукові дані з мікрофона в об'єкт ByteArray під назвою soundBytes:

var mic: Microphone = Microphone.getMicrophone (); mic.setSilenceLevel (0, DELAY_LENGTH); mic.addEventListener (SampleDataEvent.SAMPLE_DATA, micSampleDataHandler); function micSampleDataHandler (event: SampleDataEvent): void {while (event.data.bytesAvailable) {var sample: Number = event.data.readFloat (); soundBytes.writeFloat (sample); }}

Байти семпли можна повторно використовувати в якості аудіо для відтворення в об'єкті Sound. При цьому необхідно привласнити властивості rate об'єкта Microphone значення 44, яке відповідає частоті дискретизації, використовуваної об'єктами Sound. Можна також перетворити мікрофонні семпли, захоплені при низькій частоті, в частоту 44 кГц, яка потрібна об'єкту Sound. Врахуйте також, що об'єкт Microphone захоплює монофонічні семпли, тоді як об'єкт Sound використовує стереозвук. Тому кожен з байтів, захоплених об'єктом Microphone, потрібно записувати в об'єкт Sound двічі. У наступному прикладі 4 секунди мікрофонних даних захоплюються і відтворюються за допомогою об'єкта Sound:

const DELAY_LENGTH: int = 4000; var mic: Microphone = Microphone.getMicrophone (); mic.setSilenceLevel (0, DELAY_LENGTH); mic.gain = 100; mic.rate = 44; mic.addEventListener (SampleDataEvent.SAMPLE_DATA, micSampleDataHandler); var timer: Timer = new Timer (DELAY_LENGTH); timer.addEventListener (TimerEvent.TIMER, timerHandler); timer.start (); function micSampleDataHandler (event: SampleDataEvent): void {while (event.data.bytesAvailable) {var sample: Number = event.data.readFloat (); soundBytes.writeFloat (sample); }} Var sound: Sound = new Sound (); var channel: SoundChannel; function timerHandler (event: TimerEvent): void {mic.removeEventListener (SampleDataEvent.SAMPLE_DATA, micSampleDataHandler); timer.stop (); soundBytes.position = 0; sound.addEventListener (SampleDataEvent.SAMPLE_DATA, playbackSampleHandler); channel.addEventListener (Event.SOUND_COMPLETE, playbackComplete); channel = sound.play (); } Function playbackSampleHandler (event: SampleDataEvent): void {for (var i: int = 0; i <8192 && soundBytes.bytesAvailable> 0; i ++) {trace (sample); var sample: Number = soundBytes.readFloat (); event.data.writeFloat (sample); event.data.writeFloat (sample); }} Function playbackComplete (event: Event): void {trace ( "Playback finished."); }

Додаткові відомості про відтворення звуків з даних звукового семпли см. В розділі « Робота з динамічно створюваним звуком ».

Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: