Pakiet | flash.media |
Klasa | public final class Microphone |
Dziedziczenie | Microphone EventDispatcher Object |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Aby uzyskać dostęp do urządzenia mikrofonowego, można użyć metody Microphone.getMicrophone()
. Metoda ta pozwala zwraca jednak prosty mikrofon, bez możliwości wyeliminowania echa akustycznego. Aby wyeliminować echo akustyczne, musisz utworzyć instancję mikrofonu przy użyciu metody Microphone.getEnhancedMicrophone()
. Ta metoda zwraca urządzenie mikrofonowe z włączoną funkcją eliminowania echa akustycznego dla urządzenia mobilnego. Eliminacja echa akustycznego pozwala tworzyć aplikacje do obsługi dźwięków i wideo w czasie rzeczywistym, które nie wymagają używania zestawów słuchawkowych.
Tworzenie aplikacji obsługującej czat w czasie rzeczywistym
Aby utworzyć aplikację obsługującą czat w czasie rzeczywistym, należy zaprogramować przechwytywanie dźwięku i wysyłanie go na serwer Flash Media Server. Klasy NetConnection i NetStream pozwalają wysyłać strumienie dźwiękowe na serwer Flash Media Server. Serwer Flash Media Server może przekazywać dźwięk do innych klientów. Aby utworzyć aplikację obsługującą czat bez konieczności stosowania zestawów słuchawkowych, należy użyć funkcji eliminacji echa akustycznego. Eliminacja echa akustycznego to mechanizm zapobiegający sprzężeniu zwrotnemu, jakie występuje, gdy dźwięk jest rejestrowany przez mikrofon, przekazywany do głośników, a następnie ponownie rejestrowany przez mikrofon. Aby użyć funkcji eliminacji echa akustycznego, należy wywołać metodę Microphone.getEnhancedMicrophone()
w celu pobrania odniesienia do wystąpienia klasy Microphone. Aby skonfigurować ustawienia, należy ustawić właściwość Microphone.enhancedOptions
na wystąpienie klasy MicrophoneEnhancedOptions
.
Lokalne odtwarzanie dźwięku z mikrofonu
Wywołując metodę setLoopback()
, można przekierować dźwięk z mikrofonu wprost do wyjścia dźwięku komputera lub urządzenia lokalnego. Taka konfiguracja grozi powstaniem niekontrolowanego sprzężenia zwrotnego dźwięku. Jest to prawdopodobne, jeśli wejście mikrofonu może rejestrować dźwięki z wyjścia audio. Metoda setUseEchoSuppression()
może ograniczyć ryzyko wzmocnienia sprzężenia zwrotnego, ale nie eliminuje go.
Przechwytywanie dźwięku z mikrofonu na potrzeby nagrywania lub przetwarzania lokalnego
Aby przechwycić dźwięk z mikrofonu, należy wykrywać zdarzenia sampleData
wywoływane przez wystąpienie klasy Microphone. Wywoływany dla tego zdarzenia obiekt SampleDataEvent zawiera dane dźwiękowe.
Więcej informacji o przechwytywaniu strumieni wideo znajduje się w klasie Camera.
Obsługa mikrofonu w środowisku wykonawczym
Klasa Microphone nie jest obsługiwana w programie Flash Player działającym w przeglądarce dla urządzeń przenośnych.
Obsługa profili AIR: klasa Microphone jest obsługiwana w systemach operacyjnych dla komputerów stacjonarnych oraz przez urządzenia mobilne z systemami iOS i Android. Nie jest też obsługiwana na urządzeniach telewizyjnych ze środowiskiem AIR. Więcej informacji o obsłudze elementów interfejsu API w różnych profilach można znaleźć w sekcji Obsługa profilów aplikacji AIR.
W czasie wykonywania można sprawdzić, czy ta funkcja jest obsługiwana, odczytując właściwość Microphone.isSupported
. W przypadku urządzeń telewizyjnych ze środowiskiem AIR właściwość Microphone.isSupported
ma wartość true
, ale metoda Microphone.getMicrophone()
zawsze zwraca wartość null
.
Ustawienia prywatności
Program Flash Player wyświetla okno dialogowe ustawień prywatności, dzięki któremu użytkownik może zezwolić na dostęp do mikrofonu lub go odmówić. Rozmiar okna aplikacji musi wynosić co najmniej 215 x 138 pikseli. Jest to minimalny rozmiar wymagany, aby wyświetlić okno dialogowe. Jeśli ten warunek nie zostanie spełniony, nastąpi automatyczna odmowa dostępu.
Zawartość działająca w obszarze izolowanym aplikacji AIR nie potrzebuje uprawnień w celu uzyskania dostępu do mikrofonu. W tym przypadku nie jest również wyświetlane żadne okno dialogowe. W przypadku zawartości AIR działającej poza obszarem izolowanym aplikacji są wymagane uprawnienia i jest wyświetlane okno dialogowe prywatności.
Więcej informacji
Cristophe Coenraets: Notatki głosowe w systemie Android
Michael Chaize: AIR, Android i mikrofon
Powiązane elementy interfejsu API
Właściwość | Zdefiniowane przez | ||
---|---|---|---|
activityLevel : Number [tylko do odczytu]
Poziom dźwięku wykrywanego przez mikrofon. | Microphone | ||
codec : String
Kodek używany dla kompresowania dźwięku. | Microphone | ||
constructor : Object
Odwołanie do obiektu klasy lub funkcji konstruktora, dotyczące danej instancji obiektu. | Object | ||
enableVAD : Boolean
Włącza wykrywanie działania głosu Speex. | Microphone | ||
encodeQuality : int
Jakość kodowanej mowy, gdy stosowany jest kodek Speex. | Microphone | ||
enhancedOptions : MicrophoneEnhancedOptions
Steruje opcjami zaawansowanej obsługi mikrofonu. | Microphone | ||
framesPerPacket : int
Liczba klatek głosu Speex przesłanych w pakiecie (w komunikacie). | Microphone | ||
gain : Number
Wartość, o jaką mikrofon wzmacnia sygnał. | Microphone | ||
index : int [tylko do odczytu]
Indeks mikrofonu, uzyskany z tablicy zwróconej przez właściwość Microphone.names. | Microphone | ||
isSupported : Boolean [statyczny] [tylko do odczytu]
Właściwość isSupported ma wartość true, jeśli na bieżącej platformie jest obsługiwana klasa Microphone; w przeciwnym razie ma wartość false. | Microphone | ||
muted : Boolean [tylko do odczytu]
Określa, czy użytkownik zabronił dostępu do mikrofonu (prawda), czy zezwolił na dostęp (fałsz). | Microphone | ||
name : String [tylko do odczytu]
Nazwa aktualnie używanego urządzenia do przechwytywania dźwięków (zgodnie z danymi przekazanymi przez to urządzenie). | Microphone | ||
names : Array [statyczny] [tylko do odczytu]
Tablica ciągów znaków zawierających nazwy wszystkich dostępnych urządzeń do przechwytywania dźwięku. | Microphone | ||
noiseSuppressionLevel : int
Maksymalne tłumienie hałasu w dB (liczba ujemna) stosowane dla kodera Speex. | Microphone | ||
permissionStatus : String [statyczny] [tylko do odczytu]
Sprawdź, czy system otrzymał pozwolenie na dostęp do korzystania z mikrofonu. | Microphone | ||
rate : int
Częstotliwość, z jaką mikrofon przechwytuje dźwięk (w kHz). | Microphone | ||
silenceLevel : Number [tylko do odczytu]
Poziom dźwięku wymagany do uaktywnienia mikrofonu i wywołania odpowiedniego zdarzenia. | Microphone | ||
silenceTimeout : int [tylko do odczytu]
Liczba milisekund, które muszą upłynąć od momentu zaprzestania detekcji dźwięku przez mikrofon do momentu wywołania zdarzenia. | Microphone | ||
soundTransform : flash.media:SoundTransform
Pozwala kontrolować dźwięk rejestrowany przez mikrofon, gdy urządzenie to działa w trybie pętli zwrotnej. | Microphone | ||
useEchoSuppression : Boolean [tylko do odczytu]
Ustawia wartość true, jeśli jest włączona funkcja blokady echa; w przeciwnym wypadku false. | Microphone |
Metoda | Zdefiniowane przez | ||
---|---|---|---|
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Rejestruje obiekt detektora zdarzeń w obiekcie EventDispatcher, dzięki czemu detektor będzie otrzymywał powiadomienia o zdarzeniu. | EventDispatcher | ||
Wywołuje zdarzenie, tj. kieruje je do przepływu zdarzeń. | EventDispatcher | ||
[statyczny]
Zwraca odniesienie do ulepszonego obiektu Microphone, który pozwala wyeliminować echo akustyczne. | Microphone | ||
[statyczny]
Zwraca odwołanie do obiektu Microphone odpowiedzialnego za przechwytywanie audio. | Microphone | ||
Sprawdza, czy obiekt EventDispatcher zawiera jakiekolwiek detektory zarejestrowane dla konkretnego typu zdarzeń. | EventDispatcher | ||
Wskazuje, czy dla obiektu zdefiniowano określoną właściwość. | Object | ||
Wskazuje, czy instancja klasy Object należy do łańcucha prototypów obiektu określonego jako parametr. | Object | ||
Wskazuje, czy określona właściwość istnieje i jest przeliczalna. | Object | ||
Usuwa detektor z obiektu EventDispatcher. | EventDispatcher | ||
Wysyła żądanie pozwolenia aplikacji na dostęp do mikrofonu. | Microphone | ||
Kieruje audio przechwycone przez mikrofon do lokalnych głośników. | Microphone | ||
Ustawia dostępność właściwości dynamicznej używanej w pętlach. | Object | ||
Pozwala określić minimalny poziom sygnału wejściowego interpretowanego jako dźwięk, a także (opcjonalnie) czas, po upływie którego brak sygnału jest interpretowany jako cisza. | Microphone | ||
Określa, czy będzie używana funkcja kodera-dekodera audio odpowiedzialna za blokowanie echa. | Microphone | ||
Zwraca ciąg reprezentujący obiekt — sformatowany zgodnie z konwencjami właściwymi dla ustawień regionalnych. | Object | ||
Zwraca ciąg reprezentujący określony obiekt. | Object | ||
Zwraca pierwotną wartość dla określonego obiektu. | Object | ||
Sprawdza, czy detektor zdarzeń określonego typu jest zarejestrowany w tym obiekcie EventDispatcher lub jego elementach macierzystych. | EventDispatcher |
activityLevel | właściwość |
activityLevel:Number
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Poziom dźwięku wykrywanego przez mikrofon. Wartości mieszczą się w przedziale od 0 (żaden dźwięk nie został wykryty) do 100 (wykryto bardzo głośny dźwięk) Wartość tej właściwości jest pomocna przy określaniu prawidłowej wartości przekazywanej do metody Microphone.setSilenceLevel()
.
Jeśli właściwość mikrofonu muted
ma wartość true
, wówczas wartość tej właściwości zawsze wynosi -1.
Implementacja
public function get activityLevel():Number
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z mikrofonu.
|
Powiązane elementy interfejsu API
codec | właściwość |
codec:String
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5 |
Kodek używany dla kompresowania dźwięku. Dostępne są kodeki Nellymoser (domyślny) i Speex. Klasa zestawień SoundCodec
zawiera różne wartości poprawne w przypadku właściwości codec
.
Jeśli używany jest kodek Nellymoser, można ustawić częstotliwość próbkowania za pomocą metody Microphone.rate()
. Jeśli używany jest kodek Speex, częstotliwość próbkowania jest ustawiona na 16 kHz.
Kodek Speex zawiera funkcję wykrywania głosu (VAD) i automatycznie zmniejsza używaną przepustowość, jeśli żaden głos nie jest wykrywany. W przypadku użycia kodeka Speex firma Adobe zaleca ustawienie poziomu ciszy na 0. W celu ustawienia poziomu ciszy należy użyć metody Microphone.setSilenceLevel()
.
Implementacja
public function get codec():String
public function set codec(value:String):void
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z mikrofonu.
|
Powiązane elementy interfejsu API
enableVAD | właściwość |
enableVAD:Boolean
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
Włącza wykrywanie działania głosu Speex.
Implementacja
public function get enableVAD():Boolean
public function set enableVAD(value:Boolean):void
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z mikrofonu.
|
encodeQuality | właściwość |
encodeQuality:int
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5 |
Jakość kodowanej mowy, gdy stosowany jest kodek Speex. Możliwe wartości należą do zakresu od 0 do 10. Wartością domyślną jest 6. Wyższe wartości określają wyższą jakość, ale wymagają większej przepustowości, co zostało przedstawione w poniższej tabeli. Wartości ilości bitów na sekundę reprezentują ilości netto i nie uwzględniają narzutu wynikającego z przesyłania pakietów.
Jakość wartości | Wymaga ilość bitów na sekundę (kilobity na sekundę) |
---|---|
0 | 3,95 |
1 | 5,75 |
2 | 7,75 |
3 | 9,80 |
4 | 12,8 |
5 | 16,8 |
6 | 20,6 |
7 | 23,8 |
8 | 27,8 |
9 | 34,2 |
10 | 42,2 |
Implementacja
public function get encodeQuality():int
public function set encodeQuality(value:int):void
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z mikrofonu.
|
Powiązane elementy interfejsu API
enhancedOptions | właściwość |
enhancedOptions:MicrophoneEnhancedOptions
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.3, AIR 2.7 |
Steruje opcjami zaawansowanej obsługi mikrofonu. Więcej informacji zawiera opis klasy MicrophoneEnhancedOptions
. Ta właściwość jest ignorowana w przypadku nieulepszonych wystąpień klasy Microphone.
Implementacja
public function get enhancedOptions():MicrophoneEnhancedOptions
public function set enhancedOptions(value:MicrophoneEnhancedOptions):void
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z mikrofonu.
|
Powiązane elementy interfejsu API
framesPerPacket | właściwość |
framesPerPacket:int
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5 |
Liczba klatek głosu Speex przesłanych w pakiecie (w komunikacie). Długość każdej klatki to 20 ms. Domyślnie są to dwie klatki na pakiet.
Większa ilość klatek Speex w komunikacie przekłada się na mniejszą wymaganą przepustowość, ale większe opóźnienie podczas wysyłania komunikatu. Mniejsza ilość klatek Speex zwiększa wymaganą przepustowość, ale zmniejsza opóźnienie.
Implementacja
public function get framesPerPacket():int
public function set framesPerPacket(value:int):void
gain | właściwość |
gain:Number
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Wartość, o jaką mikrofon wzmacnia sygnał. Poprawne wartości należą do zakresu od 0 do 100. Wartością domyślną jest 50.
Implementacja
public function get gain():Number
public function set gain(value:Number):void
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z mikrofonu.
|
Powiązane elementy interfejsu API
index | właściwość |
index:int
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Indeks mikrofonu, uzyskany z tablicy zwróconej przez właściwość Microphone.names
.
Implementacja
public function get index():int
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z mikrofonu.
|
Powiązane elementy interfejsu API
isSupported | właściwość |
isSupported:Boolean
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
Właściwość isSupported
ma wartość true
, jeśli na bieżącej platformie jest obsługiwana klasa Microphone; w przeciwnym razie ma wartość false
.
Implementacja
public static function get isSupported():Boolean
muted | właściwość |
muted:Boolean
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Określa, czy użytkownik zabronił dostępu do mikrofonu (true
), czy zezwolił na dostęp (false
). Jeśli wartość ulegnie zmianie, wywołane zostanie zdarzenie status
. Aby uzyskać więcej informacji, należy zapoznać się z metodą Microphone.getMicrophone()
.
Implementacja
public function get muted():Boolean
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z mikrofonu.
|
Powiązane elementy interfejsu API
name | właściwość |
name:String
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Nazwa aktualnie używanego urządzenia do przechwytywania dźwięków (zgodnie z danymi przekazanymi przez to urządzenie).
Implementacja
public function get name():String
Powiązane elementy interfejsu API
names | właściwość |
names:Array
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Tablica ciągów znaków zawierających nazwy wszystkich dostępnych urządzeń do przechwytywania dźwięku. Nazwy zwracane są bez konieczności wyświetlania użytkownikowi panelu ustawień prywatności w programie Flash Player. Tablica umożliwia indeksowanie (od zera) każdego urządzania do przechwytywania dźwięku i przechowuje liczbę tych urządzeń w systemie we właściwości Microphone.names.length
. Aby uzyskać więcej informacji, należy zapoznać się z sekcją klasy Array.
Wywołanie właściwości Microphone.names
wymaga rozszerzonego skanowania sprzętu, dlatego utworzenie tablicy może zając kilkanaście sekund. W większości przypadków istnieje możliwość skorzystania z domyślnego mikrofonu.
Uwaga: aby określić nazwę bieżącego mikrofonu, należy skorzystać z właściwości name
.
Implementacja
public static function get names():Array
Powiązane elementy interfejsu API
noiseSuppressionLevel | właściwość |
noiseSuppressionLevel:int
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
Maksymalne tłumienie hałasu w dB (liczba ujemna) stosowane dla kodera Speex. Jeśli jest włączone, wówczas tłumienie hałasu jest stosowane dla dźwięku przechwyconego z obiektu Microphone przed kompresją Speex. Aby wyłączyć tłumienie hałasu, należy ustawić wartość 0. Tłumienie hałasu jest domyślnie włączone z maksymalnym tłumieniem równym -30 dB. Ignorowane, gdy wybrany jest kodek Nellymoser.
Implementacja
public function get noiseSuppressionLevel():int
public function set noiseSuppressionLevel(value:int):void
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z mikrofonu.
|
permissionStatus | właściwość |
rate | właściwość |
rate:int
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Częstotliwość, z jaką mikrofon przechwytuje dźwięk (w kHz). Dozwolone wartości: 5, 8, 11, 22 i 44. Wartością domyślną jest 8 kHz, jeśli urządzenie przechwytujące dźwięk obsługuje tę wartość. W innym wypadku wartością domyślną jest kolejna dostępna częstotliwość przechwytywania powyżej 8 kHz, która jest obsługiwana przez urządzenie użytkownika przechwytujące dźwięk, zazwyczaj 11 kHz.
Uwaga: Rzeczywista częstotliwość różni się nieznacznie od wartości rate
, co ilustruje poniższa tabela:
Wartość rate | Rzeczywista częstotliwość |
---|---|
44 | 44100 Hz |
22 | 22050 Hz |
11 | 11025 Hz |
8 | 8000 Hz |
5 | 5512 Hz |
Implementacja
public function get rate():int
public function set rate(value:int):void
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z mikrofonu.
|
Powiązane elementy interfejsu API
silenceLevel | właściwość |
silenceLevel:Number
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Poziom dźwięku wymagany do aktywowania mikrofonu i wywołania zdarzenia activity
Wartością domyślną jest 10.
Implementacja
public function get silenceLevel():Number
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z mikrofonu.
|
Powiązane elementy interfejsu API
silenceTimeout | właściwość |
silenceTimeout:int
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Czas (w milisekundach), który musi upłynąć od momentu zaprzestania detekcji dźwięku przez mikrofon do momentu wywołania zdarzeniaactivity
. Wartość domyślna to 2000 milisekund (2 sekundy).
Aby ustawić tę właściwość, należy skorzystać z metody Microphone.setSilenceLevel()
.
Implementacja
public function get silenceTimeout():int
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z mikrofonu.
|
Powiązane elementy interfejsu API
soundTransform | właściwość |
soundTransform:flash.media:SoundTransform
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Pozwala kontrolować dźwięk rejestrowany przez mikrofon, gdy urządzenie działa on w trybie pętli zwrotnej.
Implementacja
public function get soundTransform():flash.media:SoundTransform
public function set soundTransform(value:flash.media:SoundTransform):void
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z mikrofonu.
|
useEchoSuppression | właściwość |
useEchoSuppression:Boolean
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Ustawia wartość true
, jeśli jest włączona funkcja blokady echa; w przeciwnym wypadku false
. Wartością domyślną jest false
, dopóki użytkownik nie zaznaczy opcji redukcji echa w panelu ustawień mikrofonu w programie Flash Player.
Implementacja
public function get useEchoSuppression():Boolean
Powiązane elementy interfejsu API
getEnhancedMicrophone | () | metoda |
public static function getEnhancedMicrophone(index:int = -1):Microphone
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.3, AIR 2.7 |
Zwraca odniesienie do ulepszonego obiektu Microphone, który pozwala wyeliminować echo akustyczne. Funkcja eliminacji echa akustycznego pozwala tworzyć aplikacje do obsługi czatów dźwiękowych i wideo, które nie wymagają używania zestawów słuchawkowych.
Parametr index
dla metody Microphone.getEnhancedMicrophone()
działa tak samo jak dla metody Microphone.getMicrophone()
.
Aby użyć tej metody w systemie Android, należy dodać uprawnienie MODIFY_AUDIO_SETTINGS
w dodatkach manifestu systemu Android w deskryptorze aplikacji.
Ważne: W danej chwili może istnieć tylko jedno wystąpienie ulepszonego urządzenia mikrofonu. Wszystkie inne wystąpienia klasy Microphone przestają wtedy udostępniać dane dźwiękowe i powodują odbieranie zdarzenia StatusEvent
z właściwością code
o wartości Microphone.Unavailable
. W przypadku niepowodzenia inicjowania ulepszonej obsługi dźwięku wywołania tej metody zwracają wartość null
, ustawienie wartości Microphone.enhancedOptions
nie ma żadnych skutków, a wszystkie istniejące wystąpienia klasy Microphone działają tak samo jak dotąd.
Aby skonfigurować ulepszony obiekt Microphone, należy ustawić właściwość Microphone.enhancedOptions
. W poniższym kodzie użyto ulepszonego obiektu Microphone i funkcji eliminacji echa akustycznego w trybie pełnego dupleksu na potrzeby testu lokalnego.
var mic:Microphone = Microphone.getEnhancedMicrophone(); var options:MicrophoneEnhancedOptions = new MicrophoneEnhancedOptions(); options.mode = MicrophoneEnhancedMode.FULL_DUPLEX; mic.enhancedOptions = options; mic.setLoopBack(true);
W przypadku korzystania z funkcji eliminacji echa akustycznego metoda setUseEchoSuppression()
jest ignorowana.
Jeśli plik SWF usiłuje uzyskać dostęp do obiektu zwróconego przez metodę Microphone.getEnhancedMicrophone()
— na przykład w wywołaniu metody NetStream.attachAudio()
— program Flash Player wyświetla okno dialogowe Prywatność, które umożliwia użytkownikowi określenie, czy zezwolić na dostęp do mikrofonu, czy odmówić dostępu. Należy się upewnić, że rozmiar stołu montażowego ma wymiary przynajmniej 215 x 138 pikseli; jest to minimalny rozmiar wymagany przez program Flash Player w celu poprawnego wyświetlania okna dialogowego.
Parametry
index:int (default = -1 ) — Wartość indeksu mikrofonu.
|
Microphone — Odwołanie do obiektu Microphone odpowiedzialne za przechwytywanie audio. Jeśli nie można zainicjować ulepszonej obsługi dźwięku, zwracana jest wartość null .
|
Powiązane elementy interfejsu API
getMicrophone | () | metoda |
public static function getMicrophone(index:int = -1):Microphone
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Zwraca odwołanie do obiektu Microphone odpowiedzialnego za przechwytywanie audio. Aby rozpocząć przechwytywanie audio, należy dołączyć obiekt Microphone do obiektu NetStream (szczegóły można znaleźć w opisie metody NetStream.attachAudio()
).
Wielokrotne wywołania metody Microphone.getMicrophone()
odwołują się do tego samego mikrofonu. Jeśli zatem kod zawiera wiersza mic1 = Microphone.getMicrophone()
i mic2 = Microphone.getMicrophone()
, wówczas mic1
oraz mic2
odwoływać się będą do tego samego (domyślnego) mikrofonu.
Na ogół nie należy przekazywać wartości właściwości index
. Wywołanie air.Microphone.getMicrophone()
zwróci odwołanie do domyślnego mikrofonu. Za pomocą sekcji ustawień mikrofonu w panelu ustawień programu Flash Player użytkownik może określić domyślny mikrofon, z którego powinna korzystać aplikacja. (Dostęp do panelu ustawień programu Flash Player można uzyskać poprzez kliknięcie prawym przyciskiem myszy treści Flash Player działającej w przeglądarce WWW). Przekazanie wartość właściwości index
może spowodować odwołanie się do innego mikrofonu, niż wybrany przez użytkownika. W rzadkich sytuacjach można użyć właściwości index
— na przykład jeśli aplikacja przechwytuje audio z dwóch mikrofonów jednocześnie. Treść działająca w środowisku Adobe AIR również korzysta z ustawień programu Flash Player dla domyślnego mikrofonu.
Aby pobrać wartość indeksu bieżącego obiektu Microphone, należy skorzystać z właściwości Microphone.index
. Wartość tę można następnie przekazać pozostałym metodom klasy Microphone.
Jeśli plik SWF usiłuje uzyskać dostęp do obiektu zwróconego przez metodę Microphone.getMicrophone()
— na przykład w wywołaniu metody NetStream.attachAudio()
— program Flash Player wyświetli okno dialogowe Prywatność, które umożliwi użytkownikowi wybranie, czy zezwolić, czy odmówić dostępu do mikrofonu. (Należy się upewnić, że rozmiar stołu montażowego ma wymiary przynajmniej 215 x 138 pikseli; jest to minimalny rozmiar wymagany przez program Flash Player w celu poprawnego wyświetlania okna dialogowego).
W momencie odpowiadania użytkownika w oknie dialogowym, wywoływane jest zdarzenie status
, które wskazuje jego odpowiedź. Można również sprawdzić właściwość Microphone.muted
, aby określić, czy użytkownik zezwolił, czy odmówił dostępu do mikrofonu.
Jeśli metoda Microphone.getMicrophone()
zwróci wartość null
, oznacza to, że z mikrofonu korzysta inna aplikacja lub nie ma żadnych kamer zainstalowanych w systemie. Aby określić, czy w systemie są zainstalowane mikrofony, należy skorzystać z właściwości Microphones.names.length
. Aby wyświetlić panel ustawień mikrofonu programu Flash Player, który umożliwia użytkownikowi wybieranie kamery, do której będzie się odwoływać metoda Microphone.getMicrophone
, należy skorzystać z metodySecurity.showSettings()
.
Parametry
index:int (default = -1 ) — Wartość indeksu mikrofonu.
|
Microphone — Odwołanie do obiektu Microphone odpowiedzialne za przechwytywanie audio.
|
Zdarzenia
status: — Wywoływane, gdy mikrofon zgłasza swój stan. Jeśli wartością właściwości code jest "Microphone.Muted" , oznacza to, że użytkownik nie zezwolił plikowi SWF na dostęp do mikrofonu Jeśli właściwość code ma wartość "Microphone.Unmuted" , oznacza to, że użytkownik zezwolił plikowi SWF na dostęp do mikrofonu.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
var mic:Microphone = Microphone.getMicrophone(); mic.setLoopBack(); mic.addEventListener(StatusEvent.STATUS, mic_status); var tf:TextField = new TextField(); tf.autoSize = TextFieldAutoSize.LEFT; tf.text = "Detecting microphone..."; addChild(tf); function mic_status(evt:StatusEvent):void { tf.text = "Microphone is muted?: " + mic.muted; switch (evt.code) { case "Microphone.Unmuted": tf.appendText("\n" + "Microphone access was allowed."); break; case "Microphone.Muted": tf.appendText("\n" + "Microphone access was denied."); break; } }
requestPermission | () | metoda |
public function requestPermission():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 24.0 |
Wysyła żądanie pozwolenia aplikacji na dostęp do mikrofonu.
Zdarzenia
PermissionStatus: — Rozsyłane, gdy użytkownik udzieli / nie udzieli zażądanego pozwolenia.
|
setLoopBack | () | metoda |
public function setLoopBack(state:Boolean = true):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Kieruje dźwięk przechwycony przez mikrofon do głośników lokalnych.
Parametry
state:Boolean (default = true )
|
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z mikrofonu.
|
setSilenceLevel | () | metoda |
public function setSilenceLevel(silenceLevel:Number, timeout:int = -1):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Pozwala określić minimalny poziom sygnału wejściowego interpretowanego jako dźwięk, a także (opcjonalnie) czas, po upływie którego brak sygnału jest interpretowany jako cisza.
- Aby całkowicie uniemożliwić wykrywanie dźwięku przez mikrofon, należy przekazać wartość 100 w parametrze
silenceLevel
; zdarzenieactivity
nigdy nie zostanie wywołane. - Aby określić poziom dźwięku, który w danym momencie wykrywa mikrofon, należy skorzystać z właściwości
Microphone.activityLevel
.
Kodek Speex zawiera funkcję wykrywania głosu (VAD) i automatycznie zmniejsza używaną przepustowość, jeśli żaden głos nie jest wykrywany. W przypadku użycia kodeka Speex firma Adobe zaleca ustawienie poziomu ciszy na 0.
Wykrywanie aktywności to zdolność do wykrywania dźwięku w momentach, gdy jego poziom sugeruje, że użytkownik·mówi. Jeśli użytkownik nic nie mówi, można wówczas zmniejszyć użycie szerokości pasma, ponieważ nie ma potrzeby przesyłania skojarzonego strumienia audio. Tej informacji można użyć w celu utworzenia wizualnej odpowiedzi, która pokaże użytkownikom, że na wejściu nie ma żadnego dźwięku.
Wartości ciszy bezpośrednio odpowiadają wartościom aktywności. Całkowita cisza to aktywność o wartości 0. Stały, głośny szum (najgłośniejszy możliwy do zarejestrowania na podstawie bieżącego ustawienia wzmocnienia) odpowiada wartości aktywności równej 100. Po właściwym ustawieniu wzmocnienia, wartość aktywności jest mniejsza, niż wartość ciszy w momencie, kiedy użytkownik nic nie mówi; kiedy użytkownik zaczyna mówić, wartość aktywności przewyższa wartość ciszy.
Metoda jest·podobna do metody Camera.setMotionLevel()
; obie metody są używane do określania, kiedy należy wywołać zdarzenie activity
. Jednak obie metody mają znacząco różny wpływ na publikowanie strumieni:
- Metoda
Camera.setMotionLevel()
została zaprojektowana w celu wykrywania ruchu i nie ma żadnego wpływu na użycie szerokości pasma. Nawet jeśli w strumieniu wideo nie jest wykrywany ruch, wideo jest nadal przesyłane. - Metoda
Microphone.setSilenceLevel()
została zaprojektowana w celu optymalizacji szerokości pasma. Jeśli strumień audio zostanie uznany za cichy, żadne dane audio nie będą przesyłane. W zamian przesłany zostanie komunikat informujący o rozpoczęciu się ciszy.
Parametry
silenceLevel:Number — Poziom dźwięku wymagany do aktywowania mikrofonu i wywołania zdarzenia activity Dopuszczalne wartości mieszczą się w przedziale od 0 do 100.
| |
timeout:int (default = -1 ) — Czas bezczynności (w milisekundach) jaki musi upłynąć, zanim program Flash Player lub środowisko Adobe AIR uwzględni zatrzymanie dźwięku i wywoła zdarzenie.dispatch Wartość domyślna to 2000 milisekund (2 sekundy). (Uwaga: wartość domyślna pokazana w sygnaturze (-1) jest wewnętrzną wartością, która wskazuje, że program Flash Player lub środowisko Adobe AIR będzie korzystać z wartości 2000).
|
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z mikrofonu.
|
Powiązane elementy interfejsu API
setUseEchoSuppression | () | metoda |
public function setUseEchoSuppression(useEchoSuppression:Boolean):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Określa, czy będzie używana funkcja kodera-dekodera audio odpowiedzialna za blokowanie echa. Wartością domyślną jest false
, dopóki użytkownik nie zaznaczy opcji redukcji echa w panelu ustawień mikrofonu w programie Flash Player.
Tłumienie echa jest próbą zmniejszenia efektów dźwiękowego sprzężenia zwrotnego, którego wynikiem jest podnoszenie się dźwięku wydobywającego się z głośnika powodowanego przez mikrofon tego samego komputera. Mechanizm ten różni się od anulowania echa akustycznego, które całkowicie usuwa sprzężenie zwrotne. Metoda setUseEchoSuppression()
jest ignorowana po wywołaniu metody getEnhancedMicrophone()
w celu eliminacji echa akustycznego.
Ogólnie tłumienie echa jest wskazane, gdy przechwytywany dźwięk jest odtwarzany za pomocą głośników — zamiast przez słuchawki. Jeśli plik SWF umożliwia użytkownikom określenie wyjściowego urządzenia dźwiękowego, może pojawić się chęć wywołania metody Microphone.setUseEchoSuppression(true)
, jeśli użytkownicy wskażą, że korzystają z głośników i będą używać także mikrofonów.
Użytkownicy mogą również dostosowywać te ustawienia w panelu ustawień mikrofonu w programie Flash Player.
Parametry
useEchoSuppression:Boolean — Wartość logiczna wskazująca, czy ma być stosowana redukcja echa (true — tak, false — nie).
|
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z mikrofonu.
|
Powiązane elementy interfejsu API
Security.showSettings()
wyświetla okno dialogowe programu Flash Player, które żąda uprawnienia do dostępu do mikrofonu użytkownika. Wywołanie metody setLoopBack(true)
przekierowuje sygnał wejściowy do lokalnego głośnika tak, aby dźwięk był słyszalny w trakcie działania przykładu.
Dwa detektory nasłuchują zdarzenia activity
i status
. Zdarzenie activity
wywoływane jest na początku i na końcu (jeśli istnieje) sesji i jest przechwytywane przez metodę activityHandler()
, która śledzi informacje o zdarzeniu. Zdarzenie status
wywoływane jest, gdy podłączony obiekt mikrofonu zgłosi jakąkolwiek informację o stanie; jest przechwytywane i śledzone za pomocą metody statusHandler()
.
Uwaga: Aby ten przykład zadziałał prawidłowo, należy podłączyć mikrofon do komputera.
package { import flash.display.Sprite; import flash.events.*; import flash.media.Microphone; import flash.system.Security; public class MicrophoneExample extends Sprite { public function MicrophoneExample() { var mic:Microphone = Microphone.getMicrophone(); Security.showSettings("2"); mic.setLoopBack(true); if (mic != null) { mic.setUseEchoSuppression(true); mic.addEventListener(ActivityEvent.ACTIVITY, activityHandler); mic.addEventListener(StatusEvent.STATUS, statusHandler); } } private function activityHandler(event:ActivityEvent):void { trace("activityHandler: " + event); } private function statusHandler(event:StatusEvent):void { trace("statusHandler: " + event); } } }
Tue Jun 12 2018, 12:06 PM Z