Pakiet | flash.media |
Klasa | public final class Camera |
Dziedziczenie | Camera EventDispatcher Object |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Wystąpienie klasy Camera przechwytuje wideo w proporcjach poziomych. W przypadku urządzeń, na których można zmienić orientację ekranu, takich jak telefony komórkowe, obiekt Video dołączony do kamery wyświetla wideo prawidłowo tylko w orientacji poziomej. Oznacza to, że w aplikacjach dla urządzeń przenośnych należy używać orientacji poziomej do wyświetlania i nie należy stosować automatycznego obracania.
W systemie iOS wideo z kamery przedniej podlega odbiciu lustrzanemu. W systemie Android natomiast nie podlega.
Na urządzeniach przenośnych wyposażonych w kamerę z funkcją automatycznego ustawiania ostrości ta funkcja jest używana automatycznie. Jeśli kamera nie obsługuje ciągłego automatycznego ustawiania ostrości (co jest cechą wielu kamer urządzeń przenośnych), ustawienie ostrości kamery następuje wtedy, gdy obiekt Camera jest dołączony do strumienia wideo i jest wywoływana metoda setMode()
. Na komputerach stacjonarnych zachowanie automatycznego ustawiania ostrości zależy od ustawień i sterownika kamery.
W aplikacjach AIR w systemach Android oraz iOS kamera nie przechwytuje wideo, gdy aplikacja AIR nie jest aktywna i nie działa na pierwszym planie. Ponadto gdy aplikacja działa w tle, mogą zostać utracone połączenia przesyłania strumieniowego. W systemie iOS wideo z kamery nie może być wyświetlane, gdy aplikacja korzysta z trybu renderowania GPU. Wideo z kamery może być nadal przesyłane strumieniowo na serwer.
Obsługa profilów AIR: Ta funkcja nie jest 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 przypadku urządzeń telewizyjnych ze środowiskiem AIR właściwość Camera.isSupported
ma wartość true
, ale metoda Camera.getCamera()
zawsze zwraca wartość null
. Dostęp do kamery nie jest obsługiwany w przeglądarkach na urządzeniach przenośnych.
Więcej informacji o przechwytywaniu audio znajduje się w omówieniu klasy Microphone.
Ważne: Środowisko wykonawcze wyświetla okno dialogowe Prywatność, które umożliwia użytkownikowi wybranie, czy zezwolić na dostęp do kamery, czy go odmówić. Należy się upewnić, że rozmiar okna aplikacji ma wymiary przynajmniej 215 x 138 pikseli; jest to minimalny rozmiar wymagany do poprawnego wyświetlania okna dialogowego.
Aby utworzyć lub odwoływać się do obiektu Camera, należy użyć metody getCamera()
.
Więcej informacji
Michael Chaize: Android, AIR i kamera
Powiązane elementy interfejsu API
Właściwość | Zdefiniowane przez | ||
---|---|---|---|
activityLevel : Number [tylko do odczytu]
Intensywność ruchu wykrywanego przez kamerę. | Camera | ||
bandwidth : int [tylko do odczytu]
Maksymalna szerokość pasma bieżącego wyjściowego strumienia wideo (w bajtach). | Camera | ||
constructor : Object
Odwołanie do obiektu klasy lub funkcji konstruktora, dotyczące danej instancji obiektu. | Object | ||
currentFPS : Number [tylko do odczytu]
Szybkość przechwytywania danych przez kamerę (liczba klatek na sekundę). | Camera | ||
fps : Number [tylko do odczytu]
Maksymalna szybkość przechwytywania danych przez kamerę (liczba klatek na sekundę). | Camera | ||
height : int [tylko do odczytu]
Bieżąca wysokość przechwytywanego obrazu (w pikselach). | Camera | ||
index : int [tylko do odczytu]
Indeks liczony od zera, który określa położenia kamery w tablicy Camera.names zawierającej listę dostępnych kamer. | Camera | ||
isSupported : Boolean [statyczny] [tylko do odczytu]
Właściwość isSupported ma wartość true, jeśli na bieżącej platformie jest obsługiwana klasa Camera; w przeciwnym razie ma wartość false. | Camera | ||
keyFrameInterval : int [tylko do odczytu]
Liczba klatek wideo transmitowanych w całości (tzw. klatki podstawowe), a nie w postaci klatek interpolowanych za pomocą algorytmu do kompresji wideo. | Camera | ||
loopback : Boolean [tylko do odczytu]
Określa, czy lokalny obraz danych przechwytywanych przez kamerę ma być kompresowany i dekompresowany (true), tak jak dzieje się to w przypadku transmisji na żywo za pomocą serwera z oprogramowaniem Flash Media Server, czy też ma nie być kompresowany (false). | Camera | ||
motionLevel : int [tylko do odczytu]
Intensywność ruchu niezbędna do wywołania zdarzenia aktywności. | Camera | ||
motionTimeout : int [tylko do odczytu]
Liczba milisekund, które muszą upłynąć od momentu wyłączenia kamery po wykryciu ruchu do momentu wywołania zdarzenia. | Camera | ||
muted : Boolean [tylko do odczytu]
Wartość typu Boolean, która określa, czy użytkownik zablokował dostęp do kamery (true), czy też zezwolił na ten dostęp (false) w oknie dialogowym Prywatność programu Flash Player. | Camera | ||
name : String [tylko do odczytu]
Nazwa bieżącej kamery (zgodnie z danymi przekazanymi przez urządzenie). | Camera | ||
names : Array [statyczny] [tylko do odczytu]
Tablica ciągów znaków zawierająca nazwy wszystkich dostępnych kamer. | Camera | ||
permissionStatus : String [statyczny] [tylko do odczytu]
Sprawdź, czy system otrzymał pozwolenie na dostęp do korzystania z kamery. | Camera | ||
position : String [tylko do odczytu]
Określa panel urządzenia, na którym znajduje się kamera. | Camera | ||
quality : int [tylko do odczytu]
Wymagany poziom jakości obrazu, zgodnie z intensywnością kompresji stosowanej do poszczególnych klatek wideo. | Camera | ||
width : int [tylko do odczytu]
Bieżąca szerokość przechwytywanego obrazu (w pikselach). | Camera |
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 | ||
Wypełnia tablicę bajtów przy użyciu prostokątnego obszaru danych pikseli. Zapisuje liczbę całkowitą bez znaku (32-bitową, niepomnożoną wartość piksela) dla każdego piksela w tablicy bajtów. | Camera | ||
Wypełnia wektor na podstawie prostokątnego obszaru pikseli. | Camera | ||
Wywołuje zdarzenie, tj. kieruje je do przepływu zdarzeń. | EventDispatcher | ||
Kopiuje ostatnią klatkę do bitmapy. | Camera | ||
[statyczny]
Zwraca odwołanie do obiektu Camera odpowiedzialnego za przechwytywanie wideo. | Camera | ||
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 kamery. | Camera | ||
Określa, które klatki wideo mają być transmitowane w całości (tzw. klatki podstawowe), a nie w postaci klatek interpolowanych za pomocą algorytmu do kompresji wideo. | Camera | ||
Określa, czy strumień danych wideo z kamery ma być kompresowany. | Camera | ||
Ustawia macierzysty tryb przechwytywania kamery, który jest najlepiej dostosowany do określonych wymagań. | Camera | ||
Określa intensywność ruchu niezbędną do wywołania zdarzenia. | Camera | ||
Ustawia dostępność właściwości dynamicznej używanej w pętlach. | Object | ||
Pozwala ustawić maksymalną szerokość pasma na sekundę lub wymaganą jakość wyjściowego obrazu wideo. | Camera | ||
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 |
Zdarzenie | Podsumowanie | Zdefiniowane przez | ||
---|---|---|---|---|
[zdarzenie broadcast] Wywoływane, gdy program Flash Player lub aplikacja środowiska wykonawczego AIR uzyskuje fokus w systemie operacyjnym i przechodzi w stan aktywny. | EventDispatcher | |||
Wywoływane, gdy aparat rozpoczyna lub kończy sesję. | Camera | |||
[zdarzenie broadcast] Wywoływane, gdy program Flash Player lub aplikacja AIR traci fokus w systemie operacyjnym i przechodzi w stan nieaktywny. | EventDispatcher | |||
Rozsyłane, gdy aplikacja zażąda pozwolenia na użycie kamery urządzenia. | Camera | |||
Wywoływane, gdy kamera zgłasza swój stan. | Camera | |||
Wywoływane bezpośrednio po przetworzeniu nowej klatki kamery przez kod podstawowy, gdy dane są dostępne do skopiowania. | Camera |
activityLevel | właściwość |
activityLevel:Number
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Intensywność ruchu wykrywanego przez kamerę. Wartości mieszczą się w przedziale od 0 (żaden ruch nie został wykryty) do 100 (wykryto dużą intensywność ruchu) Wartość tej właściwości jest pomocna przy określaniu, czy do metodysetMotionLevel()
należy przekazać ustawienie.
Jeśli kamera jest dostępna, ale nie była jeszcze używana, ponieważ nie wywołano metody Video.attachCamera()
, właściwość będzie miała wartość -1.
Jeśli strumieniowo przesyłane są jedynie nieskompresowane lokalne materiały wideo, ta właściwość będzie ustawiana tylko wtedy, gdy przypisano funkcję do obsługi zdarzeń. W innym wypadku pozostanie niezdefiniowana.
Implementacja
public function get activityLevel():Number
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
|
Powiązane elementy interfejsu API
bandwidth | właściwość |
bandwidth:int
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Maksymalna szerokość pasma bieżącego wyjściowego strumienia wideo (w bajtach). Wartość 0 oznacza, że źródło może korzystać z szerokości pasma w potrzebnym mu wymiarze w celu zachowania pożądanej jakości klatki.
Aby ustawić tę właściwość, należy skorzystać z metodysetQuality()
.
Implementacja
public function get bandwidth():int
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
|
Powiązane elementy interfejsu API
currentFPS | właściwość |
currentFPS:Number
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Szybkość przechwytywania danych przez kamerę (liczba klatek na sekundę). Właściwości nie można ustawić; można jednak skorzystać z metodysetMode()
, aby ustawić powiązaną właściwość — fps
— która określa maksymalną liczbę klatek na sekundę, z jaką kamera będzie przechwytywać dane.
Implementacja
public function get currentFPS():Number
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
|
Powiązane elementy interfejsu API
fps | właściwość |
fps:Number
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Maksymalna szybkość przechwytywania danych przez kamerę (liczba klatek na sekundę). Maksymalna do osiągnięcia szybkość zależy od możliwości kamery; ta liczba klatek na sekundę może nie zostać osiągnięta.
- Aby ustawić odpowiednią wartość tej właściwości, należy skorzystać z metody
setMode()
. - Aby określić szybkość aktualnie przechwytywanych przez kamerę danych, należy skorzystać z właściwości
currentFPS
.
Implementacja
public function get fps():Number
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
|
Powiązane elementy interfejsu API
height | właściwość |
height:int
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Bieżąca wysokość przechwytywanego obrazu (w pikselach). Aby ustawić wartość dla tej właściwości, należy skorzystać z metodysetMode()
.
Implementacja
public function get height():int
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
|
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 liczony od zera, który określa położenia kamery w tablicy Camera.names
zawierającej listę dostępnych kamer.
Implementacja
public function get index():int
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
|
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 Camera; w przeciwnym razie ma wartość false
.
Implementacja
public static function get isSupported():Boolean
keyFrameInterval | właściwość |
keyFrameInterval:int
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Liczba klatek wideo transmitowanych w całości (tzw. klatki podstawowe), a nie w postaci klatek interpolowanych za pomocą algorytmu do kompresji wideo. Wartością domyślna jest 15, co oznacza, że każda 15. klatka jest klatką podstawową. Wartość 1 oznacza, że wszystkie klatki są klatkami podstawowymi. Dopuszczalne wartości mieszczą się w przedziale od 1 do 300.
Implementacja
public function get keyFrameInterval():int
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
|
Powiązane elementy interfejsu API
loopback | właściwość |
loopback:Boolean
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Określa, czy lokalny obraz danych przechwytywanych przez kamerę ma być kompresowany i dekompresowany (true
), tak jak dzieje się to w przypadku transmisji na żywo za pomocą oprogramowania Flash Media Server, czy też ma nie być kompresowany (false
). Wartością domyślną jest false
.
Mimo, że skompresowany strumień jest użyteczny dla celów testowych takich, jak podglądanie ustawień jakości wideo, obarczony jest znaczącym kosztem przetwarzania Lokalny obraz jest kompresowany, edytowany do celów transmisji (podobnie jak w połączeniu z transmisją na żywo) i dekompresowany w celu lokalnego wyświetlania.
Aby ustawić tę wartość, należy skorzystać z metodyCamera.setLoopback()
. Aby ustawić stopień użytej kompresji, jeśli ta właściwość ma wartość true, należy skorzystać z metody Camera.setQuality()
.
Implementacja
public function get loopback():Boolean
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
|
Powiązane elementy interfejsu API
motionLevel | właściwość |
motionLevel:int
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Intensywność ruchu niezbędna do wywołania zdarzenia activity
. Dopuszczalne wartości mieszczą się w przedziale od 0 do 100. Wartością domyślną jest 50.
Wideo można wyświetlić bez względu na wartość właściwości motionLevel
. Aby znaleźć więcej informacji na ten temat, należy zapoznać się z metodą setMotionLevel()
Implementacja
public function get motionLevel():int
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
|
Powiązane elementy interfejsu API
motionTimeout | właściwość |
motionTimeout:int
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Liczba milisekund, które muszą upłynąć od momentu wyłączenia kamery po wykryciu ruchu do momentu wywołania zdarzenia activity
. Wartość domyślna to 2000 milisekund (2 sekundy).
Aby ustawić tę wartość, należy skorzystać z metody setMotionLevel()
.
Implementacja
public function get motionTimeout():int
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
|
Powiązane elementy interfejsu API
muted | właściwość |
muted:Boolean
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Wartość typu Boolean, która określa, czy użytkownik zablokował dostęp do kamery (true
), czy też zezwolił na ten dostęp (false
) w oknie dialogowym Prywatność programu Flash Player. Jeśli wartość ulegnie zmianie, wywołane zostanie zdarzenie status
.
Implementacja
public function get muted():Boolean
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
|
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 bieżącej kamery (zgodnie z danymi przekazanymi przez urządzenie).
Implementacja
public function get name():String
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
|
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ąca nazwy wszystkich dostępnych kamer. Uzyskanie dostępu do tej tablicy nie powoduje wyświetlenia okna dialogowego Prywatność programu Flash Player. Zawiera ona indeksy liczone od zera dla każdej kamery oraz liczbę kamer w systemie (przy użyciu właściwości names.length
).
Wywołanie właściwości names
wymaga rozległego sprawdzania urządzeń. W większości przypadków istnieje możliwość skorzystania z domyślnej kamery.
Implementacja
public static function get names():Array
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
|
Powiązane elementy interfejsu API
permissionStatus | właściwość |
position | właściwość |
position:String
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 3.0 |
Określa panel urządzenia, na którym znajduje się kamera.
Za pomocą właściwości position
można ustalić, czy kamera znajduje się na przednim czy na tylnym panelu urządzenia przenośnego. Poniższa funkcja sprawdza wszystkie dostępne kamery do momentu znalezienia kamery o żądanym położeniu. Jeśli żadna z kamer nie ma żądanego położenia, zwracana jest kamera domyślna.
function getCamera( position:String ):Camera { var camera:Camera; var cameraCount:uint = Camera.names.length; for ( var i:uint = 0; i < cameraCount; ++i ) { camera = Camera.getCamera( String(i) ); if ( camera.position == position ) return camera; } return Camera.getCamera();
W przypadku urządzeń przenośnych położenie kamery ma zazwyczaj wartość CameraPosition.FRONT
lub CameraPosition.BACK
. Jeśli nie można określić położenia kamery, zgłaszana jest wartość CameraPosition.UNKNOWN
. W przypadku platform (komputerów) stacjonarnych położenie ma zawsze wartość CameraPosition.UNKNOWN
.
Stałe dla wartości prawidłowych tej właściwości są zdefiniowane w klasie CameraPosition.
Implementacja
public function get position():String
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
|
Powiązane elementy interfejsu API
quality | właściwość |
quality:int
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Wymagany poziom jakości obrazu, zgodnie z intensywnością kompresji stosowanej do poszczególnych klatek wideo. Dopuszczalne wartości jakości mieszczą się w przedziale od 1 (najniższa jakość, najwyższy stopień kompresji) do 100 (najwyższa jakość, brak kompresji). Wartością domyślną jest 0, co oznacza, że jakość obrazu można zmieniać w zależności od potrzeb w celu uniknięcia przekroczenia szerokości pasma.
Aby ustawić tę właściwość, należy skorzystać z metodysetQuality()
.
Implementacja
public function get quality():int
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
|
Powiązane elementy interfejsu API
width | właściwość |
width:int
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Bieżąca szerokość przechwytywanego obrazu (w pikselach). Aby ustawić pożądaną wartość dla tej właściwości, należy skorzystać z metodysetMode()
.
Implementacja
public function get width():int
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
|
Powiązane elementy interfejsu API
copyToByteArray | () | metoda |
public function copyToByteArray(rect:Rectangle, destination:ByteArray):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11.4, AIR 3.4 |
Wypełnia tablicę bajtów na podstawie prostokątnego obszaru pikseli.
Zapisuje w tablicy bajtów liczbę całkowitą bez znaku (32-bitową wartość nieprzemnożoną pikseli) dla każdego piksela. Rozmiar tablicy jest zmieniany tak, aby zawierała liczbę bajtów wystarczającą do przechowywania danych wszystkich pikseli.
Parametry
rect:Rectangle — Obszar prostokątny w obecnym obiekcie BitmapData.
| |
destination:ByteArray — Obiekt ByteArray reprezentujący piksele w danym prostokącie.
|
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
| |
TypeError — Właściwość rect ma wartość null.
| |
TypeError — Właściwość destination ma wartość null.
|
Powiązane elementy interfejsu API
copyToVector | () | metoda |
public function copyToVector(rect:Rectangle, destination:Vector.<uint>):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11.4, AIR 3.4 |
Wypełnia wektor na podstawie prostokątnego obszaru pikseli.
Zapisuje w wektorze liczbę całkowitą bez znaku (32-bitową wartość nieprzemnożoną pikseli) dla każdego piksela. Rozmiar wektora jest zmieniany tak, aby zawierał liczbę pozycji wystarczającą do przechowywania danych wszystkich pikseli.
Parametry
rect:Rectangle — Obszar prostokątny w obecnym obiekcie BitmapData.
| |
destination:Vector.<uint> — Obiekt typu Vector.Obiekt <uint> reprezentujący piksele w danym prostokącie.
|
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
| |
TypeError — Właściwość rect ma wartość null.
| |
TypeError — Właściwość destination ma wartość null.
|
Powiązane elementy interfejsu API
drawToBitmapData | () | metoda |
public function drawToBitmapData(destination:BitmapData):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11.4, AIR 3.4 |
Kopiuje ostatnią klatkę do bitmapy.
Ta metoda kopiuje zawartość ostatniej klatki do obiektu BitmapData.
Parametry
destination:BitmapData — Obiekt wystąpienia klasy BitmapData, który powinien zawierać ostatnią klatkę.
|
Zgłasza
ArgumentError — Błąd kInvalidBitmapDataError, jeśli wartość destination jest zbyt mała.
|
Powiązane elementy interfejsu API
getCamera | () | metoda |
public static function getCamera(name:String = null):Camera
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Zwraca odwołanie do obiektu Camera odpowiedzialnego za przechwytywanie wideo. Aby rozpocząć przechwytywanie wideo, należy dołączyć obiekt Camera do obiektu Video (szczegóły można znaleźć w opisie metody Video.attachCamera()
). Aby rozpocząć transmisję wideo na serwer z oprogramowaniem Flash Media Server, należy wywołać metodę NetStream.attachCamera()
w celu dołączenia obiektu Camera do obiektu NetStream.
Wielokrotne wywołania metody getCamera()
odwołują się do tego samego sterownika kamery. Zatem, jeśli fragment kodu wygląda podobnie do tego firstCam:Camera = getCamera()
i secondCam:Camera = getCamera()
, wtedy obie kamery firstCam
i secondCam
odwołują się do tej samej domyślnej kamery użytkownika.
Na urządzeniach przenośnych wyposażonych w kamerę skierowaną do przodu i do tyłu można przechwytywać wideo tylko z jednej kamery naraz.
Na ogół nie należy przekazywać wartości do parametru name
; prościej użyć metody getCamera()
, aby zwrócić odwołanie do domyślnej kamery. Za pomocą panelu ustawień kamery (omówiony w dalszej części tej sekcji) użytkownik może określić domyślną kamerę, z której będzie korzystać.
Nie można użyć języka ActionScript, aby skonfigurować ustawienia zezwalania lub odmawiania dostępu do kamery, ale istnieje możliwość wyświetlenia okna dialogowego ustawień kamery w ustawieniach programu Adobe Flash Player, w którym użytkownik może ustalić uprawnienia do kamery. Jeśli plik SWF usiłuje za pomocą metody attachCamera()
dołączyć do obiektu Video lub NetStream kamerę zwróconą przez metodę getCamera()
, program Flash Player wyświetli okno dialogowe, które umożliwi użytkownikowi wybranie, czy zezwolić, czy odmówić dostępu do kamery. (Należy upewnić się, że rozmiar okna aplikacji ma wymiary przynajmniej 215 x 138 pikseli; jest to minimalny rozmiar wymagany przez program Flash Player w celu poprawnego wyświetlania okna dialogowego). Jeśli użytkownik odpowiada w oknie dialogowym ustawień kamery, program Flash Player zwraca informacje w zdarzeniu status
, które wskazuje odpowiedź użytkownika: Camera.Muted
oznacza, że użytkownik odmówił dostępu do kamery; Camera.Unmuted
oznacza, że użytkownik zezwolił na dostęp do kamery. Aby określić, czy użytkownik odmówił, czy zezwolił na dostęp do kamery, nie obsługując zdarzenia status
, należy skorzystać z właściwości muted
.
W programie Flash Player użytkownik może określić stałe ustawienia prywatności dla konkretnej domeny, klikając prawym klawiszem myszy (system Windows oraz Linux) lub klikając klawisz Control (komputery Macintosh) podczas odtwarzania pliku SWF, wybierając Ustawienia, otwierając okno dialogowe Prywatność i wybierając opcję Zapamiętaj. Jeśli użytkownik wybrał opcję Zapamiętaj, program Flash Player nie będzie więcej pytał użytkownika, czy zezwolić, czy odmówić plikom SWF z tej domeny dostępu do kamery.
Uwaga: metoda·attachCamera()
nie wywoła okna dialogowego w celu przyznania lub odmowy dostępu do kamery, jeśli użytkownik odmówił dostępu wybierając opcję Pamiętaj w oknie dialogowym ustawień programu Flash Player. W tym przypadku można poprosić użytkownika o zmianę ustawienia zezwolenia lub odmowy, wyświetlając panel ustawień prywatności programu Flash Player za pomocą metody Security.showSettings(SecurityPanel.PRIVACY)
.
Jeśli metoda getCamera()
zwróci wartość null
, oznacza to, że z kamery korzysta inna aplikacja lub nie ma żadnych kamer zainstalowanych w systemie. Aby określić, czy w systemie są zainstalowane kamery, należy skorzystać z właściwości names.length
. Aby wyświetlić panel ustawień kamery Flash Player, który umożliwia użytkownikowi wybranie kamery, do której będzie się odwoływać metoda getCamera()
, należy skorzystać z metody Security.showSettings(SecurityPanel.CAMERA)
.
Skanowanie sprzętu w celu wyszukania kamer jest czasochłonne. Jeśli środowisko wykonawcze znajdzie przynajmniej jedną kamerę, sprzęt nie będzie ponownie skanowany w celu określenia czasu życia instancji odtwarzacza. Jednak jeśli program nie znajdzie żadnej kamery, będzie przeprowadzał skanowanie przy każdym wywołaniu metody getCamera
. Jest to pomocne, jeśli kamera podłączona, ale wyłączona; jeśli plik SWF udostępnia przycisk Spróbuj ponownie, który wywołuje getCamera
, program Flash Player znajdzie kamerę bez konieczności ponownego uruchamiania pliku SWF.
Parametry
name:String (default = null ) — Określa, którą kamerę należy pobrać z tablicy zwróconej przez właściwość names . Dla większości aplikacji należy pobrać domyślną kamerę, pomijając ten parametr. Aby określić wartość parametru, należy użyć pozycji indeksu, zapisanej jako ciąg znaków, z tablicy Camera.names (tablica indeksowana od zera). Na przykład, aby wskazać trzecią kamerę w tablicy, należy skorzystać z następującego zapisu: Camera.getCamera("2") .
|
Camera — Jeśli parametr name nie został określony, metoda zwróci odwołanie do domyślnej kamery lub jeśli jest w danej chwili używana przez inna aplikację, do pierwszej dostępnej kamery. (Jeśli zainstalowano więcej niż jedną kamerę, użytkownik może określić domyślną kamerę w panelu Ustawienia kamery programu Flash Player). Jeśli żadna kamera nie jest dostępna, ani zainstalowana, metoda zwraca wartość null .
|
Zdarzenia
status: — Wywoływane, gdy kamera zgłasza swój stan. Przed uzyskaniem dostępu do kamery program Flash Player wyświetla okno dialogowe, dzięki któremu użytkownik może uzyskać dostęp do zawartości kamery lub zrezygnować z używania kamery. Jeśli właściwość code ma wartość "Camera.Muted" , oznacza to, że użytkownik odmówił udzielenia dostępu do kamery plikowi SWF. Jeśli właściwość code ma wartość Camera.Unmuted , oznacza to, że użytkownik zezwolił plikowi SWF na dostęp do kamery.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
Metoda Camera.getCamera()
zwraca odwołanie do obiektu kamery lub zwraca wartość null, jeśli żadna kamera nie jest dostępna, ani zainstalowana. Instrukcja „if” sprawdza, czy odnaleziono kamerę i czy użytkownik zezwolił na dostęp do niej. Jeśli użytkownik odmówił dostępu, właściwość muted
jest ustawiana na wartość true
.
Zazwyczaj, jeśli wywoływana jest metoda attachCamera()
, pojawia się okno dialogowe i wyświetlane jest pytanie, czy zezwolić lub odmówić na dostęp do kamery przez program Flash Player. Jeśli jednak użytkownik odmówił dostępu i zaznaczył opcję Remember
, okno dialogowe nie pojawi się i nic nie zostanie wyświetlone. Aby upewnić się, że użytkownik ma możliwość zezwolenia na dostęp do kamery, pole tekstowe myTextField
informuje użytkownika, że należy kliknąć pole tekstowe, aby wywołać okno dialogowe ustawień programu Flash Player.
Metoda clickHandler()
wywołuje metodę Security.showSettings()
, która wyświetla panel PRIVACY
okna dialogowego Ustawienia. Jeśli użytkownik zezwala na dostęp, wywoływane jest zdarzenie StatusEvent.STATUS
i wartość właściwości code
zdarzenia jest ustawiana na Camera.Unmuted
. (Właściwość mute
obiektu kamery jest również ustawiana na false
).
Metoda statusHandler()
, dodana w celu nasłuchiwania zmian stanu ustawień użytkownika, wywołuje metodęconnectCamera()
, jeśli użytkownik zezwolił na dostęp. Metoda connectCamera()
tworzy obiekt wideo z szerokością i wysokością przechwyconego strumienia. Aby wyświetlić wideo przechwycone z kamery, do obiektu wideo dołączane jest odwołanie do strumienia wideo i obiekt dodawany jest do lity wyświetlania.
Obiekt Timer jest również uruchamiany. Każdej sekundy wywoływane jest zdarzenie czasomierza obiektu Timer oraz metoda timerHandler()
. Metoda timerHandler()
jest wyświetlana, a następnie uaktualnia ona wiele właściwości obiektu Camera.
Uwaga: w tym przykładzie jedyną właściwością, która ulega zmianie jest właściwość currentFPS
.
package { import flash.display.Sprite; import flash.media.Camera; import flash.media.Video; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.utils.Timer; import flash.events.TimerEvent; import flash.events.StatusEvent; import flash.events.MouseEvent; import flash.system.SecurityPanel; import flash.system.Security; public class Camera_getCameraExample extends Sprite { private var myTextField:TextField; private var cam:Camera; private var t:Timer = new Timer(1000); public function Camera_getCameraExample() { myTextField = new TextField(); myTextField.x = 10; myTextField.y = 10; myTextField.background = true; myTextField.selectable = false; myTextField.autoSize = TextFieldAutoSize.LEFT; if (Camera.isSupported) { cam = Camera.getCamera(); if (!cam) { myTextField.text = "No camera is installed."; } else if (cam.muted) { myTextField.text = "To enable the use of the camera,\n" + "please click on this text field.\n" + "When the Flash Player Settings dialog appears,\n" + "make sure to select the Allow radio button\n" + "to grant access to your camera."; myTextField.addEventListener(MouseEvent.CLICK, clickHandler); }else { myTextField.text = "Connecting"; connectCamera(); } addChild(myTextField); t.addEventListener(TimerEvent.TIMER, timerHandler); }else { myTextField.text = "The Camera class is not supported on this device."; } } private function clickHandler(e:MouseEvent):void { Security.showSettings(SecurityPanel.PRIVACY); cam.addEventListener(StatusEvent.STATUS, statusHandler); myTextField.removeEventListener(MouseEvent.CLICK, clickHandler); } private function statusHandler(event:StatusEvent):void { if (event.code == "Camera.Unmuted") { connectCamera(); cam.removeEventListener(StatusEvent.STATUS, statusHandler); } } private function connectCamera():void { var vid:Video = new Video(cam.width, cam.height); vid.x = 10; vid.y = 10; vid.attachCamera(cam); addChild(vid); t.start(); } private function timerHandler(event:TimerEvent):void { myTextField.y = cam.height + 20; myTextField.text = ""; myTextField.appendText("bandwidth: " + cam.bandwidth + "\n"); myTextField.appendText("currentFPS: " + Math.round(cam.currentFPS) + "\n"); myTextField.appendText("fps: " + cam.fps + "\n"); myTextField.appendText("keyFrameInterval: " + cam.keyFrameInterval + "\n"); } } }
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 kamery.
Zdarzenia
PermissionStatus: — Rozsyłane, gdy użytkownik udzieli / nie udzieli zażądanego pozwolenia.
|
setKeyFrameInterval | () | metoda |
public function setKeyFrameInterval(keyFrameInterval:int):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Określa, które klatki wideo mają być transmitowane w całości (tzw. klatki podstawowe), a nie w postaci klatek interpolowanych za pomocą algorytmu do kompresji wideo. Tę metodę można stosować tylko, jeśli wideo transmitowane jest za pomocą oprogramowania Flash Media Server.
Algorytm do kompresji wideo Flash kompresuje obraz wideo, transmitując jedynie te fragmenty, które uległy zmianom w porównaniu z ostatnią klatką wideo; te fragmenty są rozpatrywane jako klatki interpolowane. Klatki wideo mogą być interpolowane zgodnie z zawartością poprzedniej klatki. Jednak klatka podstawowa jest klatką wideo, która jest kompletna; nie jest interpolowana na podstawie wcześniejszych klatek.
Podejmując decyzję o wyborze wartości dla parametru keyFrameInterval
, należy brać pod uwagę zarówno przepustowość, jak i możliwość odtwarzania wideo przez użytkowników. Na przykład wyższa wartość właściwości keyFrameInterval
(przesyłanie klatek kluczowych z mniejszą częstotliwością) zmniejsza zajęte pasmo (wymaganą przepustowość). Może to jednak zwiększyć ilość czasu potrzebnego do ustawienia głowicy odtwarzania w konkretnym punkcie obrazu wideo; dla wcześniejszych klatek wideo mogła istnieć konieczność ich interpolacji, zanim odtwarzanie wideo zostanie wznowione.
Odpowiednio, kiedy wartość określana właściwości keyFrameInterval
jest mniejsza (przesyłanie klatek podstawowych z wyższą częstotliwością), wtedy użycie dostępności pasma wzrasta, ponieważ pełne klatki wideo są częściej transmitowane, ale może to zmniejszyć ilość czasu potrzebnego na wyszukanie konkretnej klatki wideo w nagranym pliku.
Parametry
keyFrameInterval:int — Wartość określa, które klatki wideo mają być transmitowane w całości (jako klatki podstawowe), a nie w postaci klatek interpolowanych za pomocą algorytmu do kompresji wideo. Wartość 1 oznacza, że wszystkie klatki są klatkami podstawowymi, wartość 3 oznacza, że co trzecia klatka jest klatką podstawową itd. Dopuszczalne wartości mieszczą się w przedziale od 1 do 48.
|
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
|
Powiązane elementy interfejsu API
setLoopback | () | metoda |
public function setLoopback(compress:Boolean = false):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Określa, czy strumień danych wideo z kamery ma być kompresowany. Tę metodę można stosować tylko, jeśli wideo transmitowane jest za pomocą serwera z oprogramowaniem Flash Media Server; ustawienie parametru compress
na wartość true
umożliwi lepsze zaprezentowanie sposobu, w jaki wideo zostanie wyświetlone użytkownikom, kiedy będą oglądać go w czasie rzeczywistym.
Mimo, że skompresowany strumień jest użyteczny dla celów testowych takich, jak podglądanie ustawień jakości wideo, obarczony jest znaczącym kosztem przetwarzania, ponieważ lokalny obraz danych nie jest zwyczajnie kompresowany; jest kompresowany, edytowany do celów transmisji (podobnie jak w połączeniu z transmisją na żywo) i dekompresowany do lokalnego przeglądania.
Aby skonfigurować stopień kompresji użytej w czasie ustawiania parametru compress
na wartość true
, należy skorzystać z metody Camera.setQuality()
.
Parametry
compress:Boolean (default = false ) — Określa, czy dla lokalnego obrazu danych pobieranych przez kamerę należy stosować skompresowany (wartość true ), czy nieskompresowany strumień wideo (wartość false ).
|
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
|
Powiązane elementy interfejsu API
setMode | () | metoda |
public function setMode(width:int, height:int, fps:Number, favorArea:Boolean = true):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Ustawia macierzysty tryb przechwytywania kamery, który jest najlepiej dostosowany do określonych wymagań. Jeśli kamera nie ma trybu natywnego, który odpowiadałby wszystkim przekazanym parametrom, środowisko wykonawcze wybiera tryb przechwytywania, który jest najbardziej zgodny z żądanym trybem. Takie przekształcenie może wpłynąć na obcinanie obrazu i pomijanie klatek.
Domyślnie środowisko wykonawcze zmniejsza liczbę klatek w razie potrzeby, aby zachować rozdzielczość obrazu. Aby zminimalizować liczbę pominiętych klatek, nawet jeśli oznaczałoby to zmniejszenie rozdzielczość obrazu, należy przekazać do parametru favorArea
wartość false
.
Wybierając tryb natywny, środowisko wykonawcze usiłuje zachować żądany współczynnik kształtu obrazu zawsze, kiedy to możliwe. Jeśli na przykład zostanie wywołane polecenie mojaKamera.setMode(400, 400, 30)
, a największą dostępną rozdzielczością obrazu kamery jest 320 x 288, środowisko wykonawcze ustawi wartość 288 zarówno dla wysokości, jak i szerokości. Ustawiając te właściwości na taką samą wartość, środowisko wykonawcze zachowa żądany współczynnik kształtu obrazu równy 1:1.
Aby określić wartości przypisane do tych właściwości, po wybraniu przez środowisko wykonawcze trybu, który najbardziej odpowiada żądanym wartościom, należy użyć właściwości width
, height
oraz fps
.
Korzystając z oprogramowania Flash Media Server, można także przechwytywać pojedyncze klatki lub tworzyć zdjęcia poklatkowe. Aby uzyskać·więcej informacji na ten temat, należy zapoznać się z metodą NetStream.attachCamera()
.
Parametry
width:int — Wymagana szerokość przechwytywanego obrazu (w pikselach). Wartością domyślną jest 160.
| |
height:int — Wymagana wysokość przechwytywanego obrazu (w pikselach). Wartością domyślną jest 120.
| |
fps:Number — Wymagana szybkość przechwytywania danych przez kamerę (liczba klatek na sekundę). Wartością domyślną jest 15.
| |
favorArea:Boolean (default = true ) — Określa, czy należy modyfikować szerokość, wysokość i szybkość odtwarzania, jeśli kamera nie posiada macierzystego trybu, który jest dostosowany do określonych wymagań. Wartością domyślną jest true , co oznacza, że zachowanie wymiarów przechwytywania jest korzystne; za pomocą tego parametru wybierany jest tryb, który najwierniej oddaje wartości width i height , nawet jeśli wpływa to niekorzystnie na jakość przez zmniejszenie częstotliwości·odtwarzania. Aby do maksimum zwiększyć prędkość odtwarzania kosztem rozdzielczości obrazu kamery, należy przekazać w parametrze favorArea wartość false .
|
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
Stół montażowy został ustawiony, dlatego nie można go skalować. Metoda Camera.getCamera()
zwraca odniesienie do obiektu kamery lub zwraca wartość null, jeśli żadna kamera nie jest dostępna, ani zainstalowana. Jeśli kamera istnieje wywoływana jest metoda connectCamera()
. Metoda connectCamera()
tworzy obiekt wideo. Aby wyświetlić wideo przechwycone z kamery, do obiektu wideo dołączane jest odwołanie do strumienia wideo i obiekt dodawany jest do lity wyświetlania. Detektor zdarzeń jest ustawiany na wartość MouseEvent.CLICK
. Kliknięcie na stół montażowy powoduje wywołanie metody clickHandler()
. W metodzie sprawdzana jest szerokość przechwytywanego obrazu wideo i ustawiana jest szerokość, wysokość i częstotliwość liczby klatek trybu przechwytywania kamery. Aby ustawienia odniosły efekt, należy usunąć obiekt wideo i ponownie go utworzyć. Szerokość i wysokość obrazu wideo należy również dostosować do szerokości i wysokości obiektu kamery.
package { import flash.display.Sprite; import flash.media.Camera; import flash.media.Video; import flash.events.MouseEvent; import flash.display.StageScaleMode; public class Camera_setModeExample extends Sprite { private var cam:Camera; private var vid:Video; public function Camera_setModeExample() { stage.scaleMode = StageScaleMode.NO_SCALE; cam = Camera.getCamera(); if (!cam) { trace("No camera is installed."); }else { connectCamera(); } } private function connectCamera():void { vid = new Video(); vid.width = cam.width; vid.height = cam.height; vid.attachCamera(cam); addChild(vid); stage.addEventListener(MouseEvent.CLICK, clickHandler); } private function clickHandler(e:MouseEvent):void { switch (cam.width) { case 160: cam.setMode(320, 240, 10); break; case 320: cam.setMode(640, 480, 5); break; default: cam.setMode(160, 120, 15); break; } removeChild(vid); connectCamera(); } } }
setMotionLevel | () | metoda |
public function setMotionLevel(motionLevel:int, timeout:int = 2000):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Określa intensywność ruchu niezbędną do wywołania zdarzeniaactivity
. Opcjonalnie ustawia czas bezczynności (w milisekundach), jaki musi upłynąć, zanim środowisko wykonawcze uwzględni zatrzymanie ruchu i wywoła zdarzenie.
Uwaga: wideo może być wyświetlane bez względu na wartość parametru motionLevel
. Parametr określa jedynie kiedy i jakich okolicznościach wywoływane jest zdarzenie — nie zaś, czy obraz wideo jest w tej chwili przechwytywany lub wyświetlany.
Aby uniemożliwić wykrywanie ruchu przez kamerę, należy przekazać wartość 100 w parametrze motionLevel
; zdarzenie activity
nigdy nie zostanie wywołane. (Prawdopodobnie wartość ta będzie używana jedynie w celach testowych — na przykład aby tymczasowo wyłączyć moduły obsługi, które są zazwyczaj uruchamiane w momencie wywoływania zdarzenia).
Aby określić intensywność ruchu, który w danym momencie wykrywa kamera, należy skorzystać z właściwości activityLevel
. Wartości czułości na ruch bezpośrednio odpowiadają wartościom aktywności. Całkowity brak ruchu oznacza wartość aktywności równą 0. Ciągły ruch to aktywność o wartości 100. Wartość aktywności jest mniejsza od wartości czułości na ruch, kiedy kamera się nie porusza; jeśli kamera jest w ruchu wartości aktywności często przewyższa wartość czułości na ruch.
Metoda ma podobne przeznaczenie, jak metoda Microphone.setSilenceLevel()
; 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
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. - 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.
Parametry
motionLevel:int — Określa intensywność ruchu niezbędną do wywołania zdarzenia activity . Dopuszczalne wartości mieszczą się w przedziale od 0 do 100. Wartością domyślną jest 50.
| |
timeout:int (default = 2000 ) — Określa czas bezczynności (w milisekundach), jaki musi upłynąć, zanim środowisko wykonawcze uwzględni zatrzymanie działania i wywoła zdarzenie activity . Wartość domyślna to 2000 milisekund (2 sekundy).
|
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
Metoda Camera.getCamera()
zwraca odniesienie do obiektu kamery lub zwraca wartość null, jeśli żadna kamera nie jest dostępna ani zainstalowana. W instrukcji „if” sprawdzana jest dostępność kamery i jeśli jest ona dostępna, wywoływana jest metoda connectCamera()
. Metoda connectCamera()
tworzy obiekt wideo z szerokością i wysokością przechwyconego strumienia. Aby wyświetlić wideo przechwycone z kamery, do obiektu wideo dołączane jest odniesienie do strumienia wideo i obiekt dodawany jest do lity wyświetlania. Zazwyczaj, jeśli wywoływana jest metoda attachCamera()
, pojawia się okno dialogowe i wyświetlane jest pytanie, czy zezwolić lub odmówić na dostęp do kamery przez program Flash Player. Jeśli jednak użytkownik odmówił dostępu i zaznaczył opcję Remember
, okno dialogowe nie pojawi się i nic nie zostanie wyświetlone. Aby upewnić się, że użytkownik ma możliwość zezwolenia na dostęp do kamery, należy skorzystać z metody system.Security.showSettings()
w celu wywołania okna dialogowego ustawień programu Flash Player.
Zanim wywoływane zostanie zdarzenie aktywności metoda setMotionLevel()
ustawia poziom aktywności (intensywności ruchu) na wartość pięć, aby ruch był minimalny. Czas, pomiędzy zatrzymaniem wykrywania ruchu w kamerze, a wywołaniem zdarzenia aktywności, jest ustawiony na 1 sekundę (1000 milisekund). Jeśli brak aktywności po upłynięciu sekundy lub poziom aktywności osiągnie wartość pięć, wywoływane jest zdarzenie ActivityEvent.ACTIVITY
oraz metoda activityHandler()
. Jeśli zdarzenie zostało wywołane ze względu na poziom aktywności, właściwość activating
jest ustawiana na wartość true
i uruchamiany jest obiekt Timer. Każdej sekundy wywoływane jest zdarzenie czasomierza obiektu Timer oraz metoda timerHandler()
, która wyświetla bieżący poziom aktywności (Mimo, że poziom piąty lub wyższy powoduje uruchomienie czasomierza, wyświetlany bieżący poziom aktywności może być mniejszą liczbą).
package { import flash.display.Sprite; import flash.media.Camera; import flash.media.Video; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.utils.Timer; import flash.events.TimerEvent; import flash.events.ActivityEvent; public class Camera_setMotionLevelExample extends Sprite { private var myTextField:TextField; private var cam:Camera; private var t:Timer = new Timer(1000); public function Camera_setMotionLevelExample() { myTextField = new TextField(); myTextField.background = true; myTextField.selectable = false; myTextField.autoSize = TextFieldAutoSize.LEFT; cam = Camera.getCamera(); if (!cam) { myTextField.text = "No camera is installed."; }else { myTextField.text = "Waiting to connect."; connectCamera(); } addChild(myTextField); t.addEventListener(TimerEvent.TIMER, timerHandler); } private function connectCamera():void { var vid:Video = new Video(cam.width, cam.height); vid.x = 10; vid.y = 10; vid.attachCamera(cam); addChild(vid); cam.setMotionLevel(5, 1000); cam.addEventListener(ActivityEvent.ACTIVITY, activityHandler); } private function activityHandler(e:ActivityEvent):void { if (e.activating == true) { t.start(); } else { myTextField.text = "Everything is quiet."; t.stop(); } } private function timerHandler(event:TimerEvent):void { myTextField.x = 10; myTextField.y = cam.height + 20; myTextField.text = "There is some activity. Level: " + cam.activityLevel; } } }
setQuality | () | metoda |
public function setQuality(bandwidth:int, quality:int):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Pozwala ustawić maksymalną szerokość pasma na sekundę lub wymaganą jakość wyjściowego obrazu wideo. Tę metodę można stosować tylko, jeśli wideo transmitowane jest za pomocą serwera z oprogramowaniem Flash Media Server.
Za pomocą tej metody można określić, który element wyjściowego obrazu wideo jest ważniejszy dla aplikacji — wykorzystanie przepustowości czy jakość obrazu.
- Aby wskazać, że wykorzystanie przepustowości jest ważniejsze, należy przekazać wartość dla parametru
bandwidth
i wartość 0 dla parametruquality
. Środowisko wykonawcze transmituje wideo o najwyższej jakości dostępnej dla określonej przepustowości. W razie potrzeby środowisko wykonawcze obniża jakość obrazu, aby uniknąć przekroczenia określonej przepustowości. Na ogół wzrost intensywności ruchu obniża jakość obrazu. - Aby wskazać, że jakość jest ważniejsza, należy przekazać do parametru
bandwidth
wartość 0 i wartość liczbową do parametruquality
. Środowisko wykonawcze korzysta z przepustowości wymaganej do zachowania określonej jakości obrazu. W razie potrzeby środowisko wykonawcze obniża liczbę klatek na sekundę, aby zachować jakość obrazu. Na ogół wzrost intensywności ruchu powoduje zwiększenie szerokości pasma. - Aby wskazać, że szerokość pasma i jakość są równie ważne, należy przekazać wartość liczbową do obu parametrów. Środowisko wykonawcze transmituje wideo o ustalonej jakości, która nie powoduje przekroczenia określonej przepustowości. W razie potrzeby środowisko wykonawcze obniża liczbę klatek na sekundę, aby zachować jakość obrazu, nie przekraczając określonej przepustowości.
Parametry
bandwidth:int — Określa maksymalną szerokość pasma, z którego może korzystać bieżący wyjściowy strumień wideo (w bajtach na sekundę). Aby dla obrazu wideo określić możliwość korzystania z przepustowości w wymiarze potrzebnym do zachowania wartości parametru quality , należy do parametru bandwidth przekazać wartość 0. Wartością domyślną jest 16384.
| |
quality:int — Liczba całkowita określająca wymaganą jakość obrazu, zgodnie z intensywnością kompresji stosowanej do poszczególnych klatek wideo. Dopuszczalne wartości mieszczą się w przedziale od 1 (najniższa jakość, najwyższy stopień kompresji) do 100 (najwyższa jakość, brak kompresji). Aby określić, że jakość obrazu można zmieniać w zależności od potrzeb (w celu uniknięcia przekroczenia szerokości pasma), należy do parametru quality przekazać wartość 0.
|
Zgłasza
PermissionError — Ta aplikacja nie ma pozwolenia na korzystanie z kamery.
|
Powiązane elementy interfejsu API
activity | Zdarzenie |
flash.events.ActivityEvent
właściwość ActivityEvent.type =
flash.events.ActivityEvent.ACTIVITY
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Dysponowana, gdy aparat rozpoczyna lub kończy sesję. Wywołanie metody Camera.setMotionLevel()
pozwala określić intensywność ruchu wymaganą do wywołania zdarzenia activity
z właściwością activating
o wartości true
lub czas bezczynności jaki musi upłynąć, zanim wywołane zostanie zdarzenie activity
dla, której właściwość activating
będzie miała wartość false
.
ActivityEvent.ACTIVITY
definiuje wartość właściwości type
obiektu zdarzenia activity
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
activating | true , jeśli urządzenie jest w stanie uaktywniania, albo false , jeśli jest w stanie dezaktywowania. |
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
currentTarget | Obiekt przetwarzający aktywnie obiekt Event za pomocą detektora zdarzeń. |
target | Obiekt rozpoczynający sesję, na przykład Camera lub Microphone. |
permissionStatus | Zdarzenie |
flash.events.PermissionEvent
właściwość PermissionEvent.type =
flash.events.PermissionEvent.PERMISSION_STATUS
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 24.0 |
Rozsyłane, gdy aplikacja zażąda pozwolenia na użycie kamery urządzenia. Sprawdź wartość właściwości status
, aby zobaczyć, czy pozwolenie zostało udzielone czy nie.
Powiązane elementy interfejsu API
status | Zdarzenie |
flash.events.StatusEvent
właściwość StatusEvent.type =
flash.events.StatusEvent.STATUS
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR (unsupported) |
Wywoływane, gdy aparat zgłasza swój stan. Przed uzyskaniem dostępu do kamery środowisko wykonawcze wyświetla okno dialogowe, dzięki któremu użytkownik może uzyskać dostęp do zawartości kamery lub zrezygnować z używania kamery. Jeśli właściwość code
ma wartość "Camera.muted"
, oznacza to, że użytkownik odmówił udzielenia dostępu do kamery dla pliku SWF. Jeśli właściwość code
ma wartość "Camera.Unmuted"
, oznacza to, że użytkownik zezwolił plikowi SWF na dostęp do kamery.
Uwaga: To zdarzenie nie jest wywoływane na platformie AIR. Jest ono używane tylko w programie Flash Player.
Definiuje wartość właściwościtype
obiektu zdarzenia status
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
code | Opis stanu obiektu. |
currentTarget | Obiekt przetwarzający aktywnie obiekt Event za pomocą detektora zdarzeń. |
level | Kategoria komunikatu, np. "status" , "warning" lub "error" . |
target | Obiekt informujący o swoim stanie. |
Powiązane elementy interfejsu API
videoFrame | Zdarzenie |
flash.events.Event
właściwość Event.type =
flash.events.Event.VIDEO_FRAME
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11.4, AIR 3.4 |
Wywoływane bezpośrednio po przetworzeniu nowej klatki kamery przez kod podstawowy, gdy dane są dostępne do skopiowania.
StałaEvent.VIDEO_FRAME
definiuje wartość właściwości type
obiektu zdarzenia videoFrame
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
target | Obiekt Camera, który wywołał to zdarzenie. |
Powiązane elementy interfejsu API
activity
jest wywoływane na początku i na końcu (jeśli istnieje) sesji i jest przechwytywane przez metodę activityHandler()
, która wypisuje informacje o zdarzeniu.
Uwaga: Aby ten przykład zadziałał prawidłowo, należy podłączyć kamerę do komputera.
package { import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.*; import flash.media.Camera; import flash.media.Video; public class CameraExample extends Sprite { private var video:Video; public function CameraExample() { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; var camera:Camera = Camera.getCamera(); if (camera != null) { camera.addEventListener(ActivityEvent.ACTIVITY, activityHandler); video = new Video(camera.width * 2, camera.height * 2); video.attachCamera(camera); addChild(video); } else { trace("You need a camera."); } } private function activityHandler(event:ActivityEvent):void { trace("activityHandler: " + event); } } }
Tue Jun 12 2018, 12:06 PM Z