Пакетflash.media
Классpublic final class Camera
НаследованиеCamera Inheritance EventDispatcher Inheritance Object

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Используйте класс Camera, чтобы записывать видео с камеры, подключенной к компьютеру, на котором работает проигрыватель Flash Player. Используйте класс Video для локального отслеживания видеоданных. Используйте классы NetConnection и NetStream для передачи видеоданных на сервер Flash Media Server. Flash Media Server может передавать видео другим серверам и транслировать его на другие клиентские компьютеры, на которых работает Flash Player.

Сведения о записи звука см. в описании класса Microphone.

Важно! Проигрыватель Flash Player показывает диалоговое окно "Конфиденциальность", в котором пользователь может предоставить или запретить доступ к камере. Убедитесь в том, что размеры окна приложения составляют не менее 215 х 138 пикселов. Это минимальный размер, необходимый для отображения диалогового окна.

Чтобы создать объект Camera или сослаться на него, используйте метод getCamera().

Посмотреть примеры

См. также

flash.media.Microphone


Общедоступные свойства
 СвойствоОпределено
  activityLevel : Number
[только для чтения] Порог интенсивности движения, определяемой камерой.
Camera
  bandwidth : int
[только для чтения] Максимальная пропускная способность в байтах, доступная для текущего исходящего видеоканала.
Camera
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
  currentFPS : Number
[только для чтения] Частота, с которой камера записывает данные (в кадрах в секунду).
Camera
  fps : Number
[только для чтения] Максимальная частота, с которой камера может записывать данные (в кадрах в секунду).
Camera
  height : int
[только для чтения] Текущая высота записи в пикселах.
Camera
  index : int
[только для чтения] Целое число, отсчитываемое от нуля, которым задается индекс камеры согласно содержимому массива, возвращаемого свойством "имена".
Camera
  keyFrameInterval : int
[только для чтения] Номер видеокадра, который передается целиком (так называемый ключевой кадр), а не подвергается интерполяции по алгоритму сжатия видео.
Camera
  loopback : Boolean
[только для чтения] Определяет режим локального представления данных, записываемых камерой: подвергается сжатию и распаковке, как при прямой передаче с помощью Flash Media Server (true), или не подвергается сжатию (false).
Camera
  motionLevel : int
[только для чтения] Задает количество движения, необходимое для отправки события activity.
Camera
  motionTimeout : int
[только для чтения] Число миллисекунд с момента, когда камера прекратила распознавать движение, до момента передачи события Activity.
Camera
  muted : Boolean
[только для чтения] Логическое значение, показывающее, что пользователь запретил (true), или разрешил (false) доступ к камере в диалоговом окне "Конфиденциальность" проигрывателя Flash Player.
Camera
  name : String
[только для чтения] Имя текущей камеры, возвращенное самой камерой.
Camera
  names : Array
[статические] [только для чтения] Массив строк, отражающих имена всех доступных камер, без вывода диалогового окна "Конфиденциальность" проигрывателя Flash Player.
Camera
 Inheritedprototype : Object
[статические] Ссылка на модель объекта класса или функции.
Object
  quality : int
[только для чтения] Требуемый уровень качества изображения, который определяется степенью сжатия, применяемого к каждому кадру видео.
Camera
  width : int
[только для чтения] Текущая ширина записи, в пикселах.
Camera
Общедоступные методы
 МетодОпределено
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Регистрирует объект прослушивателя события в объекте EventDispatcher, в результате чего прослушиватель будет получать уведомления о событиях.
EventDispatcher
 Inherited
Передает событие в поток событий.
EventDispatcher
  
getCamera(name:String = null):Camera
[статические] Возвращает ссылку на объект Camera для записи видео.
Camera
 Inherited
Проверяет наличие у объекта EventDispatcher прослушивателей событий, которые зарегистрированы для получения уведомлений о событиях определенного типа.
EventDispatcher
 Inherited
Показывает, определено ли заданное свойство для объекта.
Object
 Inherited
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
 Inherited
Показывает наличие заданного свойства и его перечисляемость.
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Удаляет прослушиватель из объекта EventDispatcher.
EventDispatcher
  
setKeyFrameInterval(keyFrameInterval:int):void
Определяет, какие кадры видео передаются целиком (так называемые ключевые кадры), а не подвергаются интерполяции по алгоритму сжатия видео.
Camera
  
setLoopback(compress:Boolean = false):void
Определяет, должен ли использоваться сжатый видеопоток для локального представления камеры.
Camera
  
setMode(width:int, height:int, fps:Number, favorArea:Boolean = true):void
Задает для камеры собственный режим записи, наилучшим образом удовлетворяющий заданным требованиям.
Camera
  
setMotionLevel(motionLevel:int, timeout:int = 2000):void
Задает количество движения, необходимое для передачи события Activity.
Camera
 Inherited
Задает доступность динамического свойства для операций цикла.
Object
  
setQuality(bandwidth:int, quality:int):void
Задает максимальную пропускную способность в секунду или требуемое качество картинки для текущего исходящего видеоканала.
Camera
 Inherited
Возвращает строковое представление заданного объекта.
Object
 Inherited
Возвращает элементарное значение заданного объекта.
Object
 Inherited
Проверяет, зарегистрирован ли прослушиватель событий в объекте EventDispatcher или в любом из его предков для получения уведомлений о событиях определенного типа.
EventDispatcher
События
 Событие Сводка Определено
 Inherited[многоадресное событие] Отправляется, когда проигрыватель Flash Player перемещается в фокус операционной системы и становится активным.EventDispatcher
  Отправляется, когда камера начинает или заканчивает сеанс.Camera
 Inherited[многоадресное событие] Отправляется, когда проигрыватель Flash Player покидает фокус операционной системы и становится неактивным.EventDispatcher
  Отправляется, когда камера сообщает о своем состоянии.Camera
Сведения о свойстве
activityLevelсвойство
activityLevel:Number  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Порог интенсивности движения, определяемой камерой. Допускаются значения от 0 (движение не регистрируется) до 100 (регистрируется большое количество движения). Значение этого свойства помогает определить, нужно ли передавать параметр для метода setMotionLevel().

Если камера доступна, но не используется, потому что не вызван метод Video.attachCamera(), это свойство имеет значение -1.

Если осуществляется потоковая передача только несжатого локального видео, это свойство задается, только если назначена функция для обработчика событий. В противном случае оно не определяется.


Реализация
    public function get activityLevel():Number

См. также

bandwidthсвойство 
bandwidth:int  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Максимальная пропускная способность в байтах, доступная для текущего исходящего видеоканала. Значение 0 указывает на то, что канал может использовать любую пропускную способность, необходимую для сохранения желаемого качества кадра.

Это свойство можно задать с помощью метода setQuality().


Реализация
    public function get bandwidth():int

См. также

currentFPSсвойство 
currentFPS:Number  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Частота, с которой камера записывает данные (в кадрах в секунду). Это свойство задать нельзя, однако можно использовать метод setMode() для настройки связанного с ним свойства fps, которое задает максимальную частоту кадров, с которой камера должна записывать данные.


Реализация
    public function get currentFPS():Number

См. также

fpsсвойство 
fps:Number  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Максимальная частота, с которой камера может записывать данные (в кадрах в секунду). Максимально возможная частота зависит от возможностей камеры. Иногда заданная частота не достигается.


Реализация
    public function get fps():Number

См. также

heightсвойство 
height:int  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Текущая высота записи в пикселах. Задать нужное значение для этого свойства можно с помощью метода setMode().


Реализация
    public function get height():int

См. также

indexсвойство 
index:int  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Целое число, отсчитываемое от нуля, которым задается индекс камеры согласно содержимому массива, возвращаемого свойством names.


Реализация
    public function get index():int

См. также

keyFrameIntervalсвойство 
keyFrameInterval:int  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Номер видеокадра, который передается целиком (так называемый ключевой кадр), а не подвергается интерполяции по алгоритму сжатия видео. Значение по умолчанию — 15, то есть ключевым является каждый пятнадцатый кадр. Значение 1 указывает на то, что каждый кадр является ключевым. Допускаются значения от 1 до 48.


Реализация
    public function get keyFrameInterval():int

См. также

loopbackсвойство 
loopback:Boolean  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Определяет режим локального представления данных, записываемых камерой: подвергается сжатию и распаковке, как при прямой передаче с помощью Flash Media Server (true), или не подвергается сжатию (false). Значение по умолчанию равно false.

Хотя сжатый поток удобен для тестирования, например для просмотра параметров качества видеопотока, он означает значительные затраты на обработку. Локальный вид сжимается, редактируется для передачи, как при реальном подключении, а затем распаковывается для локального просмотра.

Задать это значение можно с помощью метода Camera.setLoopback(). Задать уровень сжатия, используемый при этом свойстве в значении true, можно с помощью метода Camera.setQuality().


Реализация
    public function get loopback():Boolean

См. также

motionLevelсвойство 
motionLevel:int  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Задает количество движения, необходимое для отправки события activity. Диапазон допустимых значений — от 0 до 100. Значение по умолчанию 50.

Видео может отображаться независимо от значения параметра motionLevel. Дополнительные сведения см. в описании метода setMotionLevel().


Реализация
    public function get motionLevel():int

См. также

motionTimeoutсвойство 
motionTimeout:int  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Число миллисекунд с момента, когда камера прекратила распознавать движение, до момента передачи события activity. Значение по умолчанию 2000 (две секунды).

Задать это значение можно с помощью метода setMotionLevel().


Реализация
    public function get motionTimeout():int

См. также

mutedсвойство 
muted:Boolean  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Логическое значение, показывающее, что пользователь запретил (true), или разрешил (false) доступ к камере в диалоговом окне "Конфиденциальность" проигрывателя Flash Player. При изменении этого значения отправляется событие status.


Реализация
    public function get muted():Boolean

См. также

nameсвойство 
name:String  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Имя текущей камеры, возвращенное самой камерой.


Реализация
    public function get name():String

См. также

namesсвойство 
names:Array  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Массив строк, отражающих имена всех доступных камер, без вывода диалогового окна "Конфиденциальность" проигрывателя Flash Player. Этот массив имеет такое же поведение, что и все массивы ActionScript: он неявно передает индекс каждой камеры, отсчитываемый от нуля, и количество камер в системе (с помощью names.length). Дополнительные сведения см. в разделе names в описании класса Array.

Вызов метода names требует обширного анализа аппаратных средств, и на составление массива может потребоваться несколько секунд. В большинстве случаев можно использовать камеру по умолчанию.


Реализация
    public static function get names():Array

См. также

qualityсвойство 
quality:int  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Требуемый уровень качества изображения, который определяется степенью сжатия, применяемого к каждому кадру видео. Допускаются значения качества от 1 (самое низкое качество и максимальное сжатие) до 100 (самое высокое качество без сжатия). Значение по умолчанию — 0, при котором качество изображения может по необходимости изменяться, чтобы не допустить превышения доступной пропускной способности.

Это свойство можно задать с помощью метода setQuality().


Реализация
    public function get quality():int

См. также

widthсвойство 
width:int  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Текущая ширина записи, в пикселах. Задать нужное значение для этого свойства можно с помощью метода setMode().


Реализация
    public function get width():int

См. также

Сведения о методе
getCamera()метод
public static function getCamera(name:String = null):Camera

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Возвращает ссылку на объект Camera для записи видео. Чтобы начать запись видео, необходимо присоединить объект Camera к объекту Video (см. описание Video.attachCamera() ). Для передачи видео на сервер Flash Media Server вызовите метод NetStream.attachCamera(), чтобы присоединить объект Camera к объекту NetStream.

Повторные вызовы метода getCamera() ссылаются на тот же драйвер камеры. Таким образом, если код содержит подобные значения: firstCam:Camera = getCamera() и secondCam:Camera = getCamera(), — то и firstCam и secondCam ссылаются на одну и ту же камеру, которая используется по умолчанию.

Как правило, не следует передавать значение для параметра name. Просто используйте метод getCamera(), который вернет ссылку на камеру по умолчанию. На панели параметров камеры (о ней будет говориться далее) пользователь может задать камеру по умолчанию для проигрывателя Flash Player.

Нельзя использовать ActionScript для задания параметра "Разрешить или запретить доступ" для использования камеры, однако можно отобразить диалоговое окно параметром камеры проигрывателя Adobe Flash Player, где пользователь может настроить разрешение для камеры. Когда SWF-файл, использующий метод attachCamera(), пытается присоединить камеру, возвращенную методом getCamera() к объекту Video или NetStream, проигрыватель Flash Player отображает диалоговое окно, в котором пользователь может предоставить или запретить доступ к камере. (Убедитесь в том, что размеры окна приложения составляют не менее 215 х 138 пикселов. Это минимальный размер, необходимый проигрывателю Flash Player для отображения диалогового окна.) Когда пользователь отвечает на запрос диалогового окна параметров камеры, проигрыватель Flash Player возвращает объект Info в событии status с ответом пользователя: Camera.muted говорит о том, что пользователь запретил доступ к камере; Camera.Unmuted указывает на то, что он предоставил доступ. Чтобы определить, предоставил или запретил пользователь доступ к камере, не обрабатывая событиеstatus, используйте свойство muted.

Пользователь может задать постоянные параметры конфиденциальности для определенного домена: во время воспроизведения SWF-файла нужно щелкнуть правой кнопкой (Windows) или нажать клавишу Control и щелкнуть мышью (Macintosh), выбрать "Параметры", открыть диалоговое окно "Конфиденциальность" и выбрать "Запомнить". Если пользователь выберет "Запомнить", проигрыватель Flash Player больше не будет спрашивать у него разрешения на доступ к камере для SWF-файлов из этого домена.

Примечание. Метод attachCamera() не будет вызывать диалоговое окно "Разрешить или запретить доступ к камере", если пользователь запретил доступ, выбрав "Запомнить" в окне параметров проигрывателя Flash Player. В этом случае можно попросить пользователя изменить параметры доступа, отобразив панель конфиденциальности Flash Player с помощью метода Security.showSettings(SecurityPanel.PRIVACY).

Если getCamera() возвращает значение null, это значит, что камера используется другим приложением или что в системе не установлены камеры. Определить, установлены ли камеры, можно с помощью свойства names.length. Чтобы отобразить панель параметров камеры в Flash Player, с помощью которой пользователь может выбрать камеру, на которую будет ссылаться метод getCamera(), используйте System.showSettings(SecurityPanel.CAMERA).

На сканирование аппаратных средств для камер требуется время. Когда проигрыватель Flash Player находит хотя бы одну камеру, он больше никогда не сканирует аппаратные средства для данного экземпляра проигрывателя. Однако если Flash Player не найдет камер, сканирование будет повторяться при каждом вызове метода getCamera. Это удобно, если пользователь забыл подключить камеру. Если в SWF-файле предусмотрена кнопка "Повторить попытку", которая вызывает getCamera, проигрыватель Flash Player сможет найти камеру без повторного запуска SWF-файла.

Параметры

name:String (default = null) — Задает, какую камеру использовать в соответствии с данными массива, возвращенного свойством names. Для большинства приложений можно получить камеру по умолчанию, опустив этот параметр. Чтобы задать значение для этого параметра, используйте строковое представление позиции индекса от нуля в массиве Camera.names. Например, чтобы задать третью камеру в массиве, укажитеCamera.getCamera("2").

Возвращает
Camera — Если не задан параметр name, этот метод возвращает ссылку на камеру по умолчанию или, если она используется другим приложением, первую доступную камеру. (Если установлено несколько камер, пользователь может указать камеру по умолчанию на панели параметров камеры в проигрывателе Flash Player.) Если нет доступных или установленных камер, метод возвращает значение null.

События
status:StatusEvent — Отправляется, когда камера сообщает о своем состоянии. Если свойство codeимеет значение Camera.Muted, пользователь отказался предоставить SWF-файлу доступ к камере. Если свойство codeимеет значение Camera.Unmuted, пользователь предоставил SWF-файлу доступ к камере.

См. также


Пример

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

Метод Camera.getCamera() возвращает ссылку на объект Camera или возвращает 0, если камера недоступна или не установлена. Инструкция if проверяет, обнаружена ли камера и предоставил ли пользователь доступ к ней. Если пользователь запрещает доступ, свойство muted получает значение true.

При вызове метода attachCamera() обычно появляется диалоговое окно с запросом доступа к камере для проигрывателя Flash Player. Однако если пользователь запретил доступ и выбрал параметр Запомнить, диалоговое окно не появляется и ничего не отображается. Чтобы обеспечить пользователю возможность предоставить доступ к камере, текстовое поле myTextField дает пользователю указание щелкнуть текстовое поле, чтобы открыть диалоговое окно параметров проигрывателя Flash Player.

Метод clickHandler() вызывает Security.showSettings(), отображающий панель PRIVACY диалогового окна параметров. Если пользователь предоставляет доступ, отправляется событие StatusEvent.STATUS, свойствоcode которого получает значение Camera.Unmuted. (Свойство mute объекта Camera также имеет значение false.)

Метод statusHandler(), добавленный для прослушивания изменения состояния пользовательских параметров, вызывает метод connectCamera(), если пользователь предоставляет доступ. Метод connectCamera() создает экземпляр объекта Video с шириной и высотой записываемого потока. Для отображения видео, записываемого с камеры, ссылка на видеопоток добавляется к объекту Video, который в свою очередь добавляется в список отображения.

Также запускается объект Timer. Каждую секунду отправляется событие timer объекта Timer, и вызывается метод timerHandler(). Метод timerHandler() отображается и обновляет ряд свойств объекта Camera.

Примечание. В этом примере изменяется только свойство 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;    
        
            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);
        }

        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");
        }
    }
}
setKeyFrameInterval()метод 
public function setKeyFrameInterval(keyFrameInterval:int):void

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Определяет, какие кадры видео передаются целиком (так называемые ключевые кадры), а не подвергаются интерполяции по алгоритму сжатия видео. Этот метод применим, только если видео передается через сервер Flash Media Server.

Алгоритм сжатия видеоданных проигрывателя Flash Video сжимает видео, передавая только то, что изменилось по сравнению с последним кадром. Такие порции называются интерполированными кадрами. Кадры видео могут подвергаться интерполяции в соответствии с содержимым предыдущего кадра. Однако ключевой кадр видео передается полностью, без интерполяции по предыдущим кадрам.

При определении, какое значение задать для параметра keyFrameInterval, необходимо учитывать использование полосы пропускания и доступность воспроизведения видео. Например, если задать для keyFrameInterval более высокое значение (то есть, отправлять ключевые кадры реже), уменьшится использование полосы пропускания. Однако при этом может требоваться больше времени на перемещения точки воспроизведения в нужное положение видео, так как перед возобновлением воспроизведения необходимо выполнить интерполяцию большего числа предшествующих кадров.

И наоборот, если задать для keyFrameInterval более низкое значение (отправлять ключевые кадры чаще), то использование полосы пропускания увеличивается, так как чаще передаются полные кадры видео, однако при этом может сократиться время, необходимое на поиск нужного кадра в видеозаписи.

Параметры

keyFrameInterval:int — Значение, определяющее, какие кадры видео передаются целиком (так называемые ключевые кадры), а не подвергаются интерполяции по алгоритму сжатия видео. Значение 1 указывает на то, что каждый кадр является ключевым, значение 3 — на то, что каждый третий файл является ключевым, и т.д. Допускаются значения от 1 до 48.

См. также

setLoopback()метод 
public function setLoopback(compress:Boolean = false):void

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Определяет, должен ли использоваться сжатый видеопоток для локального представления камеры. Этот метод применим, только если видео передается с помощью сервера Flash Media Server. Если задать свойству compress значение true, можно увидеть, как именно видео будет отображаться пользователям, просматривающим его в режиме реального времени.

Хотя сжатый поток удобен для тестирования, например для просмотра параметров качества видеопотока, он означает значительные затраты на обработку, так как локальный вид не просто сжимается: он сжимается, редактируется для передачи, как при реальном подключении, а затем распаковывается для локального просмотра.

Чтобы задать уровень сжатия для использования вместе со свойством compress в значении true, используйте метод Camera.setQuality().

Параметры

compress:Boolean (default = false) — Определяет, должен использоваться сжатый (true) или несжатый видеопоток (false) для локального представления камеры.

См. также

setMode()метод 
public function setMode(width:int, height:int, fps:Number, favorArea:Boolean = true):void

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Задает для камеры собственный режим записи, наилучшим образом удовлетворяющий заданным требованиям. Если у камеры нет собственного режима, соответствующего всем переданным параметрам, проигрыватель Flash Player выбирает режим записи, наиболее близкий к запрашиваемому режиму. При такой манипуляции изображение может обрезаться, а кадры — пропускаться.

По умолчанию Flash Player при необходимости пропускает кадры, чтобы сохранить размер изображения. Чтобы сократить число пропускаемых кадров, даже если это делается для уменьшения размера изображения, передайте значение false для параметра favorArea.

При выборе собственного режима проигрыватель Flash Player пытается сохранить требуемое соотношение сторон, если это возможно. Например, если передается команда myCam.setMode(400, 400, 30), а максимально доступные ширина и высота камеры — 320 и 288, Flash Player задает и ширине и высоте значение 288. Задавая свойствам одинаковые значения, проигрыватель сохраняет требуемое соотношение сторон 1:1.

Чтобы определить значения, присвоенные этим свойствам после того, как проигрыватель Flash Player выберет режим, максимально соответствующий требуемым значениям, используйте свойства width, height и fps.

Если используется сервер Flash Media Server, можно также снимать отдельные кадры или делать покадровую съемку. Дополнительные сведения см. в описании метода NetStream.attachCamera().

Параметры

width:int — Требуемая ширина записи, в пикселах. Значение по умолчанию 160.
 
height:int — Требуемая высота записи, в пикселах. Значение по умолчанию 120.
 
fps:Number — Требуемая частота, с которой камера должна записывать данные (в кадрах в секунду). Значение по умолчанию 15.
 
favorArea:Boolean (default = true) — Определяет, должны изменяться настройки ширины, высоты и частоты кадров, если собственный режим камеры не соответствует заданным требованиям. Значение по умолчанию — true. Это значить, что предпочтение отдается сохранению размеров записи. При использовании этого параметра выбирается режим, наиболее близкий к значениям width и height даже если это негативно отражается на производительности из-за сокращения частоты кадров. Чтобы увеличить частоту кадров за счет настроек высоты и ширины камеры, передайте значение false для параметра favorArea.

См. также


Пример

В следующем примере, когда пользователь щелкает по рабочей области, размер видео изменяется, и скорость записи (в кадрах в секунду) получает новое значение.

Рабочая область не масштабируется. Метод Camera.getCamera() возвращает ссылку на объект Camera или возвращает 0, если камера недоступна или не установлена. Если камера существует, вызывается метод connectCamera(). Метод connectCamera() создает экземпляр объекта Video. Для отображения видео, записываемого с камеры, ссылка на видеопоток добавляется к объекту Video, который в свою очередь добавляется в список отображения. Создается прослушиватель для события MouseEvent.CLICK. Когда пользователь щелкает по рабочей области, запускается метод clickHandler(). Метод проверяет ширину записываемого видео и задает ширину, высоту и требуемую частоту кадров для режима камеры. Чтобы эти параметры вступили в силу, объект Video необходимо удалить и создавать заново. Ширина и высота видео также должны соответствовать ширине и высоте объекта Camera.

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()метод 
public function setMotionLevel(motionLevel:int, timeout:int = 2000):void

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Задает количество движения, необходимое для отправки события activity. Дополнительно задает число миллисекунд, которое должно пройти без активности, прежде чем проигрыватель Flash Player зарегистрирует остановку движения и отправит событие.

Примечание. Видео может отображаться независимо от значения параметра motionLevel. Этот параметр определяет только то, когда и при каких обстоятельствах отправляется событие, а не то, записывается или воспроизводится видео на самом деле.

Чтобы камера совсем не улавливала движение, передайте значение 100 для motionLevel; в этом случае событие activity никогда не отправляется. (Скорее всего, это значение будет использоваться только для тестирования. Например, чтобы временно отключить обработчики, которые обычно запускаются при отправке события.)

Определить количество движения, определяемого камерой в настоящий момент можно с помощью свойства activityLevel. Значения чувствительности к движению прямо соответствуют значениям активности. При полном отсутствии движения свойство activity имеет значение 0. При постоянном движении свойство activity имеет значение 100. Значение активности меньше значения чувствительности к движению, если движения нет, тогда как во время движения значения активности часто превышают значение чувствительности к движению.

Этот метод имеет сходное применение с методом Microphone.setSilenceLevel(): они оба используются для определения, когда должно отправляться событие activity. Однако эти методы имеют в значительной степени различное влияние на публикацию потоков.

Параметры

motionLevel:int — Задает количество движения, необходимое для передачи события activity. Диапазон допустимых значений — от 0 до 100. Значение по умолчанию 50.
 
timeout:int (default = 2000) — Задает, сколько миллисекунд должно пройти без активности, прежде чем проигрыватель Flash Player определит, что активность прекратилась, и отправит событие activity. Значение по умолчанию 2000 миллисекунд (две секунды).

См. также


Пример

В следующем примере камера пользователя используется в качестве камеры слежения или обзора. Камера регистрирует движение и текстовое поле показывает уровень активности. (Пример можно расширить, добавив включение звукового сигнала или отправку сообщения через веб-службу в другие приложения.)

Метод Camera.getCamera() возвращает ссылку на объект Camera или возвращает 0, если камера недоступна или не установлена. Инструкция if проверяет, доступна ли камера, и, если да, вызывает метод connectCamera(). Метод connectCamera() создает экземпляр объекта Video с шириной и высотой записываемого потока. Для отображения видео, записываемого с камеры, ссылка на видеопоток добавляется к объекту Video, который в свою очередь добавляется в список отображения. (При вызове метода attachCamera() обычно появляется диалоговое окно с запросом доступа к камере для проигрывателя Flash Player. Однако если пользователь запретил доступ и выбрал параметр Запомнить, диалоговое окно не появляется и ничего не отображается. Чтобы предоставить пользователю возможность разрешить доступ к камере, используйте метод system.Security.showSettings(), чтобы вызвать диалоговое окно параметров Flash Player.)

Метод setMotionLevel() задает значение 5 для минимального уровня активности (количество движения), необходимого для отправки события activity. Интервал между прекращением регистрации движения и отправкой события activity равен одной секунде (1000 миллисекунд). Когда проходит одна секунда без активности или уровень активности достигает пяти, отправляется событие ActivityEvent.ACTIVITY и вызывается метод activityHandler(). Если событие запущено уровнем активности, свойство activating получает значение true и запускается объект Timer. Каждую секунду отправляется событие timer объекта Timer, и вызывается метод timerHandler(), отображающий текущий уровень активности. (Хотя таймер запускается при уровне, равном или больше 5, отображаемый текущий уровень активности может быть меньше.)

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()метод 
public function setQuality(bandwidth:int, quality:int):void

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Задает максимальную пропускную способность в секунду или требуемое качество картинки для текущего исходящего видеоканала. Как правило, этот метод применяется, только если видео передается через сервер Flash Media Server.

С помощью этого метода можно указать, какой элемент исходящего видеоканала важнее для приложения: использование пропускной способности или качество изображения.

Параметры

bandwidth:int — Задает максимальную пропускную способность в секунду, которую может использовать текущий исходящий видеоканал (в байтах в секунду). Чтобы указать, что проигрыватель Flash Player может использовать любую пропускную способность, необходимую для сохранения значения свойства quality, передайте значение 0 для свойства bandwidth. Значение по умолчанию 16384.
 
quality:int — Целое число, задающее требуемый уровень качества картинки, который определяется степенью сжатия, применяемой к каждому кадру видео. Допускаются значения от 1 (самое низкое качество и максимальное сжатие) до 100 (самое высокое качество без сжатия). Чтобы указать, что качество изображения может изменяться, чтобы избежать превышения пропускной способности, передайте 0 для свойства quality.

См. также

Сведения о событии
activity Событие
Тип объекта события: flash.events.ActivityEvent
свойство ActivityEvent.type = flash.events.ActivityEvent.ACTIVITY

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Отправляется, когда камера начинает или заканчивает сеанс. Вызовите метод Camera.setMotionLevel(), чтобы задать уровень движения, необходимого для отправки события activity со свойством activating в значенииtrue, или время без активности, которое должно пройти перед отправкой события activity со свойством activating в значении false.

Константа ActivityEvent.ACTIVITY определяет значение свойства typeобъекта события activity.

Данное событие имеет следующие свойства.

СвойствоЗначение
activatingtrue, если устройство активируется, илиfalse, если деактивируется.
bubblesfalse
cancelablefalse; нет поведения по умолчанию для отмены.
currentTargetОбъект, активно обрабатывающий объект Event с помощью прослушивателя событий.
targetОбъект, начинающий или завершающий сеанс, например объект Camera или Microphone.
status Событие  
Тип объекта события: flash.events.StatusEvent
свойство StatusEvent.type = flash.events.StatusEvent.STATUS

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Отправляется, когда камера сообщает о своем состоянии. Если свойство code имеет значение Camera.Muted, пользователь отказался предоставить SWF-файлу доступ к камере. Если свойство code имеет значениеCamera.Unmuted, пользователь предоставил SWF-файлу доступ к камере.

Задает значение свойства type для объекта события Status.

Данное событие имеет следующие свойства.

СвойствоЗначение
bubblesfalse
cancelablefalse; нет поведения по умолчанию для отмены.
codeОписание состояния объекта.
currentTargetОбъект, активно обрабатывающий объект Event с помощью прослушивателя событий.
levelКатегория сообщения, например "состояние", "предупреждение" или "ошибка".
targetОбъект, сообщающий свое состояние.

См. также

Примеры Как пользоваться примерами
CameraExample.as

В следующем примере показывается изображение с камеры после подтверждения сообщения о безопасности. Настройка рабочей области не допускает масштабирования, он выровнен по верхнему левому углу окна проигрывателя. Событие activity отправляется при запуске и после окончания (если это применимо) сеанса методу activityHandler(), который печатает информацию о событии.

Примечание. Для правильной работы примера к компьютеру должна быть подключена камера.


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);
        }
    }
}