Пакет | flash.media |
Класс | public final class Camera |
Наследование | Camera EventDispatcher Object |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Экземпляр Camera захватывает видео в альбомной ориентации. На устройствах, поддерживающих изменение ориентации экрана, например на мобильных телефонах, объект Video, подключенный к камере, будет показывать видео только в альбомной ориентации в вертикальном режиме. Поэтому в мобильных программах при отображении видео должна использоваться альбомная ориентация и должен быть отключен автоматический поворот.
В ОС iOS видео с передней камеры зеркально отражается. В ОС Android этого не происходит.
На мобильных устройствах, имеющих камеру с автофокусом, автофокус включается автоматически. Если камерой не поддерживается непрерывная автофокусировка (а во многих камерах мобильных устройств так и есть), камера фокусируется, когда объект Camera подключается к видеопотоку, а также при вызове метода setMode ()
. На настольных компьютерах поведение автофокуса зависит от драйвера и настроек камеры.
В приложении AIR на Android и в ОС iOS камера не захватывает видео до тех пор, пока приложение AIR не станет активным и не будет перемещено на передний план. Кроме того, потоковые подключения могут быть потеряны при перемещении приложения на задний план. В ОС iOS видео, передаваемое камерой, не может быть показано, если приложение использует режим визуализации с помощью графического процессора. При этом камера может передавать видео в потоковом режиме на сервер.
Поддержка в профилях AIR: эта функция не поддерживается на устройствах AIR for TV. Дополнительные сведения о поддержке API-интерфейса в разных профилях см. в разделе «Поддержка в профилях AIR». Обратите внимание, что на устройствах AIR for TV Camera.isSupported
имеет значение true
, но Camera.getCamera()
всегда возвращает null
. Доступ к камере не поддерживается в мобильных браузерах.
Сведения о записи звука см. в описании класса Microphone.
Важно! Среда выполнения показывает диалоговое окно «Конфиденциальность», в котором пользователь может предоставить или запретить доступ к камере. Убедитесь в том, что размеры окна приложения составляют не менее 215 х 138 пикселей. Это минимальный размер, необходимый для отображения диалогового окна.
Чтобы создать объект Camera или сослаться на него, используйте метод getCamera()
.
Дополнительно
Микаэль Шез (Michael Chaize): Android, AIR и камера
Связанные элементы API
Свойство | Определено | ||
---|---|---|---|
activityLevel : Number [только для чтения]
Порог интенсивности движения, определяемой камерой. | Camera | ||
bandwidth : int [только для чтения]
Максимальная пропускная способность в байтах, доступная для текущего исходящего видеоканала. | Camera | ||
constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object | ||
currentFPS : Number [только для чтения]
Частота, с которой камера записывает данные (в кадрах в секунду). | Camera | ||
fps : Number [только для чтения]
Максимальная частота, с которой камера может записывать данные (в кадрах в секунду). | Camera | ||
height : int [только для чтения]
Текущая высота записи в пикселях. | Camera | ||
index : int [только для чтения]
Отсчитываемый от нуля индекс, указывающий положение камеры в массиве Camera.names, в котором перечислены все доступные камеры. | Camera | ||
isSupported : Boolean [статические] [только для чтения]
Свойству isSupported задается значение true, если текущая платформа поддерживает класс Camera, в противном случае задается значение false. | 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 [статические] [только для чтения]
Массив строк, содержащих имена всех доступных камер. | Camera | ||
permissionStatus : String [статические] [только для чтения]
Определяет, предоставлено или нет приложению разрешение на использование камеры. | Camera | ||
position : String [только для чтения]
Указывает сторону устройства, на которой расположена камера. | Camera | ||
quality : int [только для чтения]
Требуемый уровень качества изображения, который определяется степенью сжатия, применяемого к каждому кадру видео. | Camera | ||
width : int [только для чтения]
Текущая ширина записи в пикселях. | Camera |
Метод | Определено | ||
---|---|---|---|
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Регистрирует объект прослушивателя события на объекте EventDispatcher для получения прослушивателем уведомления о событии. | EventDispatcher | ||
Заполняет байтовый массив из прямоугольного участка пиксельных данных. Записывает целое число без знака (32-разрядное неумноженное значение пиксела) для каждого пиксела в байтовый массив. | Camera | ||
Заполняет пространство вектором из прямоугольного участка пиксельных данных. | Camera | ||
Посылает событие в поток событий. | EventDispatcher | ||
Копирует последний кадр в растровое изображение. | Camera | ||
[статические]
Возвращает ссылку на объект Camera для записи видео. | Camera | ||
Проверяет, имеет ли объект EventDispatcher прослушиватели, зарегистрированные для определенного типа события. | EventDispatcher | ||
Показывает, определено ли заданное свойство для объекта. | Object | ||
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | ||
Показывает наличие заданного свойства и его перечисляемость. | Object | ||
Удаляет прослушиватель из объекта EventDispatcher. | EventDispatcher | ||
Запрашивает разрешение на использование камеры для приложения. | Camera | ||
Определяет, какие кадры видео передаются целиком (так называемые ключевые кадры), а не подвергаются интерполяции по алгоритму сжатия видео. | Camera | ||
Определяет, должен ли использоваться сжатый видеопоток для локального представления камеры. | Camera | ||
Задает для камеры собственный режим записи, наилучшим образом удовлетворяющий заданным требованиям. | Camera | ||
Задает количество движения, необходимое для отправки события activity. | Camera | ||
Задает доступность динамического свойства для операций цикла. | Object | ||
Задает максимальную пропускную способность в секунду или требуемое качество картинки для текущего исходящего видеоканала. | Camera | ||
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали. | Object | ||
Возвращает строковое представление заданного объекта. | Object | ||
Возвращает элементарное значение заданного объекта. | Object | ||
Проверяет, зарегистрирован ли прослушиватель события для указанного типа события с данным объектом EventDispatcher или любым его предшественником. | EventDispatcher |
Событие | Сводка | Определено | ||
---|---|---|---|---|
[многоадресное событие] Отправляется, когда проигрыватель Flash Player или приложение AIR перемещается в фокус операционной системы и становится активным. | EventDispatcher | |||
Отправляется, когда камера начинает или заканчивает сеанс. | Camera | |||
[многоадресное событие] Отправляется, когда проигрыватель Flash Player или приложение AIR теряет фокус системы и становится неактивным. | EventDispatcher | |||
Отправляется, когда приложение запрашивает разрешение на использование камеры на устройстве. | Camera | |||
Отправляется, когда камера сообщает о своем состоянии. | Camera | |||
Отправляется, когда новый кадр камеры обработан средой выполнения и доступен для копирования. | Camera |
activityLevel | свойство |
activityLevel:Number
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Порог интенсивности движения, определяемой камерой. Допускаются значения от 0 (движение не регистрируется) до 100 (регистрируется большое количество движения). Значение этого свойства помогает определить, нужно ли передавать параметр для метода setMotionLevel()
.
Если камера доступна, но не используется, потому что не вызван метод Video.attachCamera()
, это свойство имеет значение -1.
Если осуществляется потоковая передача только несжатого локального видео, это свойство задается, только если назначена функция для обработчика событий. В противном случае оно не определяется.
Реализация
public function get activityLevel():Number
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
|
Связанные элементы API
bandwidth | свойство |
bandwidth:int
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Максимальная пропускная способность в байтах, доступная для текущего исходящего видеоканала. Значение 0 указывает на то, что канал может использовать любую пропускную способность, необходимую для сохранения желаемого качества кадра.
Это свойство можно задать с помощью метода setQuality()
.
Реализация
public function get bandwidth():int
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
|
Связанные элементы API
currentFPS | свойство |
currentFPS:Number
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Частота, с которой камера записывает данные (в кадрах в секунду). Это свойство задать нельзя, однако можно использовать метод setMode()
для настройки связанного с ним свойства fps
, которое задает максимальную частоту кадров, с которой камера должна записывать данные.
Реализация
public function get currentFPS():Number
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
|
Связанные элементы API
fps | свойство |
fps:Number
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Максимальная частота, с которой камера может записывать данные (в кадрах в секунду). Максимально возможная частота зависит от возможностей камеры. Иногда заданная частота не достигается.
- Задать требуемое значение для этого свойства можно с помощью метода
setMode()
. - Определить скорость, с которой камера записывает данные в настоящий момент, можно с помощью свойства
currentFPS
.
Реализация
public function get fps():Number
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
|
Связанные элементы API
height | свойство |
height:int
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Текущая высота записи в пикселях. Задать требуемое значение для этого свойства можно с помощью метода setMode()
.
Реализация
public function get height():int
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
|
Связанные элементы API
index | свойство |
index:int
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Отсчитываемый от нуля индекс, указывающий положение камеры в массиве Camera.names
, в котором перечислены все доступные камеры.
Реализация
public function get index():int
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
|
Связанные элементы API
isSupported | свойство |
isSupported:Boolean
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Свойству isSupported
задается значение true
, если текущая платформа поддерживает класс Camera, в противном случае задается значение false
.
Реализация
public static function get isSupported():Boolean
keyFrameInterval | свойство |
keyFrameInterval:int
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Номер видеокадра, который передается целиком (так называемый ключевой кадр), а не подвергается интерполяции по алгоритму сжатия видео. Значение по умолчанию — 15, то есть ключевым является каждый пятнадцатый кадр. Значение 1 указывает на то, что каждый кадр является ключевым. Допускаются значения от 1 до 300.
Реализация
public function get keyFrameInterval():int
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
|
Связанные элементы API
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
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
|
Связанные элементы API
motionLevel | свойство |
motionLevel:int
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Задает количество движения, необходимое для отправки события activity
. Диапазон допустимых значений — от 0 до 100. Значением по умолчанию является 50.
Видео может отображаться независимо от значения параметра motionLevel
. Дополнительные сведения см. в описании метода setMotionLevel()
.
Реализация
public function get motionLevel():int
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
|
Связанные элементы API
motionTimeout | свойство |
motionTimeout:int
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Число миллисекунд с момента, когда камера прекратила распознавать движение, до момента передачи события activity
. Значение по умолчанию 2000 (две секунды).
Задать это значение можно с помощью метода setMotionLevel()
.
Реализация
public function get motionTimeout():int
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
|
Связанные элементы API
muted | свойство |
muted:Boolean
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Логическое значение, показывающее, что пользователь запретил (true
), или разрешил (false
) доступ к камере в диалоговом окне «Конфиденциальность» проигрывателя Flash Player. При изменении этого значения отправляется событие status
.
Реализация
public function get muted():Boolean
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
|
Связанные элементы API
name | свойство |
name:String
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Имя текущей камеры, возвращенное самой камерой.
Реализация
public function get name():String
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
|
Связанные элементы API
names | свойство |
names:Array
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Массив строк, содержащих имена всех доступных камер. При доступе к этому массиву не отображается диалоговое окно Flash Player «Конфиденциальность». Этот массив содержит отсчитываемый от нуля индекс для каждой камеры и число камер в системе (посредством names.length
).
Для вызова свойства names
требуется выполнить обширный анализ оборудования. В большинстве случаев можно использовать камеру по умолчанию.
Реализация
public static function get names():Array
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
|
Связанные элементы API
permissionStatus | свойство |
position | свойство |
position:String
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 3.0 |
Указывает сторону устройства, на которой расположена камера.
Используйте свойство position
, чтобы определить, находится камера мобильного устройства спереди или сзади. Следующая функция проверяет каждую доступную камеру, пока не найдет камеру с желаемым положением. Если ни одна из камер не занимает желаемого положения, возвращается камера по умолчанию.
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();
На мобильных устройствах обычно камера занимает положение CameraPosition.FRONT
или CameraPosition.BACK
. Если не удается определить положение камеры, возвращается значение CameraPosition.UNKNOWN
. На компьютерах всегда возвращается значение CameraPosition.UNKNOWN
.
Константы для допустимых значений данного свойства определяются в классе CameraPosition.
Реализация
public function get position():String
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
|
Связанные элементы API
quality | свойство |
quality:int
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Требуемый уровень качества изображения, который определяется степенью сжатия, применяемого к каждому кадру видео. Допускаются значения качества от 1 (самое низкое качество и максимальное сжатие) до 100 (самое высокое качество без сжатия). Значение по умолчанию — 0, при котором качество изображения может по необходимости изменяться, чтобы не допустить превышения доступной пропускной способности.
Это свойство можно задать с помощью метода setQuality()
.
Реализация
public function get quality():int
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
|
Связанные элементы API
width | свойство |
width:int
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Текущая ширина записи в пикселях. Задать требуемое значение для этого свойства можно с помощью метода setMode()
.
Реализация
public function get width():int
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
|
Связанные элементы API
copyToByteArray | () | метод |
public function copyToByteArray(rect:Rectangle, destination:ByteArray):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 11.4, AIR 3.4 |
Заполняет байтовый массив из прямоугольного участка пиксельных данных
Записывает неподписанное целое число (32-разрядное неумноженное значение пикселя) для каждого пикселя в байтовом массиве. Размер массива изменен до количества байт, необходимого дляя вмещения всех пикселов.
Параметры
rect:Rectangle — Прямоугольная область в текущем объекте BitmapData.
| |
destination:ByteArray — Объект ByteArray, представляющий пиксели в данном объекте Rectangle.
|
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
| |
TypeError — Объект rect имеет значение null.
| |
TypeError — Место назначения соответствует NULL
|
Связанные элементы API
copyToVector | () | метод |
public function copyToVector(rect:Rectangle, destination:Vector.<uint>):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 11.4, AIR 3.4 |
Заполняет вектор из прямоугольного участка пиксельных данных.
Записывает неподписанное целое число (32-разрядное неумноженное значение пикселя) для каждого пикселя в векторе. Размер вектора изменен до количества записей, необходимого дляя вмещения всех пикселов.
Параметры
rect:Rectangle — Прямоугольная область в текущем объекте BitmapData.
| |
destination:Vector.<uint> — Объект Vector.<uint>, представляющий пиксели в данном объекте Rectangle.
|
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
| |
TypeError — Объект rect имеет значение null.
| |
TypeError — Место назначения соответствует NULL
|
Связанные элементы API
drawToBitmapData | () | метод |
public function drawToBitmapData(destination:BitmapData):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 11.4, AIR 3.4 |
Копирует последний кадр в растровое изображение.
Этот метод копирует содержимое последнего кадра в образец BitmapData.
Параметры
destination:BitmapData — Объект образца BitmapData для сохранения последнего кадра.
|
Выдает
ArgumentError — kInvalidBitmapDataError, если объект destination слишком маленький
|
Связанные элементы API
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()
, который вернет ссылку на камеру по умолчанию. На панели настроек камеры (о ней будет говориться далее) пользователь может задать камеру, используемую по умолчанию.
Нельзя использовать 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
.
В Flash Player пользователь может задать постоянные параметры конфиденциальности для определенного домена: во время воспроизведения SWF-файла нужно щелкнуть правой кнопкой (Windows и Linux) мыши или нажать клавишу Control и щелкнуть мышью (Macintosh), выбрать «Параметры», открыть диалоговое окно «Конфиденциальность» и выбрать «Запомнить». Если пользователь выберет «Запомнить», проигрыватель Flash Player больше не будет спрашивать у него разрешения на доступ к камере для SWF-файлов из этого домена.
Примечание. Метод attachCamera()
не будет вызывать диалоговое окно «Разрешить или запретить доступ к камере», если пользователь запретил доступ, выбрав «Запомнить» в окне настроек проигрывателя Flash Player. В этом случае можно попросить пользователя изменить настройки доступа, отобразив панель конфиденциальности Flash Player с помощью метода Security.showSettings(SecurityPanel.PRIVACY)
.
Если getCamera()
возвращает значение null
, это значит, что камера используется другим приложением или что в системе не установлены камеры. Определить, установлены ли камеры, можно с помощью свойства names.length
. Для отображения панели параметров камеры в Flash Player, с помощью которой пользователь может выбрать камеру, на которую будет ссылаться метод getCamera()
, используйте Security.showSettings(SecurityPanel.CAMERA)
.
На сканирование аппаратных средств для камер требуется время. Когда среда выполнения находит хотя бы одну камеру, он больше никогда не сканирует аппаратные средства для данного экземпляра проигрывателя. Однако если среда выполнения не найдет камер, сканирование будет повторяться при каждом вызове метода getCamera
. Это удобно, если камера подсоединена, но выключена. Если в SWF-файле предусмотрена кнопка «Повторить попытку», которая вызывает getCamera
, проигрыватель Flash Player сможет найти камеру без повторного запуска SWF-файла.
Параметры
name:String (default = null ) — Задает, какую камеру использовать в соответствии с данными массива, возвращенного свойством names . Для большинства приложений можно получить камеру по умолчанию, опустив этот параметр. Чтобы задать значение для этого параметра, используйте строковое представление позиции индекса от нуля в массиве Camera.names. Например, чтобы задать третью камеру в массиве, укажитеCamera.getCamera("2") .
|
Camera — Если не задан параметр name , этот метод возвращает ссылку на камеру по умолчанию или, если она используется другим приложением, первую доступную камеру. (Если установлено несколько камер, пользователь может указать камеру по умолчанию на панели настроек камеры в проигрывателе Flash Player.) Если нет доступных или установленных камер, метод возвращает значение null .
|
События
status: — Отправляется, когда камера сообщает о своем состоянии. Прежде чем получить доступ к камере, Flash Player отображает диалоговое окно с сообщением о конфиденциальности, чтобы пользователь мог разрешить или запретить доступ к своей камере. Если свойство code имеет значение Camera.Muted , пользователь отказался предоставить SWF-файлу доступ к камере. Если свойство code имеет значениеCamera.Unmuted , пользователь предоставил SWF-файлу доступ к камере.
|
Связанные элементы API
Пример ( Использование этого примера )
Метод Camera.getCamera()
возвращает ссылку на объект Camera или возвращает нуль, если камера недоступна или не установлена. Оператор if проверяет, обнаружена ли камера и предоставил ли пользователь доступ к ней. Если пользователь запрещает доступ, свойство muted
получает значение true
.
При вызове метода attachCamera()
обычно появляется диалоговое окно с запросом доступа к камере для проигрывателя Flash Player. Однако, если пользователь запретил доступ и выбрал параметр Remember
, диалоговое окно не появляется и ничего не отображается. Чтобы обеспечить пользователю возможность предоставить доступ к камере, текстовое поле 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; 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 | () | метод |
public function requestPermission():void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 24.0 |
Запрашивает разрешение на использование камеры для приложения.
События
PermissionStatus: — отправляется, когда запрашиваемое разрешение предоставляется или не предоставляется пользователем.
|
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.
|
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
|
Связанные элементы API
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 ) для локального представления камеры.
|
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
|
Связанные элементы API
setMode | () | метод |
public function setMode(width:int, height:int, fps:Number, favorArea:Boolean = true):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Задает для камеры собственный режим записи, наилучшим образом удовлетворяющий заданным требованиям. Если у камеры нет собственного режима, соответствующего всем переданным параметрам, среда выполнения выбирает режим записи, наиболее близкий к запрашиваемому режиму. При такой манипуляции изображение может обрезаться, а кадры — пропускаться.
По умолчанию среда выполнения при необходимости пропускает кадры для сохранения размера изображения. Чтобы сократить число пропускаемых кадров, даже если это делается для уменьшения размера изображения, передайте значение false
для параметра favorArea
.
При выборе собственного режима среда выполнения пытается сохранить требуемое соотношение сторон, если это возможно. Например, если передается команда myCam.setMode(400, 400, 30)
, а максимально доступные размеры камеры — 320 и 288, среда выполнения задает и ширине и высоте значение 288. Задавая свойствам одинаковые значения, среда выполнения сохраняет требуемое соотношение сторон 1:1.
Для определения значений, присвоенных этим свойствам после того, как среда выполнения выберет режим, максимально соответствующий требуемым значениям, используйте свойства 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 .
|
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
|
Связанные элементы API
Пример ( Использование этого примера )
Рабочая область не масштабируется. Метод Camera.getCamera()
возвращает ссылку на объект Camera или возвращает нуль, если камера недоступна или не установлена. Если камера существует, вызывается метод 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
. Дополнительно задает число миллисекунд, которое должно пройти без активности, прежде чем среда выполнения зарегистрирует остановку движения и отправит событие.
Примечание. Видео может отображаться независимо от значения параметра 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 ) — Задает, сколько миллисекунд должно пройти без активности, прежде чем среда выполнения определит, что активность прекратилась, и отправит событие activity . Значение по умолчанию 2000 миллисекунд (две секунды).
|
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
|
Связанные элементы API
Пример ( Использование этого примера )
Метод Camera.getCamera()
возвращает ссылку на объект Camera или возвращает нуль, если камера недоступна или не установлена. Инструкция if проверяет, доступна ли камера, и, если да, вызывает метод connectCamera()
. Метод connectCamera()
создает экземпляр объекта Video с шириной и высотой записываемого потока. Для отображения видео, записываемого с камеры, ссылка на видеопоток добавляется к объекту Video, который в свою очередь добавляется в список отображения. (При вызове метода attachCamera()
обычно появляется диалоговое окно с запросом доступа к камере для проигрывателя Flash Player. Однако, если пользователь запретил доступ и выбрал параметр Remember
, диалоговое окно не появляется и ничего не отображается. Чтобы предоставить пользователю возможность разрешить доступ к камере, используйте метод 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
. Среда выполнения передает видео с максимально высоким качеством, возможным при заданной пропускной способности. При необходимости уменьшается качество изображения, чтобы не превышать пропускную способность. Как правило, при увеличении уровня движения качество снижается. - Если предпочтение отдается качеству, передайте 0 для
bandwidth
и числовое значение дляquality
. Среда выполнения использует всю пропускную способность, необходимую для сохранения заданного качества. При необходимости снижается частота кадров для сохранения качества изображения. Как правило, при увеличении уровня движения увеличивается и использование пропускной способности. - Если пропускная способность и качество одинаково важны, передайте числовые значения для обоих параметров. Среда выполнения передает видео заданного качества, не превышающее заданной пропускной способности. При необходимости уменьшается частота кадров для сохранения качества изображения без превышения заданной пропускной способности.
Параметры
bandwidth:int — Задает максимальную пропускную способность в секунду, которую может использовать текущий исходящий видеоканал (в байтах в секунду). Чтобы указать, что среда выполнения может использовать любую пропускную способность, необходимую для сохранения значения свойства quality , передайте значение 0 для свойства bandwidth . Значением по умолчанию является 16384.
| |
quality:int — Целое число, задающее требуемый уровень качества картинки, который определяется степенью сжатия, применяемой к каждому кадру видео. Допускаются значения от 1 (самое низкое качество и максимальное сжатие) до 100 (самое высокое качество без сжатия). Чтобы указать, что качество изображения может изменяться, чтобы избежать превышения пропускной способности, передайте 0 для свойства quality .
|
Выдает
PermissionError — Приложение не имеет разрешения на использование камеры.
|
Связанные элементы API
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
.
Это событие имеет следующие свойства:
Свойство | Значение |
---|---|
activating | true , если устройство активируется, илиfalse , если деактивируется. |
bubbles | false |
cancelable | false ; поведение по умолчанию, подлежащее отмене, не определено. |
currentTarget | Объект, активно обрабатывающий объект Event с помощью прослушивателя событий. |
target | Объект, начинающий или завершающий сеанс, например объект Camera или Microphone. |
permissionStatus | Событие |
flash.events.PermissionEvent
свойство PermissionEvent.type =
flash.events.PermissionEvent.PERMISSION_STATUS
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 24.0 |
Отправляется, когда приложение запрашивает разрешение на использование камеры на устройстве. Проверяет значение свойства status
, чтобы определить, предоставлено разрешение или нет
Связанные элементы API
status | Событие |
flash.events.StatusEvent
свойство StatusEvent.type =
flash.events.StatusEvent.STATUS
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 9, AIR (unsupported) |
Отправляется, когда камера сообщает о своем состоянии. Прежде чем получить доступ к камере, среда выполнения отображает диалоговое окно с сообщением о конфиденциальности, чтобы пользователь мог разрешить или запретить доступ к своей камере. Если свойство code
имеет значение Camera.Muted
, пользователь отказался предоставить SWF-файлу доступ к камере. Если свойство code
имеет значениеCamera.Unmuted
, пользователь предоставил SWF-файлу доступ к камере.
Примечание. Это событие не отправляется на платформе AIR. Оно используется только в среде Flash Player.
Задает значение свойстваtype
для объекта события status
.
Это событие имеет следующие свойства:
Свойство | Значение |
---|---|
bubbles | false |
cancelable | false ; поведение по умолчанию, подлежащее отмене, не определено. |
code | Описание состояния объекта. |
currentTarget | Объект, активно обрабатывающий объект Event с помощью прослушивателя событий. |
level | Категория сообщения, например, status , warning или error . |
target | Объект, сообщающий свое состояние. |
Связанные элементы API
videoFrame | Событие |
flash.events.Event
свойство Event.type =
flash.events.Event.VIDEO_FRAME
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 11.4, AIR 3.4 |
Отправляется, когда новый кадр камеры обработан средой выполнения и доступен для копирования.
КонстантаEvent.VIDEO_FRAME
определяет значение свойства type
объекта события videoFrame
.
Это событие имеет следующие свойства:
Свойство | Значение |
---|---|
bubbles | false |
cancelable | false ; поведение по умолчанию, подлежащее отмене, не определено. |
target | Объект Camera, отправивший это событие. |
Связанные элементы API
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); } } }
Tue Jun 12 2018, 11:34 AM Z