Пакет | flash.media |
Класс | public final class Camera |
Наследование | Camera ![]() ![]() |
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Сведения о записи звука см. в описании класса Microphone.
Важно! Проигрыватель Flash Player показывает диалоговое окно "Конфиденциальность", в котором пользователь может предоставить или запретить доступ к камере. Убедитесь в том, что размеры окна приложения составляют не менее 215 х 138 пикселов. Это минимальный размер, необходимый для отображения диалогового окна.
Чтобы создать объект Camera или сослаться на него, используйте метод getCamera()
.
См. также
Свойство | Определено | ||
---|---|---|---|
activityLevel : Number [только для чтения]
Порог интенсивности движения, определяемой камерой. | Camera | ||
bandwidth : int [только для чтения]
Максимальная пропускная способность в байтах, доступная для текущего исходящего видеоканала. | Camera | ||
![]() | constructor : 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 | ||
![]() | prototype : Object [статические]
Ссылка на модель объекта класса или функции. | Object | |
quality : int [только для чтения]
Требуемый уровень качества изображения, который определяется степенью сжатия, применяемого к каждому кадру видео. | Camera | ||
width : int [только для чтения]
Текущая ширина записи, в пикселах. | Camera |
Метод | Определено | ||
---|---|---|---|
![]() | addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Регистрирует объект прослушивателя события в объекте EventDispatcher, в результате чего прослушиватель будет получать уведомления о событиях. | EventDispatcher | |
![]() |
Передает событие в поток событий. | EventDispatcher | |
[статические]
Возвращает ссылку на объект Camera для записи видео. | Camera | ||
![]() |
Проверяет наличие у объекта EventDispatcher прослушивателей событий, которые зарегистрированы для получения уведомлений о событиях определенного типа. | EventDispatcher | |
![]() |
Показывает, определено ли заданное свойство для объекта. | Object | |
![]() |
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | |
![]() |
Показывает наличие заданного свойства и его перечисляемость. | Object | |
![]() |
Удаляет прослушиватель из объекта EventDispatcher. | EventDispatcher | |
Определяет, какие кадры видео передаются целиком (так называемые ключевые кадры), а не подвергаются интерполяции по алгоритму сжатия видео. | Camera | ||
Определяет, должен ли использоваться сжатый видеопоток для локального представления камеры. | Camera | ||
Задает для камеры собственный режим записи, наилучшим образом удовлетворяющий заданным требованиям. | Camera | ||
Задает количество движения, необходимое для передачи события Activity. | Camera | ||
![]() |
Задает доступность динамического свойства для операций цикла. | Object | |
Задает максимальную пропускную способность в секунду или требуемое качество картинки для текущего исходящего видеоканала. | Camera | ||
![]() |
Возвращает строковое представление заданного объекта. | Object | |
![]() |
Возвращает элементарное значение заданного объекта. | Object | |
![]() |
Проверяет, зарегистрирован ли прослушиватель событий в объекте EventDispatcher или в любом из его предков для получения уведомлений о событиях определенного типа. | EventDispatcher |
Событие | Сводка | Определено | ||
---|---|---|---|---|
![]() | [многоадресное событие] Отправляется, когда проигрыватель Flash Player перемещается в фокус операционной системы и становится активным. | EventDispatcher | ||
Отправляется, когда камера начинает или заканчивает сеанс. | Camera | |||
![]() | [многоадресное событие] Отправляется, когда проигрыватель 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 |
Максимальная частота, с которой камера может записывать данные (в кадрах в секунду). Максимально возможная частота зависит от возможностей камеры. Иногда заданная частота не достигается.
setMode()
.currentFPS
. 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: — Отправляется, когда камера сообщает о своем состоянии. Если свойство 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
. Однако эти методы имеют в значительной степени различное влияние на публикацию потоков.
Microphone.setSilenceLevel()
предназначен для оптимизации использования полосы пропускания. Когда аудиопоток считается тихим, аудиоданные не передаются. Вместо этого отправляется одно сообщение, свидетельствующее о наступлении тишины. Camera.setMotionLevel()
предназначен для определения движения и не влияет на использование полосы пропускания. Даже если видеопоток не обнаруживает движения, видео все равно передается.Параметры
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
и 0 для quality
. Проигрыватель Flash Player передает видео с максимально высоким качеством, возможным при заданной пропускной способности. При необходимости проигрыватель уменьшает качество изображения, чтобы не превышать пропускную способность. Как правило, при увеличении уровня движения качество снижается.bandwidth
и числовое значение для quality
. Проигрыватель Flash Player использует всю пропускную способность, необходимую для сохранения заданного качества. При необходимости проигрыватель снижает частоту кадров для сохранения качества изображения. Как правило, при увеличении уровня движения увеличивается и использование пропускной способности.Параметры
bandwidth:int — Задает максимальную пропускную способность в секунду, которую может использовать текущий исходящий видеоканал (в байтах в секунду). Чтобы указать, что проигрыватель Flash Player может использовать любую пропускную способность, необходимую для сохранения значения свойства quality , передайте значение 0 для свойства bandwidth . Значение по умолчанию 16384.
| |
quality:int — Целое число, задающее требуемый уровень качества картинки, который определяется степенью сжатия, применяемой к каждому кадру видео. Допускаются значения от 1 (самое низкое качество и максимальное сжатие) до 100 (самое высокое качество без сжатия). Чтобы указать, что качество изображения может изменяться, чтобы избежать превышения пропускной способности, передайте 0 для свойства quality .
|
См. также
activity | Событие |
flash.events.ActivityEvent
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
.
Данное событие имеет следующие свойства.
Свойство | Значение |
---|---|
activating | true , если устройство активируется, илиfalse , если деактивируется. |
bubbles | false |
cancelable | false ; нет поведения по умолчанию для отмены. |
currentTarget | Объект, активно обрабатывающий объект Event с помощью прослушивателя событий. |
target | Объект, начинающий или завершающий сеанс, например объект Camera или Microphone. |
status | Событие |
flash.events.StatusEvent
flash.events.StatusEvent.STATUS
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Отправляется, когда камера сообщает о своем состоянии. Если свойство code
имеет значение Camera.Muted
, пользователь отказался предоставить SWF-файлу доступ к камере. Если свойство code
имеет значениеCamera.Unmuted
, пользователь предоставил SWF-файлу доступ к камере.
type
для объекта события Status
.
Данное событие имеет следующие свойства.
Свойство | Значение |
---|---|
bubbles | false |
cancelable | false ; нет поведения по умолчанию для отмены. |
code | Описание состояния объекта. |
currentTarget | Объект, активно обрабатывающий объект Event с помощью прослушивателя событий. |
level | Категория сообщения, например "состояние" , "предупреждение" или "ошибка" . |
target | Объект, сообщающий свое состояние. |
См. также
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); } } }