Пакет | flash.net |
Класс | public class NetStream |
Наследование | NetStream EventDispatcher Object |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Класс NetStream позволяет выполнять следующие операции.
- Вызовите метод
NetStream.play()
для воспроизведения медиафайла с локального диска, веб-сервера или Flash Media Server. - Вызовите метод
NetStream.publish()
, чтобы опубликовать видеопоток, аудиопоток или поток данных на сервер Flash Media Server. - Вызовите метод
NetStream.send()
, чтобы отправить сообщения с данными всем подписавшимся клиентам. - Вызовите метод
NetStream.send()
, чтобы добавить метаданные в эфирный поток. - Вызовите метод
NetStream.appendBytes()
, чтобы передать данные ByteArray в объект NetStream.
Примечание. Поток нельзя воспроизводить и публиковать, используя один и тот же объект NetStream.
Adobe Air и Flash Player 9.0.115.0 и более поздние версии поддерживают файлы, полученные из стандартного формата контейнера MPEG-4. К таким файлам относятся F4V, MP4, M4A, MOV, MP4V, 3GP и 3G2, если они содержат видео H.264 или аудио HE-AAC v2 или и то и другое. По сравнению со схожим профилем кодирования в Sorenson или On2, формат H.264 обеспечивает более высокое качество видеоизображения при невысоких скоростях потока. AAC — это стандартный аудиоформат, определенный в видеостандарте MPEG-4. HE-AAC v2 является расширением AAC и использует приемы репликации спектральной полосы (SBR) и параметрического стерео (PS) с целью повышения эффективности кодирования при низкой скорости потока.
Дополнительные сведения о поддерживаемых кодеках и форматах файлов см. в следующих ресурсах:
- Документация по серверу Flash Media Server
- Изучение возможностей поддержки видеостандарта H.264 с высоким разрешением и аудио формата AAC во Flash Player
- Документы по открытой спецификации FLV/F4V
Получение данных из потока Flash Media Server, последовательного файла F4V или FLV
Во время потокового или последовательного воспроизведения Flash Media Server, F4V- и FLV-файлы могут отправлять объекты событий с данными при достижении определенных точек данных. Обрабатывать данные потока или FLV-файла во время воспроизведения можно двумя способами.
-
Можно связать свойство client с обработчиком события для получения объекта данных. С помощью свойства
NetStream.client
назначьте объект для вызова определенных функций обработки данных. Объект, назначенный свойствуNetStream.client
может вызвать прослушиватель для следующих точек данных:onCuePoint()
,onImageData()
,onMetaData()
,onSeekPoint()
,onPlayStatus()
,onTextData()
иonXMPData()
. Затем в этих функциях запишите процедуры для обработки объекта данных, возвращенного потоком во время воспроизведения. Дополнительные сведения см. в описанииNetStream.client
. - Свяжите свойство client с подклассом класса NetStream, а затем создайте обработчик события для получения объекта данных. NetStream представляет собой защищенный класс. Это означает, что при выполнении кода объекту NetStream не могут быть добавлены какие-либо свойства или методы. Однако можно создать подкласс класса NetStream и определить в нем обработчик событий. Этот подкласс можно также сделать динамическим и добавить обработчик события в его экземпляр.
Дождитесь получения события NetGroup.Neighbor.Connect
перед использованием API-интерфейсов репликации объекта, прямой передачи или публикации.
Примечание. Чтобы отправить данные через аудиофайл, например в формате MP3, используйте класс Sound для связи файла с объектом Sound. Затем используйте свойство Sound.id3
для считывания метаданных из звукового файла.
Поддержка видео, закодированного в формате H.264, в среде AIR for iOS
Для видео в формате H.264 среда AIR 3.0 (и более поздних версий) для ОС iOS поддерживает поднабор всего API-интерфейса NetStream. В следующей таблице перечислены элементы NetStream для воспроизведения, которые не поддерживаются в среде AIR for iOS:
Неподдерживаемые свойства | Неподдерживаемые методы | Неподдерживаемые события |
---|---|---|
bufferTime | appendBytes() | onCuePoint (работает только с FLV-файлами) |
bufferLength | appendBytesAction() | onImageData |
backBufferTime | step() | onSeekPoint |
backBufferLength | onTextData | |
bufferTimeMax | onXMPData | |
bytesLoaded | drmError | |
currentFPS | drmStatus | |
inBufferSeek | onDRMContentData | |
info | drmAuthenticate | |
liveDelay | Код ошибки состояния DRM.encryptedFLV | |
maxPauseBufferTime | ||
soundTransform | ||
Все свойства, описывающие соединения RTMFP |
Дополнительные сведения об использовании среды AIR для ОС iOS см. в описании метода NetStream.play()
.
Связанные элементы API
Свойство | Определено | ||
---|---|---|---|
audioReliable : Boolean
Для подключений RTMFP указывает, отправляется ли аудио с обеспечением полной надежности. | NetStream | ||
audioSampleAccess : Boolean
Для подключений RTMFP определяет разрешено ли абонентам одноранговой сети в данном объекте NetStream захватывать аудиопоток. | NetStream | ||
backBufferLength : Number [только для чтения]
Число секунд ранее воспроизведенных ранее данных, которое данный момент сохраняется в кэше для перемотки назад. | NetStream | ||
backBufferTime : Number
Указывает, какой объем воспроизведенных данных Flash Player пытается сохранить в кэше для перемотки назад (в секундах). | NetStream | ||
bufferLength : Number [только для чтения]
Число секунд данных, в настоящий момент находящихся в буфере. | NetStream | ||
bufferTime : Number
Определяет, как долго сообщения должны накапливаться в буфере до начала отображения потока. | NetStream | ||
bufferTimeMax : Number
Задает максимальную длину буфера для транслируемого потокового содержимого (в секундах). | NetStream | ||
bytesLoaded : uint [только для чтения]
Число байт данных, загруженных в приложение. | NetStream | ||
bytesTotal : uint [только для чтения]
Общий размер файла, загружаемого в приложение (в байтах). | NetStream | ||
checkPolicyFile : Boolean
Указывает, пытается ли приложение загрузить файл междоменных политик с сервера загружаемого видеофайла перед началом загрузки самого файла. | NetStream | ||
client : Object
Задает объект, для которого вызываются методы обратного вызова для обработки потоковой передачи или данных F4V/FLV-файла. | NetStream | ||
constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object | ||
currentFPS : Number [только для чтения]
Число кадров, отображаемых за одну секунду. | NetStream | ||
dataReliable : Boolean
Для подключений RTMFP указывает, отправляются ли вызовы NetStream.send() с обеспечением полной надежности. | NetStream | ||
farID : String [только для чтения]
Для подключений RTMFP это идентификатор удаленного узла, подключенного к данному экземпляру NetStream. | NetStream | ||
farNonce : String [только для чтения]
Для подключений RTMFP и RTMPE это значение, выбираемое главным образом на другом конце данного потока, уникальное для данного подключения. | NetStream | ||
inBufferSeek : Boolean
Указывает, сохраняются воспроизведенные данные в кэше для интеллектуального поиска (TRUE) или нет (FALSE). | NetStream | ||
info : NetStreamInfo [только для чтения]
Возвращает объект NetStreamInfo, свойства которого содержат статистические данные о качестве обслуживания. | NetStream | ||
liveDelay : Number [только для чтения]
Число секунд данных в буфере подписывающего потока в режиме реального времени (небуферизованном). | NetStream | ||
maxPauseBufferTime : Number
Задает время буферизации сообщений во время режима паузы (в секундах). | NetStream | ||
multicastAvailabilitySendToAll : Boolean
Для подключений RTMFP, определяет способ отправки сообщений о доступности фрагментов для одноранговой многоадресной передачи: всем одноранговым узлам или только одному. | NetStream | ||
multicastAvailabilityUpdatePeriod : Number
Для подключений RTMFP, определяет интервал в секундах между сообщениями, которые отправляются одноранговым узлам и информируют о том, что на локальном узле доступны новые фрагменты медиасодержимого для одноранговой многоадресной передачи. | NetStream | ||
multicastFetchPeriod : Number
Для подключений RTMFP определяет время в секундах с того момента, когда локальный узел узнает о доступности фрагмента медиасодержимого для одноранговой многоадресной передачи, и до попытки получения этого фрагмента от однорангового узла. | NetStream | ||
multicastInfo : NetStreamMulticastInfo [только для чтения]
Для подключений RTMFP возвращает объект NetStreamMulticastInfo, свойства которого содержат статистику о качестве обслуживания. | NetStream | ||
multicastPushNeighborLimit : Number
Для подключений RTMFP определяет максимальное число одноранговых узлов для предварительной загрузки медиасодержимого, предназначенного для многоадресной передачи. | NetStream | ||
multicastRelayMarginDuration : Number
Для подключений RTMFP определяет время в секундах, в течение которого данные одноранговой многоадресной передачи остаются доступными для отправки узлам, запрашивающих его после отведенного времени. | NetStream | ||
multicastWindowDuration : Number
Для подключений RTMFP определяет время в секундах для обновления окна при одноранговой многоадресной передачи. | NetStream | ||
nearNonce : String [только для чтения]
Для подключений RTMFP и RTMPE это значение, выбираемое главным образом на данном конце данного потока, уникальное для данного подключения. | NetStream | ||
objectEncoding : uint [только для чтения]
Кодировка объекта (версия AMF) для данного объекта NetStream. | NetStream | ||
peerStreams : Array [только для чтения]
Объект, содержащий все подписывающие экземпляры NetStream, прослушивающие этот публикующий экземпляр NetStream. | NetStream | ||
soundTransform : flash.media:SoundTransform
Управляет звуком в данном объекте NetStream. | NetStream | ||
time : Number [только для чтения]
Положение точки воспроизведения (в секундах). | NetStream | ||
useHardwareDecoder : Boolean
Указывает необходимость использования аппаратно-ускоренного декодирования в потоке. | NetStream | ||
useJitterBuffer : Boolean
Уменьшите задержку для интерактивной небуферизованной потоковой передачи (bufferTime = 0). | NetStream | ||
videoReliable : Boolean
Для подключений RTMFP указывает, отправляется ли видео с обеспечением полной надежности. | NetStream | ||
videoSampleAccess : Boolean
Для подключений RTMFP определяет разрешено ли абонентам одноранговой сети в данном объекте NetStream захватывать видеопоток. | NetStream | ||
videoStreamSettings : VideoStreamSettings
Укажите свойства сжатия потока. | NetStream |
Метод | Определено | ||
---|---|---|---|
Создает поток, который можно использовать для воспроизведения медиафайлов и отправки данных через объект NetConnection. | NetStream | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Регистрирует объект прослушивателя события на объекте EventDispatcher для получения прослушивателем уведомления о событии. | EventDispatcher | ||
Передает объект ByteArray в экземпляр NetStream для воспроизведения. | NetStream | ||
Указывает на отсутствие непрерывности временной шкалы, опустошает буфер FIFO и предписывает анализатору байт ожидать заголовок файла или начало тега FLV. | NetStream | ||
Присоединяет поток к новому объекту NetConnection. | NetStream | ||
Присоединяет аудиопоток, отправляемый через объект NetStream из объекта Microphone, переданного в качестве источника. | NetStream | ||
Начинает захват видео с видеокамеры, либо останавливает запись, если параметр theCamera имеет значение null. | NetStream | ||
Останавливает воспроизведение всех данных в потоке, присваивает свойству time значение 0 и делает поток доступным для использования. | NetStream | ||
Посылает событие в поток событий. | EventDispatcher | ||
Высвобождает все ресурсы, удерживаемые объектом NetStream. | NetStream | ||
Проверяет, имеет ли объект EventDispatcher прослушиватели, зарегистрированные для определенного типа события. | EventDispatcher | ||
Показывает, определено ли заданное свойство для объекта. | Object | ||
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | ||
Вызывается, когда поток одноранговой публикации совпадает с потоком одноранговой подписки. | NetStream | ||
Приостанавливает воспроизведение видеопотока. | NetStream | ||
Воспроизводит медиафайл из локального каталога или с веб-сервера; воспроизводит медиафайл или эфирный поток с сервера Flash Media Server. | NetStream | ||
Незаметно переключает файлы с различной скоростью передачи данных и обеспечивает возобновление NetStream в случае обрыва и восстановления подключения. | NetStream | ||
Извлекает метаданные DRM из локального мультимедийного файла. | NetStream | ||
Показывает наличие заданного свойства и его перечисляемость. | Object | ||
Отправляет потоковое аудио, видео и сообщения с данными от клиента на сервер Flash Media Server, также может записывать поток в ходе передачи. | NetStream | ||
Определяет, воспроизводится ли входящий звук в потоке. | NetStream | ||
Определяет, воспроизводится ли входящее видео в потоке. | NetStream | ||
Указывает частоту кадров для входящего видео. | NetStream | ||
Удаляет прослушиватель из объекта EventDispatcher. | EventDispatcher | ||
[статические]
В приложениях AIR это приводит к удалению всех локально кэшированных данных ваучеров управления цифровыми правами (DRM). | NetStream | ||
Возобновляет воспроизведение приостановленного видеопотока. | NetStream | ||
Осуществляет поиск ключевого кадра (так называемого I-кадра), расположенного ближе всего к указанной точке. | NetStream | ||
Отправляет сообщение по опубликованному потоку всем подписавшимся клиентам. | NetStream | ||
Задает учетные данные для прохождения аутентификации DRM, необходимой для просмотра соответствующего зашифрованного содержимого. | NetStream | ||
Задает доступность динамического свойства для операций цикла. | Object | ||
Переходит вперед или назад на указанное число кадров относительно отображаемого в данный момент кадра. | NetStream | ||
Приостанавливает или возобновляет воспроизведение потока. | NetStream | ||
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали. | Object | ||
Возвращает строковое представление заданного объекта. | Object | ||
Возвращает элементарное значение заданного объекта. | Object | ||
Проверяет, зарегистрирован ли прослушиватель события для указанного типа события с данным объектом EventDispatcher или любым его предшественником. | EventDispatcher |
Событие | Сводка | Определено | ||
---|---|---|---|---|
[многоадресное событие] Отправляется, когда проигрыватель Flash Player или приложение AIR перемещается в фокус операционной системы и становится активным. | EventDispatcher | |||
Отправляется, когда исключение создается асинхронным образом — то есть в коде, изначально имеющем асинхронную природу. | NetStream | |||
[многоадресное событие] Отправляется, когда проигрыватель Flash Player или приложение AIR теряет фокус системы и становится неактивным. | EventDispatcher | |||
Отправляется, когда объект NetStream пытается воспроизвести содержимое, зашифрованное с помощью технологии управления цифровыми правами (DRM) и требующее ввода учетных данных пользователя для проверки подлинности перед воспроизведением. | NetStream | |||
Отправляется, когда объект NetStream, пытающийся воспроизвести файл с DRM-шифрованием, сталкивается с ошибкой, связанной с DRM. | NetStream | |||
Отправляется при начале воспроизведения содержимого, зашифрованного с помощью технологии управления цифровыми правами (DRM) (когда пользователь проходит аутентификацию и получает право на просмотр содержимого). | NetStream | |||
Отправляется, когда происходит ошибка ввода-вывода, приводящая к сбою сетевой операции. | NetStream | |||
Отправляется при воспроизведении видеоконтента и обработке определенных типов сообщений. | NetStream | |||
Отправляется, когда объект NetStream сообщает о своем состоянии или о случившейся ошибке. | NetStream | |||
Добавляет прослушиватель, реагирующий на достижение встроенной ключевой точки во время воспроизведения видеофайла. | NetStream | |||
Добавляет прослушиватель событий, реагирующий на извлечение приложением AIR метаданных DRM-содержимого, внедренных в мультимедийный файл. | NetStream | |||
Добавляет прослушиватель событий, реагирующий на получение проигрывателем Flash Player графических данных в виде массива байтов, встроенного в воспроизводимый мультимедийный файл. | NetStream | |||
Добавляет прослушиватель, реагирующий на получение проигрывателем Flash Player описательной информации, встроенной в воспроизводимое видео. | NetStream | |||
Добавляет прослушиватель, который реагирует на завершение воспроизведения потока объектом NetStream. | NetStream | |||
Вызывается синхронно с appendBytes(), когда в ходе разбора встречается точка, которая рассматривается как возможная точка поиска (например, ключевой кадр видеоролика). | NetStream | |||
Добавляет прослушиватель событий, реагирующий на получение проигрывателем Flash Player текстовых данных, встроенных в воспроизводимый мультимедийный файл. | NetStream | |||
Устанавливает прослушиватель, реагирующий на получение проигрывателем Flash Player информации о платформе Adobe Extensible Metadata Platform (XMP), встроенной в воспроизводимое видео. | NetStream | |||
Отправляется при попытке приложения воспроизвести содержимое, зашифрованное с помощью технологии управления цифровыми правами (DRM), путем вызова метода NetStream.play(). | NetStream |
Константа | Определено | ||
---|---|---|---|
CONNECT_TO_FMS : String = "connectToFMS" [статические]
Статический объект, передаваемый в качестве параметра конструктору для экземпляра NetStream. | NetStream | ||
DIRECT_CONNECTIONS : String = "directConnections" [статические]
Создает подключение между одноранговыми издателями | NetStream |
audioReliable | свойство |
audioReliable:Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Для подключений RTMFP указывает, отправляется ли аудио с обеспечением полной надежности. Когда имеет значение TRUE, все аудиоданные передаются через этот объект NetStream с обеспечением полной надежности. Когда имеет значение FALSE, надежность передаваемых аудиоданных не обеспечивается, вместо этого аудио передается в течение ограниченного времени, а затем обрывается. Можно использовать значение FALSE, чтобы уменьшить время ожидания за счет качества звука.
Попытка задать этому свойству значение FALSE при использовании сетевого протокола, который не поддерживает частичную надежность, игнорируется, и свойству задается значение TRUE.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Реализация
public function get audioReliable():Boolean
public function set audioReliable(value:Boolean):void
Связанные элементы API
audioSampleAccess | свойство |
audioSampleAccess:Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Для подключений RTMFP определяет разрешено ли абонентам одноранговой сети в данном объекте NetStream захватывать аудиопоток. Когда имеет значение FALSE, при попытке абонента захватить аудиопоток выводятся ошибки прав доступа.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Реализация
public function get audioSampleAccess():Boolean
public function set audioSampleAccess(value:Boolean):void
Связанные элементы API
backBufferLength | свойство |
backBufferLength:Number
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Число секунд ранее воспроизведенных ранее данных, которое данный момент сохраняется в кэше для перемотки назад.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Это свойство доступно, только когда поток данных передается с сервера Flash Media Server 3.5.3 или более поздней версии; дополнительные сведения о Flash Media Server см. в описании класса.
Чтобы задать размер кэша для воспроизведенных ранее данных, используйте свойства Netstream.backBufferTime
.
Чтобы предотвратить кэширование данных, задайте свойству Netstream.inBufferSeek
значение FALSE.
Реализация
public function get backBufferLength():Number
Связанные элементы API
backBufferTime | свойство |
backBufferTime:Number
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Указывает, какой объем воспроизведенных данных Flash Player пытается сохранить в кэше для перемотки назад (в секундах). Значение по умолчанию составляет 30 секунд для настольных приложений и 3 секунды для мобильных приложений.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Это свойство доступно, только когда поток данных передается с сервера Flash Media Server 3.5.3 или более поздней версии; дополнительные сведения о Flash Media Server см. в описании класса.
Использование этого свойства улучшает быстродействие при перемотке назад, так как воспроизведенные ранее данные не требуется снова получать с сервера. Вместо этого поток повторно воспроизводится из буфера. Во время воспроизведения продолжается загрузка потоковых данных с сервера, пока буфер не будет заполнен.
Если позиция перемотки назад находится намного дальше, чем имеющиеся данные в кэше, буфер опустошается. После этого начинается потоковая передача данных с сервера с указанной точки.
Чтобы использовать это свойство, задайте для Netstream.inBufferSeek
значение TRUE.
Реализация
public function get backBufferTime():Number
public function set backBufferTime(value:Number):void
Связанные элементы API
bufferLength | свойство |
bufferLength:Number
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Число секунд данных, в настоящий момент находящихся в буфере. Используя данное свойство вместе со свойством bufferTime
, можно определить, насколько близок момент полного заполнения буфера (это необходимо, например, чтобы оповестить пользователя, ожидающего загрузки данных в буфер).
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Реализация
public function get bufferLength():Number
Связанные элементы API
bufferTime | свойство |
bufferTime:Number
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Определяет, как долго сообщения должны накапливаться в буфере до начала отображения потока.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
По умолчанию используется значение 0,1 (одна десятая секунды). Определить количество секунд, которые в данный момент находятся в буфере, можно с помощью свойства bufferLength
.
Чтобы запустить список воспроизведения с сервера, значение свойства bufferTime
должно быть не меньше 1 секунды. Если возникают проблемы с воспроизведением, увеличьте значение свойства bufferTime
.
Записанное содержимое. Во избежание искажения при потоковой передаче предварительно записанного (не эфирного) содержимого, не задавайте для NetStream.bufferTime
значение 0. По умолчанию приложение использует входящий буфер для предварительно записанного содержимого, который ставит данные мультимедиа в очередь и надлежащим образом их воспроизводит. Для предварительно записанного содержимого используйте параметр по умолчанию или увеличьте время буферизации.
Эфирное содержимое. При потоковой передаче видео в реальном времени, задайте свойству bufferTime
значение 0.
Начиная с версии 9.0.115.0, проигрыватель Flash Player больше не очищает буфер при вызове метода NetStream.pause()
. До версии 9.0.115.0, перед тем как продолжить воспроизведение, проигрыватель Flash Player находился в ожидании заполнения буфера, что часто вызывало задержку.
Для одиночной паузы свойство NetStream.bufferLength
имеет ограничение в 60 секунд или удвоенное значение параметра NetStream.bufferTime
(выбирается большее значение из двух). Например, если параметр bufferTime
равен 20 секундам, то проигрыватель Flash Player заполняет буфер до тех пор, пока NetStream.bufferLength
не примет верхнее значение 20*2 (40) или 60. В данном случае, буферизация проводится до того, как параметр bufferLength
не будет иметь значение 60. Если параметр bufferTime
равен 40 секундам, то проигрыватель Flash Player заполняет буфер до тех пор, пока bufferLength
не примет верхнее значение 40*2 (80) или 60. В этом случае буферизация проводится до того, как параметр bufferLength
не будет иметь значение 80.
Свойство bufferLength
также имеет абсолютный предел. Если любой вызов pause()
приводит к тому, что значение параметра bufferLength
увеличивается на 600 секунд или на значение bufferTime
* 2 (выбирается наибольшее из двух), проигрыватель Flash Player очищает буфер и устанавливает для параметра bufferLength
значение, равное 0. Например, если значение параметра bufferTime
равно 120 секундам, проигрыватель Flash Player заполняет буфер до тех пор, пока параметр bufferLength
не примет значение в 600 секунд. Если значение параметра bufferTime
- 360 секунд, то Flash Player заполняет буфер до тех пор, пока bufferLength
не станет равным 720 секундам.
Совет: Метод NetStream.pause()
можно использовать в коде для буферизации данных в тот момент, например, когда зрители смотрят рекламу, и последующего воспроизведения потока в начале основной видеопрограммы.
Дополнительные сведения о новых возможностях механизма паузы см. по адресу http://www.adobe.com/go/learn_fms_smartpause_ru.
Flash Media Server. Поведение буфера зависит от того, в отношении какого потока установлено время буферизации: публикующего или подписывающего. Для публикующего потока параметр bufferTime
указывает, как долго может расширяться исходящий буфер до тех пор, пока приложение не начнет пропускать кадры. При высокоскоростном подключении время буферизации не столь важно, так как данные будут отправляться настолько же быстро, насколько быстро приложение сможет поместить их в буфер. Однако при медленном подключении может появиться существенная разница между тем, как быстро приложение помещает данные в буфер, и тем, с какой скоростью эти данные отправляются клиенту.
Для подписывающего потока параметр bufferTime
указывает, как долго может происходить буферизация входящих данных до того, как поток будет отображаться на экране.
Если при воспроизведении записанного потока параметр bufferTime
равен нулю, то проигрыватель Flash устанавливает для него малое значение (приблизительно 10 миллисекунд). Если в дальнейшем воспроизводятся (например, из списка воспроизведения) потоки в реальном времени, данное значение времени буферизации не меняется. Другими словами, параметр bufferTime
остается для потока ненулевым.
Реализация
public function get bufferTime():Number
public function set bufferTime(value:Number):void
Связанные элементы API
bufferTimeMax | свойство |
bufferTimeMax:Number
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Задает максимальную длину буфера для транслируемого потокового содержимого (в секундах). Значением по умолчанию является 0. Длина буфера может увеличиваться со временем в результате проблем с сетью или устройством (например, несовпадение времени, заданного для часов отправителя и получателя). Задайте это свойство для ограничения длины буфера для эфирных приложений, таких как собрания или наблюдение.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Когда bufferTimeMax > 0
и bufferLength >= bufferTimeMax
, аудио воспроизводится быстрее, пока bufferLength
не сравняется с bufferTime
. Если эфирный поток содержит только видео, оно воспроизводится быстрее, пока bufferLength
не сравняется с bufferTime
.
В зависимости от того, насколько запаздывает воспроизведение (разница между bufferLength
и bufferTime
), Flash Player выбирает скорость наверстывания в пределах 1,5—6,25 %. Если поток содержит аудио, более быстрое воспроизведение достигается путем субдискретизации диапазона частот, что уменьшает слышимое искажение.
Задайте свойство bufferTimeMax
, чтобы включить наверстывание буферизованного эфирного потока в следующих случаях:
- потоковая передача эфирного медиасодержимого с сервера Flash Media Server;
- потоковая передача эфирного медиасодержимого в режиме создания данных (
NetStream.appendBytes()
).
Реализация
public function get bufferTimeMax():Number
public function set bufferTimeMax(value:Number):void
Связанные элементы API
bytesLoaded | свойство |
bytesLoaded:uint
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Число байт данных, загруженных в приложение. Используя данное свойство вместе со свойством bytesTotal
, можно определить, насколько близок момент полного заполнения буфера (это необходимо, например, чтобы оповестить пользователя, ожидающего загрузки данных в буфер).
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Реализация
public function get bytesLoaded():uint
Связанные элементы API
bytesTotal | свойство |
checkPolicyFile | свойство |
checkPolicyFile:Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Указывает, пытается ли приложение загрузить файл междоменных политик с сервера загружаемого видеофайла перед началом загрузки самого файла. Используйте это свойство для последовательной загрузки видео, а также для загрузки файлов, которые находятся за пределами домена вызывающего SWF-файла. Это свойство игнорируется, когда используется RTMP.
Задайте этому свойству значение true
, чтобы вызвать метод BitmapData.draw()
для видеофайла, который загружен не из домена вызывающего SWF-файла. Метод BitmapData.draw()
обеспечивает доступ к видеосодержимому на уровне пикселей. При вызове BitmapData.draw()
без установки значения true
для параметра checkPolicyFile
во время загрузки можно получить исключение SecurityError
, так как требуемый файл политик не был загружен.
Этому свойству следует задавать значение true, только если для загружаемого видеофайла требуется доступ на уровне пикселей. Проверка наличия файла политик снижает пропускную способность сети и может задержать начало загрузки.
При вызове метода NetStream.play()
, в котором параметр checkPolicyFile
имеет значение true
, приложение Flash Player или AIR должно успешно загрузить соответствующий файл междоменных политик или определить, что такой файл не существует, и только потом перейти к загрузке объекта. Чтобы убедиться в существовании файла политик, приложение Flash Player или AIR выполняет следующие действия в указанном ниже порядке:
- Приложение анализирует ранее загруженные файлы политик.
- Приложение пытается загрузить любые файлы действующих политик, указанные в вызовах метода
Security.loadPolicyFile()
. - Приложение производит попытку загрузить файл политик из местоположения по умолчанию, которое соответствует URL-адресу, переданному
NetStream.play()
(файл/crossdomain.xml
на том же сервере, что и данный URL-адрес).
Во всех случаях для работы Flash Player или Adobe AIR требуется, чтобы на сервере видеоданных существовал подходящий файл политики, чтобы он предоставлял доступ к объекту по URL-адресу, переданному методу play()
на основе места размещения файла политики, а также, чтобы он обеспечивал домену вызывающего файла доступ к видео посредством одного или нескольких тегов <allow-access-from>
.
Если установить для параметра checkPolicyFile
значение true
, то перед тем как загрузить видео, приложение будет ожидать проверки файла политики. Чтобы выполнять какие-либо операции по обработке видеоданных на уровне пикселей (например, вызов BitmapData.draw()
), следует дождаться получения от своего объекта NetStream событий onMetaData
или NetStatus
.
Если для параметра checkPolicyFile
задано значение true
, но при этом соответствующий файл политики не найден, сообщение об ошибке не будет получено до тех пор, пока не будет выполнена операция, требующая файл политики, после чего приложение выдаст исключение SecurityError.
Будьте внимательны при установке параметра checkPolicyFile
, если вы загружаете файл с URL-адреса, в котором используется HTTP-переадресация на стороне сервера. Приложение предпринимает попытку извлечь файлы политики, соответствующие первоначальному URL-адресу, который указывается в NetStream.play()
. Если из-за HTTP-переадресации конечный файл поступает с другого URL-адреса, первоначально загруженные файлы политик могут не применяться в отношении конечного URL-адреса файла. С точки зрения безопасности, именно этот URL-адрес представляет большую важность.
Дополнительные сведения о файлах политик см. в главе «Элементы управления веб-сайтом (файлы политики)» в Руководстве разработчика по ActionScript 3.0, а также в разделе центра разработчиков Flash Player Developer Center: Безопасность.
Реализация
public function get checkPolicyFile():Boolean
public function set checkPolicyFile(value:Boolean):void
Связанные элементы API
client | свойство |
client:Object
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Задает объект, для которого вызываются методы обратного вызова для обработки потоковой передачи или данных F4V/FLV-файла. Объект по умолчанию: this
(создаваемый объект NetStream). Если в свойстве client
указать другой объект, методы обратного вызова будут вызываться на этом другом объекте. Объект NetStream.client
может вызывать следующие функции и получать связанный объект данных: onCuePoint()
, onImageData()
, onMetaData()
, onPlayStatus()
, onSeekPoint()
, onTextData()
и onXMPData()
.
Чтобы связать свойство client
с обработчиком событий, выполните следующие действия.
- Создайте объект и назначьте его свойству
client
объекта NetStream:var customClient:Object = new Object(); my_netstream.client = customClient;
- Назначьте функцию обработчика для нужного события данных в качестве свойства объекта Client:
customClient.onImageData = onImageDataHandler;
- Напишите функцию обработчика для получения объекта события данных, такого как:
public function onImageDataHandler(imageData:Object):void { trace("imageData length: " + imageData.data.length); }
Когда данные передаются через поток или при воспроизведении, объект события данных (в данном случае это объект imageData
) заполняется данными. См. описание onImageData
, содержащее полный пример объекта, назначенного свойству client
.
Чтобы связать свойство client
с подклассом, выполните следующие действия.
- Создайте подкласс с функцией обработчика, чтобы получить объект события данных:
class CustomClient { public function onMetaData(info:Object):void { trace("metadata: duration=" + info.duration + " framerate=" + info.framerate); }
- Назначьте экземпляр подкласса свойству
client
объекта NetStream:my_netstream.client = new CustomClient();
Когда данные передаются через поток или при воспроизведении, объект события данных (в данном случае это объект info
) заполняется данными. В конце описания класса NetStream приводится пример, демонстрирующий назначение экземпляра подкласса свойству client
.
Реализация
public function get client():Object
public function set client(value:Object):void
Выдает
TypeError — В качестве свойства client должен быть указан объект, имеющий значение, отличное от null.
|
Связанные элементы API
currentFPS | свойство |
currentFPS:Number
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Число кадров, отображаемых за одну секунду. При экспорте видеофайлов для воспроизведения на нескольких системах можно проверить это значение в процессе тестирования, чтобы определить, какой уровень сжатия необходим при экспортировании файла.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Реализация
public function get currentFPS():Number
dataReliable | свойство |
dataReliable:Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Для подключений RTMFP указывает, отправляются ли вызовы NetStream.send()
с обеспечением полной надежности. Когда имеет значение TRUE, вызовы NetStream.send()
передаются через этот объект NetStream с обеспечением полной надежности. Когда имеет значение FALSE, вызовы NetStream.send()
передаются без обеспечения полной надежности. Вместо этого они передаются в течение ограниченного времени, а затем обрываются. Можно использовать значение FALSE, чтобы уменьшить время ожидания за счет качества данных.
Попытка задать этому свойству значение FALSE при использовании сетевого протокола, который не поддерживает частичную надежность, игнорируется, и свойству задается значение TRUE.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Реализация
public function get dataReliable():Boolean
public function set dataReliable(value:Boolean):void
Связанные элементы API
farID | свойство |
farID:String
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Для подключений RTMFP это идентификатор удаленного узла, подключенного к данному экземпляру NetStream.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Реализация
public function get farID():String
farNonce | свойство |
farNonce:String
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Для подключений RTMFP и RTMPE это значение, выбираемое главным образом на другом конце данного потока, уникальное для данного подключения. Это значение появляется на другом конце потока в качестве его значения nearNonce
.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Реализация
public function get farNonce():String
inBufferSeek | свойство |
inBufferSeek:Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Указывает, сохраняются воспроизведенные данные в кэше для интеллектуального поиска (TRUE
) или нет (FALSE
). Значение по умолчанию FALSE.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Flash Media Server 3.5.3 и Flash Player 10.1 совместно обеспечивают поддержку интеллектуального поиска. При интеллектуальном поиске используются задний и передний буферы для выполнения поиска без запроса данных с сервера. При стандартном поиске буфер опустошается, и запрашиваются новые данные с сервера в момент поиска
Вызовите метод NetStream.step()
, чтобы перемещаться вперед или назад на указанное число кадров. Вызовите метод NetStream.seek()
, чтобы переходить вперед или назад на указанное число секунд.
При интеллектуальном поиске уменьшается нагрузка на сервер, и увеличивается производительность поиска. Задайте inBufferSeek=true
и вызовите методы step()
и seek()
, чтобы создать:
- Клиентскую функцию DVR. Выполняйте поиск в клиентском буфере, вместо запроса нового пакета видеоданных с сервера
- Особые режимы. Создавайте проигрыватели, которые могут выполнять перемещение через указанное число кадров, перемотку назад и в перед, а также замедленное воспроизведение.
Когда задано inBufferSeek=true
и успешно вызывается метод NetStream.seek()
, свойство info.description
объекта NetStatusEvent содержит строку "client-inBufferSeek"
.
Когда успешно вызывается NetStream.step()
, свойство info.code
объекта NetStatusEvent содержит строку "NetStream.Step.Notify"
.
Реализация
public function get inBufferSeek():Boolean
public function set inBufferSeek(value:Boolean):void
Связанные элементы API
info | свойство |
info:NetStreamInfo
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Возвращает объект NetStreamInfo, свойства которого содержат статистические данные о качестве обслуживания. Объект представляет собой снимок текущего состояния.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Реализация
public function get info():NetStreamInfo
Связанные элементы API
liveDelay | свойство |
liveDelay:Number
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Число секунд данных в буфере подписывающего потока в режиме реального времени (небуферизованном). Данное свойство указывает текущую задержку в сетевой передаче данных (время запаздывания).
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Данное свойство используется преимущественно для работы с сервером Flash Media Server (более подробную информацию см. в описании класса).
С помощью значения этого свойства можно приблизительно измерить качество передачи потока и сообщить результат пользователю.
Реализация
public function get liveDelay():Number
maxPauseBufferTime | свойство |
maxPauseBufferTime:Number
Версии среды выполнения: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Задает время буферизации сообщений во время режима паузы (в секундах). Это свойство можно использовать для ограничения времени буферизации во время режима паузы. По достижении предельного значения NetStream.bufferLength
буферизация прекращается.
Если это значение не задано, по умолчанию используется ограничение 60 секунд или удвоенное значение NetStream.bufferTime
при каждой паузе в зависимости от того, какое значение выше.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Реализация
public function get maxPauseBufferTime():Number
public function set maxPauseBufferTime(value:Number):void
Связанные элементы API
multicastAvailabilitySendToAll | свойство |
multicastAvailabilitySendToAll:Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Для подключений RTMFP, определяет способ отправки сообщений о доступности фрагментов для одноранговой многоадресной передачи: всем одноранговым узлам или только одному. Если имеет значение TRUE, сообщения отправляются всем одноранговым узлам через заданный интервал времени. Если имеет значение FALSE, сообщения отправляются только одному одноранговому узлу через заданный интервал времени. Интервал определяется свойством multicastAvailabilityUpdatePeriod
.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Реализация
public function get multicastAvailabilitySendToAll():Boolean
public function set multicastAvailabilitySendToAll(value:Boolean):void
Связанные элементы API
multicastAvailabilityUpdatePeriod | свойство |
multicastAvailabilityUpdatePeriod:Number
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Для подключений RTMFP, определяет интервал в секундах между сообщениями, которые отправляются одноранговым узлам и информируют о том, что на локальном узле доступны новые фрагменты медиасодержимого для одноранговой многоадресной рассылки. Большие значения могут увеличить эффективность пакетирования и уменьшить переполнение из-за управляющей информации, но они могут снизить качество на получающем конце в результате сокращения времени, доступного для извлечения фрагментов перед выводом на экран. Более низкие значения могут сократить время ожидание и улучшить качество, но при этом увеличивается переполнение из-за управляющей информации.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Реализация
public function get multicastAvailabilityUpdatePeriod():Number
public function set multicastAvailabilityUpdatePeriod(value:Number):void
Связанные элементы API
multicastFetchPeriod | свойство |
multicastFetchPeriod:Number
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Для подключений RTMFP определяет время в секундах с того момента, когда локальный узел узнает о доступности фрагмента медиасодержимого для одноранговой многоадресной передачи, и до попытки получения этого фрагмента от однорангового узла. Это значение позволяет предварительно загрузить фрагмент на локальный узел, прежде чем одноранговый узел попытается получить его. Кроме того, оно позволяет объявить о наличии фрагмента нескольким узлам, чтобы нагрузку получения можно было распределить между несколькими узлами.
Большие значения могут улучшить распределение нагрузки и равнодоступность в одноранговой сетке, но вместе с тем сокращать значение multicastWindowDuration
и увеличивать время ожидания. Меньшие значения могут уменьшить время ожидания, когда требуется выполнить получение, но при этом может увеличить процент получения повторяющихся данных и ухудшить распределение нагрузки в одноранговой сетке.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Реализация
public function get multicastFetchPeriod():Number
public function set multicastFetchPeriod(value:Number):void
Связанные элементы API
multicastInfo | свойство |
multicastInfo:NetStreamMulticastInfo
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Для подключений RTMFP возвращает объект NetStreamMulticastInfo, свойства которого содержат статистику о качестве обслуживания. Объект представляет собой снимок текущего состояния.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Реализация
public function get multicastInfo():NetStreamMulticastInfo
Связанные элементы API
multicastPushNeighborLimit | свойство |
multicastPushNeighborLimit:Number
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Для подключений RTMFP определяет максимальное число одноранговых узлов для предварительной загрузки медиасодержимого, предназначенного для многоадресной передачи.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Реализация
public function get multicastPushNeighborLimit():Number
public function set multicastPushNeighborLimit(value:Number):void
multicastRelayMarginDuration | свойство |
multicastRelayMarginDuration:Number
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Для подключений RTMFP определяет время в секундах, в течение которого данные одноранговой многоадресной передачи остаются доступными для отправки узлам, запрашивающих его после отведенного времени. Время определяется свойством multicastWindowDuration
.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Реализация
public function get multicastRelayMarginDuration():Number
public function set multicastRelayMarginDuration(value:Number):void
Связанные элементы API
multicastWindowDuration | свойство |
multicastWindowDuration:Number
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Для подключений RTMFP определяет время в секундах для обновления окна при одноранговой многоадресной передачи. Меньшие значения сокращают время ожидания, но при этом может ухудшиться качество, так как отведенного времени может быть недостаточно для получения всех фрагментов. Большие значения, напротив, могут увеличить качество, предоставляя больше времени на получение всех фрагментов, хотя при этом увеличивается время ожидания.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Реализация
public function get multicastWindowDuration():Number
public function set multicastWindowDuration(value:Number):void
Связанные элементы API
nearNonce | свойство |
nearNonce:String
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Для подключений RTMFP и RTMPE это значение, выбираемое главным образом на данном конце данного потока, уникальное для данного подключения. Это значение появляется на другом конце потока в качестве его значения farNonce
.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Реализация
public function get nearNonce():String
objectEncoding | свойство |
objectEncoding:uint
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Кодировка объекта (версия AMF) для данного объекта NetStream. Объект NetStream наследует значение objectEncoding
от соответствующего объекта NetConnection. Необходимо хорошо понимать назначение этого свойства, если вашему SWF-файлу версии ActionScript 3.0 требуется обмен данными с серверами, программное обеспечение которых было выпущено до выхода Flash Player версии 9. Дополнительные сведения см. в описании свойства objectEncoding
для класса NetConnection.
Значение этого свойства зависит от того, каким является данный поток — локальным или удаленным. Локальные потоки, в которых значение null
было передано методу NetConnection.connect()
, возвращают значение NetConnection.defaultObjectEncoding
. Удаленные потоки возвращают кодировку объекта для подключения к серверу.
При попытке прочитать это свойство при отсутствии подключения или при попытке его изменить приложение выдаст исключение.
Реализация
public function get objectEncoding():uint
Связанные элементы API
peerStreams | свойство |
soundTransform | свойство |
soundTransform:flash.media:SoundTransform
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Управляет звуком в данном объекте NetStream. Дополнительные сведения см. в описании класса SoundTransform.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Реализация
public function get soundTransform():flash.media:SoundTransform
public function set soundTransform(value:flash.media:SoundTransform):void
Связанные элементы API
time | свойство |
time:Number
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Положение точки воспроизведения (в секундах).
Flash Media Server Для подписывающего потока — число секунд воспроизведения потока. Для публикующего потока — продолжительность публикации потока (в секундах). Это число используется с точностью до тысячных долей. Умножьте его на 1000, чтобы получить число миллисекунд воспроизведения потока.
Если для подписывающего потока сервер прекращает отправку данных, но при этом сам поток остается открытым, то значение свойства time
перестает увеличиваться. Когда сервер начинает повторную отправку данных, значение, которое существовало на момент прекращения отправки данных сервером, продолжает увеличиваться.
Значение time
продолжает увеличиваться, когда поток переключается с одного элемента списка воспроизведения на другой. Данное свойство получает значение 0, когда NetStream.play()
вызывается с параметром reset
, значение которого равно 1
или true
, а также при вызове метода NetStream.close()
.
Реализация
public function get time():Number
Связанные элементы API
useHardwareDecoder | свойство |
useHardwareDecoder:Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 11, AIR 3 |
Указывает необходимость использования аппаратно-ускоренного декодирования в потоке.
Примечание. Нельзя задавать это свойство во время воспроизведения видео. Необходимо задать его перед вызовом метода NetStream.play()
.
Значением по умолчанию является true.
Реализация
public function get useHardwareDecoder():Boolean
public function set useHardwareDecoder(value:Boolean):void
Связанные элементы API
useJitterBuffer | свойство |
useJitterBuffer:Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 11.3, AIR 3.3 |
Уменьшите задержку для интерактивной небуферизованной потоковой передачи (bufferTime = 0). Вместо традиционного механизма синхронизированного захвата звуковые сообщения помещаются в подстраиваемый буфер пакетов. Когда аудиосодержимое требуется на устройстве вывода звука, сообщения выталкиваются из буфера пакетов, декодируются и воспроизводятся. Кодеки Speex и G.711 всегда используют подход на основе синхронизации вне зависимости от этих настроек (useJitterBuffer возвращает значение true для Speex/G.711). После включения в небуферизированном режиме все кодеки, такие как Speex, G.711, Nellymoser, MP3 и AAC, используют буфер пакетов. Это свойство не работает в буферизированном режиме (bufferTime > 0), поэтому useJitterBuffer возвращает значение false.
Реализация
public function get useJitterBuffer():Boolean
public function set useJitterBuffer(value:Boolean):void
videoReliable | свойство |
videoReliable:Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Для подключений RTMFP указывает, отправляется ли видео с обеспечением полной надежности. Когда имеет значение TRUE, все видеоданные передаются через этот объект NetStream с обеспечением полной надежности. Когда имеет значение FALSE, надежность передаваемых видеоданных не обеспечивается, вместо этого видео передается в течение ограниченного времени, а затем обрывается. Можно использовать значение FALSE, чтобы уменьшить время ожидания за счет качества видео.
Попытка задать этому свойству значение FALSE при использовании сетевого протокола, который не поддерживает частичную надежность, игнорируется, и свойству задается значение TRUE.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Реализация
public function get videoReliable():Boolean
public function set videoReliable(value:Boolean):void
Связанные элементы API
videoSampleAccess | свойство |
videoSampleAccess:Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Для подключений RTMFP определяет разрешено ли абонентам одноранговой сети в данном объекте NetStream захватывать видеопоток. Когда имеет значение FALSE, при попытке абонента захватить видеопоток выводятся ошибки прав доступа.
Примечание. Это свойство не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Реализация
public function get videoSampleAccess():Boolean
public function set videoSampleAccess(value:Boolean):void
Связанные элементы API
videoStreamSettings | свойство |
videoStreamSettings:VideoStreamSettings
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 11/ConnectAddin, AIR 3 |
Укажите свойства сжатия потока. Дополнительные сведения см. в информации по VideoStreamSettings
Когда к системе не подключены камеры, возвращается нулевое значение.
Реализация
public function get videoStreamSettings():VideoStreamSettings
public function set videoStreamSettings(value:VideoStreamSettings):void
Связанные элементы API
NetStream | () | Конструктор |
public function NetStream(connection:NetConnection, peerID:String = "connectToFMS")
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Создает поток, который можно использовать для воспроизведения медиафайлов и отправки данных через объект NetConnection.
Отсутствие обработки события netStatus
объекта NetStream считается недопустимым. Во избежание ошибок следует регистрировать прослушиватель события netStatus
после создания объекта NetStream и до вызова его метода play()
.
connection:NetConnection — Объект NetConnection
| |
peerID:String (default = "connectToFMS ") — Этот дополнительный параметр доступен в Flash Player 10 и более поздних версий и предназначен для работы с подключениями RTMFP. (Если свойству NetConnection.protocol не задано значение "rtmfp" , этот параметр игнорируется.) Используйте одно из следующих значений.
В большинстве случаев Если этот параметр передается конструктору со значением |
Выдает
ArgumentError — Экземпляр NetConnection не подключен.
|
Связанные элементы API
DIRECT_CONNECTIONS
farID
flash.media.Video.attachCamera()
flash.net.GroupSpecifier
flash.net.GroupSpecifier.groupspecWithAuthorizations()
flash.net.GroupSpecifier.groupspecWithoutAuthorizations()
flash.net.GroupSpecifier.multicastEnabled
flash.net.NetConnection
flash.net.NetConnection.nearID
flash.net.NetConnection.protocol
flash.net.NetGroup
flash.events.NetStatusEvent.info.code="NetStream.Connect.Rejected"
flash.events.NetStatusEvent.info.code="NetStream.Connect.Success"
Пример ( Использование этого примера )
videoURL
:
var my_video:Video = new Video(); addChild(my_video); var my_nc:NetConnection = new NetConnection(); my_nc.connect(null); var my_ns:NetStream = new NetStream(my_nc); my_video.attachNetStream(my_ns); my_ns.play(videoURL);
videoURL
) на удаленном экземпляре Flash Media Server, заданном в команде connect()
:
var my_video:Video = new Video(); addChild(my_video); var my_nc:NetConnection = new NetConnection(); my_nc.connect("rtmp://www.yourfmsserver.com/someappname"); var my_ns:NetStream = new NetStream(my_nc, NetStream.CONNECT_TO_FMS); my_video.attachNetStream(my_ns); my_ns.play(videoURL);
appendBytes | () | метод |
public function appendBytes(bytes:ByteArray):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Передает объект ByteArray в экземпляр NetStream для воспроизведения. Вызовите этот метод для объекта NetStream в режиме создания данных. Чтобы перевести объект NetStream в режим создания данных, вызовите метод NetStream.play(null)
для экземпляра NetStream, созданного для объекта NetConnection, который подключен к null
. Метод appendBytes()
нельзя вызывать для объекта NetStream, который не находится в режиме создания данных, в противном случае выдается исключение.
Примечание. Этот метод не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Анализатор байт распознает FLV-файл с заголовком. После синтаксического разбора заголовка метод appendBytes()
рассматривает все последующие вызовы продолжением того же реального или виртуального файла. Другие заголовки не ожидаются, если не будет вызван метод appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN)
.
Объект NetStream имеет два буфера: буфер FIFO, передаваемый методом appendBytes()
объекту NetStream, и буфер воспроизведения. FIFO — это буфер повторной сборки частичного тега FLV, который содержит не более одного неполного тега FLV. Вызовы метода NetStream.seek()
опустошают оба буфера. После вызова метода seek()
необходимо вызвать метод appendBytesAction()
, чтобы сбросить временную шкалу и поместить начало в метку времени следующего добавленного сообщения.
Каждый вызов метода appendBytes()
добавляет байты в буфер FIFO, пока тег FLV не будет полным. Когда тег FLV становится полным, он перемещается в буфер воспроизведения. Вызов метода appendBytes()
может записать несколько тегов FLV. Начальные байты дополняют существующий тег FLV (который перемещается в буфер воспроизведения). Полные теги FLV перемещаются в буфер воспроизведения. Остальные байты, которые не образуют полного тега FLV, попадают в буфер FIFO. Байты в буфере FIFO дополняются вызовом метода appendBytes()
или опустошаются вызовом метода appendBytesAction()
с аргументом RESET_SEEK
или RESET_BEGIN
.
Примечание. Анализатор байт может быть не в состоянии полностью раскодировать вызов appendBytes()
до следующего вызова appendBytes()
.
Параметры
bytes:ByteArray |
Связанные элементы API
appendBytesAction | () | метод |
public function appendBytesAction(netStreamAppendBytesAction:String):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Указывает на отсутствие непрерывности временной шкалы, опустошает буфер FIFO и предписывает анализатору байт ожидать заголовок файла или начало тега FLV.
Примечание. Этот метод не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Вызовы метода NetStream.seek()
опустошают буферы объекта NetStream. Анализатор байтов остается в режиме опустошения, пока не будет вызван метод appendBytesAction()
с аргументом RESET_BEGIN
или RESET_SEEK
. Прослушивайте событие "NetStream.Seek.Notify"
, чтобы вызвать метод appendBytesAction()
после поиска. Новый заголовок файла может поддерживать списки воспроизведения и поиск без вызова NetStream.seek()
.
Этот метод также можно использовать для сброса счетчика байт при обратном вызове onSeekPoint()
.
Параметры
netStreamAppendBytesAction:String |
Связанные элементы API
attach | () | метод |
public function attach(connection:NetConnection):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Присоединяет поток к новому объекту NetConnection. Вызовите этот метод, чтобы присоединить NetStream к новому объекту NetConnection после обрыва и восстановления подключения. Flash Player и AIR восстанавливают потоковую передачу с той точки воспроизведения, в которой было разорвано соединение. Этот метод также можно использовать для распределения нагрузки.
Для использования этого метода требуется Flash Media Server версии 3.5.3.
Сведения об использовании данного метода для повторного подключения потока см. в документации по Flash Media Server 3.5.3.
Чтобы использовать этот метод для распределения нагрузки, выполните следующие действия.
- Присоедините подключенный поток к объекту NetConnection на другом сервере.
- После успешного присоединения потока к новому подключению, вызовите метод
NetConnection.close()
для предыдущего подключения, чтобы предотвратить утечку данных. - Вызовите
NetStream.play2()
и задайте свойствуNetStreamPlayOptions.transition
значение RESUME. Задайте остальным свойствам объекта NetStreamPlayOptions те же значения, которые использовались при вызове методаNetStream.play()
илиNetStream.play2()
для начала потоковой передачи.
Параметры
connection:NetConnection |
Связанные элементы API
attachAudio | () | метод |
public function attachAudio(microphone:Microphone):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Присоединяет аудиопоток, отправляемый через объект NetStream из объекта Microphone, переданного в качестве источника. Данный метод доступен только издателю указанного потока.
Используйте этот метод с Flash Media Server, чтобы отправить на сервер аудиопоток в реальном времени. Вызовите этот метод до или после вызова publish()
.
Задайте свойство Microphone.rate
в соответствии с частотой звукозаписывающего устройства. Вызовите метод setSilenceLevel()
, чтобы задать порог уровня тишины. Чтобы управлять свойствами звука аудиопотока (громкостью и панорамированием), используйте свойство Microphone.soundTransform
.
var nc:NetConnection = new NetConnection(); nc.connect("rtmp://server.domain.com/app"); var ns:NetStream = new NetStream(nc); var live_mic:Microphone = Microphone.get(); live_mic.rate = 8; live_mic.setSilenceLevel(20,200); var soundTrans:SoundTransform = new SoundTransform(); soundTrans.volume = 6; live_mic.soundTransform = soundTrans; ns.attachAudio(live_mic); ns.publish("mic_stream","live")
Чтобы услышать звук, вызовите метод NetStream.play()
, а затем DisplayObjectContainer.addChild()
для маршрутизации аудио к объекту в списке отображения.
Параметры
microphone:Microphone — Источник передаваемого аудиопотока.
|
Связанные элементы API
attachCamera | () | метод |
public function attachCamera(theCamera:Camera, snapshotMilliseconds:int = -1):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Начинает захват видео с видеокамеры, либо останавливает запись, если параметр theCamera
имеет значение null
. Данный метод доступен только издателю указанного потока.
Данный метод используется при работе с сервером Flash Media Server (более подробную информацию см. в описании класса).
Чтобы начать передачу, следует после прикрепления видеоисточника вызвать метод NetStream.publish()
. Чтобы отобразить видео в рабочей области, подписчики, которым необходимо отобразить видеоданные, должны вызвать методы NetStream.play()
и Video.attachCamera()
.
С помощью snapshotMilliseconds
можно отправить отдельный снимок (необходимое значение 0) или серию снимков (для создания эффектов замедленной киносъемки). Для этого нужно указать положительное число, которое добавляет в видеоданные концевой кадр на указанное число миллисекунд. Концевой кадр увеличивает время отображения видеосообщения. С помощью повторных вызовов метода attachCamera()
с положительным значением для параметра snapshotMilliseconds
последовательность сменяющих друг друга снимков и концевых кадров создает эффект замедленной киносъемки. Например, вы можете снимать по одному кадру в день и вставлять такой кадр в видеофайл. Когда подписчик воспроизводит файл, каждый кадр отображается на экране заданное количество миллисекунд, а затем сменяется на следующий кадр.
Функция параметра snapshotMilliseconds
отличается от функции параметра fps
, который можно установить для метода Camera.setMode()
. Определение параметра snapshotMilliseconds
позволяет установить промежуток времени между записываемыми кадрами. Контроль за тем, сколько времени проходит между записью и воспроизведением, осуществляется путем определения параметра fps
с помощью Camera.setMode()
.
Например, предположим, что вам необходимо сделать 100 снимков с периодичностью в 5 минут. Это можно выполнить двумя различными способами:
- Можно 100 раз, через каждые 5 минут, запустить команду
NetStream.attachCamera(myCamera, 500)
. На эту запись потребуется 500 минут, но полученный файл будет воспроизводиться в течение 50 секунд (100 кадров с промежутком в 500 миллисекунд). - Можно запустить команду
Camera.setMode()
, установив для параметраfps
значение 1/300 (1 раз в 300 секунд или 1 раз каждые 5 минут), а затем запустить командуNetStream.attachCamera(source)
, позволяя камере непрерывно захватывать данные в течение 500 минут. Полученный файл будет воспроизводиться 500 минут (тот же отрезок времени, который потребовался для записи данных): каждый кадр будет отображаться на экране в течение 5 минут.
В обоих случаях захватываются одни и те же 500 кадров, и оба подхода имеют функциональное применение. Выбор нужного подхода в основном зависит от требований к воспроизведению снятого материала. Например, во втором случае аудио может записываться на протяжении всего времени. Вдобавок, оба файла будут приблизительно одного размера.
Параметры
theCamera:Camera — Источник передачи видео. Допустимые значения: объект Camera (запускающий захват видео) и null . При установке значения null приложение прекращает захват видео, при этом любые дополнительные параметры, которые вы отправляете, игнорируются.
| |
snapshotMilliseconds:int (default = -1 ) — Указывает, что собой представляет видеопоток: непрерывный поток, отдельный кадр или серия отдельных кадров, используемая для создания замедленной киносъемки.
|
close | () | метод |
public function close():void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Останавливает воспроизведение всех данных в потоке, присваивает свойству time
значение 0 и делает поток доступным для использования. Данный метод также удаляет локальную копию видеофайла, загруженную по протоколу HTTP. Несмотря на то, что приложение удаляет локальную копию созданного им файла, она может сохраняться в кэш-каталоге. Чтобы полностью предотвратить кэширование или локальное хранение видеофайла, используйте Flash Media Server.
При использовании Flash Media Server данный метод вызывается незаметно при вызове NetStream.play()
из публикующего потока или при вызове NetStream.publish()
из подписывающего потока. Обратите внимание:
-
Если из публикующего потока вызывается
close()
, поток прекращает публикацию, после чего издатель может использовать этот поток по другому назначению. Подписчики больше не получают данные, публикуемые в потоке, так как публикация потока была остановлена. -
Если из подписывающего потока вызывается
close()
, то поток прекращает воспроизведение для подписчика, после чего подписчик может использовать данный поток для других целей. Это не касается остальных подписчиков. -
С помощью
flash.net.NetStream.play(false)
можно остановить воспроизведение подписывающего потока без закрытия самого потока или изменения его типа.
Связанные элементы API
dispose | () | метод |
public function dispose():void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 11, AIR 3.0 |
Высвобождает все ресурсы, удерживаемые объектом NetStream.
Метод dispose()
похож на метод close
. Основное различие между этими двумя методами заключается в том, что метод dispose()
высвобождает память, используемую для отображения текущего видеокадра. Если кадр в данный момент отображается на экране, экран станет пустым. Метод close()
не очищает экран, поскольку он не высвобождает эту память.
onPeerConnect | () | метод |
public function onPeerConnect(subscriber:NetStream):Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Вызывается, когда поток одноранговой публикации совпадает с потоком одноранговой подписки. Перед тем как подписчик будет подключен к издателю, вызовите этот метод, чтобы обеспечить четкое управление доступом к коду ActionScript для одноранговой публикации. Следующий код демонстрирует создание функции обратного вызова для этого метода
var c:Object = new Object; c.onPeerConnect = function(subscriber:NetStream):Boolean { if (accept) return true; else return false; }; m_netStream.client = c;
Если одноранговый издатель не реализует этот метод, всем одноранговым узлам разрешается воспроизводить любое опубликованное содержимое.
Параметры
subscriber:NetStream |
Boolean |
pause | () | метод |
public function pause():void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Приостанавливает воспроизведение видеопотока. Вызов данного метода ни к чему не приводит, если видеопоток уже был приостановлен. Чтобы продолжить воспроизведение видео после временной остановки, вызовите resume()
. Переключение между паузой и воспроизведением (сначала пауза, затем возобновление воспроизведения) выполняется с помощью togglePause()
.
Начиная с версии 9.0.115.0, проигрыватель Flash Player больше не очищает буфер при вызове метода NetStream.pause()
. Такое поведение вызывается «умная пауза». До версии 9.0.115.0, перед тем как продолжить воспроизведение, проигрыватель Flash Player находился в ожидании заполнения буфера, что часто вызывало задержку.
Примечание. В целях обратной совместимости событие "NetStream.Buffer.Flush"
(см. описание свойства NetStatusEvent.info
) по-прежнему срабатывает, хотя сервер не сбрасывает буфер.
Для одиночной паузы свойство NetStream.bufferLength
имеет ограничение в 60 секунд или удвоенное значение параметра NetStream.bufferTime
(выбирается большее значение из двух). Например, если параметр bufferTime
равен 20 секундам, то проигрыватель Flash Player заполняет буфер до тех пор, пока NetStream.bufferLength
не примет верхнее значение 20*2 (40) или 60. В данном случае, буферизация проводится до того, как параметр bufferLength
не будет иметь значение 60. Если параметр bufferTime
равен 40 секундам, то проигрыватель Flash Player заполняет буфер до тех пор, пока bufferLength
не примет верхнее значение 40*2 (80) или 60. В этом случае буферизация проводится до того, как параметр bufferLength
не будет иметь значение 80.
Свойство bufferLength
также имеет абсолютный предел. Если любой вызов pause()
приводит к тому, что значение параметра bufferLength
увеличивается на 600 секунд или на значение bufferTime
* 2 (выбирается наибольшее из двух), проигрыватель Flash Player очищает буфер и устанавливает для параметра bufferLength
значение, равное 0. Например, если значение параметра bufferTime
равно 120 секундам, проигрыватель Flash Player заполняет буфер до тех пор, пока параметр bufferLength
не примет значение в 600 секунд. Если значение параметра bufferTime
- 360 секунд, то Flash Player заполняет буфер до тех пор, пока bufferLength
не станет равным 720 секундам.
Совет: Метод NetStream.pause()
можно использовать в коде для буферизации данных в тот момент, например, когда зрители смотрят рекламу, и последующего воспроизведения потока в начале основной видеопрограммы.
Связанные элементы API
play | () | метод |
public function play(... arguments):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Воспроизводит медиафайл из локального каталога или с веб-сервера; воспроизводит медиафайл или эфирный поток с сервера Flash Media Server. Отправляет объект NetStatusEvent
, чтобы передать сообщения о состоянии и ошибках.
Дополнительные сведения о поддерживаемых кодеках и форматах файлов см. в следующих ресурсах:
- Документация по серверу Flash Media Server
- Изучение возможностей поддержки видеостандарта H.264 с высоким разрешением и аудио формата AAC во Flash Player
- Документы по открытой спецификации FLV/F4V
Рабочий процесс воспроизведения файла или эфирного потока
- Создайте объект Video, который будет отображать видео, и вызовите метод
addChild()
, чтобы добавить его на сцену. Создайте объект NetConnection и вызовите метод
NetConnection.connect()
.Чтобы воспроизвести файл из локального каталога или с веб-сервера, передайте значение null.
Чтобы воспроизвести записанный файл или эфирный поток с сервера Flash Media Server, передайте URI приложения Flash Media Server.
- Вызовите метод
addEventListener()
объекта NetConnection, чтобы прослушивать событиеnetStatus
(NetStatusEvent.NET_STATUS
). - При получении события
"NetConnection.Connect.Success"
создайте объект NetStream и передайте объект NetConnection конструктору. - Вызовите метод
attachNetStream()
объекта Video и передайте объект NetStream. Вызовите метод
play()
объекта NetStream.Чтобы воспроизвести эфирный поток, передайте имя потока из метода
NetStream.publish()
.Чтобы воспроизвести записанный файл, передайте имя файла.
Примечание. Рекомендуется всегда добавлять объект Video на сцену, затем присоединять к нему NetStream, после чего вызывать метод play()
объекта.
Включение режима создания данных
Вызовите метод play(null)
, чтобы перейти в режим создания данных. В этом режиме вызовите метод appendBytes()
, чтобы доставить данные в объект NetStream. Используйте режим создания данных, чтобы передавать поток содержимого через HTTP из модуля динамической потоковой передачи HTTP Adobe на HTTP-сервере Apache. Динамическая потоковая передача через HTTP позволяет клиентам быстро выполнять поиск любой точки в файле. Платформа Open Source Media Framework (OSMF) поддерживает динамическую потоковую передачу через HTTP для потоков по требованию и в реальном времени. Чтобы получить примеры использования режима создания данных для объекта NetStream, загрузите исходный код OSMF. Дополнительные сведения о динамической потоковой передаче через HTTP см. в документе Динамическая потоковая передача через HTTP.
При использовании этого метода без Flash Media Server необходимо учитывать ограничения безопасности. Файл в локальной доверенной изолированной среде или среде, локальной для сети, может загружать и воспроизводить видеофайл из удаленной изолированной программной среды, но при этом он не имеет доступа к данным этого удаленного файла без явного разрешения в форме файла политик для URL. Также можно запретить SWF-файлу, выполняемому в приложении Flash Player, использовать этот метод путем установки параметра allowNetworking
для тегов object
и embed
на странице HTML с SWF-содержимым. Дополнительные сведения о безопасности см. в разделе центра разработчиков Flash Player Безопасность.
Параметры
... arguments — Воспроизведение локального файла
Местоположение медиафайла. Аргумент может быть экземпляром String, свойством Воспроизведение файла с сервера Flash Media Server
Для воспроизведения доступны форматы файлов, описанные в следующей таблице. Синтаксис отличается в зависимости от формата файла.
Включение режима создания данных
Чтобы включить режим создания данных, передайте значение Специальные рекомендации по использованию видео H.264 в среде AIR 3.0 для ОС iOS Для видео H.264 API-интерфейсы iOS, предназначенные для воспроизведения видео, допускают использование только URL-адресов файла или потока. Нельзя передать в буфер видеоданные H264, подлежащие декодированию. В зависимости от источника видео передайте соответствующий аргумент в метод
|
События
status: — Отправляется при попытке воспроизвести содержимое, зашифрованное с помощью технологии управления цифровыми правами (DRM). Значением свойства code по умолчанию является DRM.encryptedFLV .
|
Выдает
SecurityError — Локальные ненадежные SWF-файлы изолированы от Интернета. Данное ограничение можно обойти, если переклассифицировать этот SWF-файл как локальный с сетевым подключением или доверенный.
| |
ArgumentError — Необходимо указать не менее одного параметра.
| |
Error — Недопустимый NetStream Object. Это может быть вызвано сбоем NetConnection.
|
Связанные элементы API
Пример ( Использование этого примера )
play()
.
ns.play("mp4:samples/record1.f4v", 0, 100, true);
ns.play("livestream");
var MyVideo:Video = new Video(); addChild(MyVideo); var MyNC:NetConnection = new NetConnection(); MyNC.connect(null); var MyNS:NetStream = new NetStream(MyNC); MyVideo.attachNetStream(MyNS); MyNS.play("http://www.helpexamples.com/flash/video/clouds.flv"); //the clouds.flv video has metadata we're not using, so create //an error handler to ignore the message generated by the runtime //about the metadata MyNS.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); function asyncErrorHandler(event:AsyncErrorEvent):void { //ignore metadata error message }
play2 | () | метод |
public function play2(param:NetStreamPlayOptions):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Незаметно переключает файлы с различной скоростью передачи данных и обеспечивает возобновление NetStream в случае обрыва и восстановления подключения.
Этот метод представляет собой расширенную версию NetStream.play()
. Как и play()
, метод play2()
начинает воспроизведение мультимедийного файла или отправляет мультимедийные файлы в очередь для создания списка воспроизведения. При использовании с Flash Media Server он может также запрашивать у сервера переключение на другой мультимедийный файл. Переход происходит незаметно для клиентского приложения. Переключение потоков с помощью метода play2()
используется следующими функциями.
Создание динамических потоков
Динамическое потоковое воспроизведение (поддерживается в среде Flash Media Server 3.5 и более поздних версий) позволяет обслуживать поток, закодированный с использованием нескольких скоростей передачи данных. По мере изменения условий в сети пользователя, данные передаются с той скоростью, которая обеспечивает наилучшее качество просмотра. С помощью класса NetStreamInfo
можно отслеживать условия работы сети и переключать потоки на основе полученных данных. Можно также переключать потоки для клиентов с различными возможностями. Дополнительные сведения см. в главе «Динамическая потоковая передача» в руководстве разработчика по Adobe Flash Media Server.
Adobe создал пользовательский класс ActionScript под названием DynamicStream, который расширяет класс NetStream. С помощью класса DynamicStream можно выполнять динамическую потоковую передачу в приложении вместо написания собственного кода для определения условий работы сети. Даже если вы решите написать собственный код для выполнения динамической потоковой передачи, используйте в качестве примера описание класса DynamicStream. Загрузите класс и документацию класса со страницы инструментов и загрузок Flash Media Server.
Повторно подключение потока
Повторное подключение потока (поддерживается в среде Flash Media Server 3.5.3 и более поздних версий) позволяет избежать перерывов при воспроизведении медиасодержимого, даже когда разрывается подключение. Медиасодержимое воспроизводится из буфера, пока логика ActionScript устанавливает повторное подключение к Flash Media Server. После повторного подключения вызовите метод NetStream.attach()
, чтобы использовать тот же объект NetStream с новым экземпляром NetConnection. Повторно подключите поток с использованием NetStream.attach()
, NetStreamPlayTransitions.RESUME
и NetStreamPlayTrasitions.APPEND_AND_WAIT
. Дополнительные сведения см. в документации по Flash Media Server 3.5.3.
Параметры
param:NetStreamPlayOptions |
Связанные элементы API
preloadEmbeddedData | () | метод |
public function preloadEmbeddedData(param:NetStreamPlayOptions):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.5, Flash Lite 4 |
Извлекает метаданные DRM из локального мультимедийного файла.
Используйте preloadEmbeddedMetaData()
в качестве первого этапа загрузки и кэширования ваучеров DRM, необходимых для автономного просмотра. При обнаружении внедренных в мультимедийный файл метаданных DRM объект DRMContentData передается функции клиента NetStream onDRMContentData
. Объект DRMContentData содержит информацию, необходимую для получения ваучера на воспроизведение содержимого. Для загрузки ваучера необходимо передать DRMContentDataObject методу DRMManager loadVoucher()
.
Предварительная загрузка ваучера DRM включает в себя следующие действия.
-
Создайте новый объект NetStream для предварительной загрузки метаданных.
- Назначьте функцию обратного вызова свойству
onDRMContentData
для NetStreamclient
. - Создайте новый объект NetStreamPlayOptions и установите его свойство
streamName
на строку URL-адреса локального видеофайла. - Вызовите метод
preloadEmbeddedMetadata()
, передав ему объект NetStreamPlayOptions. - В ответ на обратный вызов
onDRMContentData
вызовите метод DRMManagerloadVoucher()
с передачей ему объекта DRMContentData. Если свойствуauthenticationMethod
объекта DRMContentData присвоено значениеuserNameAndPassWord
, перед загрузкой ваучера необходимо, чтобы пользователь прошел проверку подлинности на сервере управления правами доступа к содержимому. - Закройте NetStream, использованный для предварительной загрузки.
Примечание. Чтобы использовать один и тот же объект NetStream для предварительной загрузки метаданных и воспроизведения содержимого, перед началом воспроизведения необходимо дождаться вызова onPlayStatus
, генерируемого операцией предварительной загрузки.
Загруженные ваучеры хранятся в локальном кэше. При воспроизведении содержимого онлайн также загружаются и кэшируются ваучеры. При просмотре файла содержимого с защитой по технологии DRM кэшированный ваучер автоматически извлекается из локального хранилища. С помощью DRMManager можно управлять кэшем ваучеров.
Примечание. Предварительная загрузка метаданных DRM через соединение HTTP, HTTPS или RTMP не поддерживается. Метаданные можно предварительно загружать только из файлов, хранящихся в файловой системе.
Параметры
param:NetStreamPlayOptions — Объект NetStreamPlayOptions, описывающий параметры обработки файла содержимого.
|
Связанные элементы API
publish | () | метод |
public function publish(name:String = null, type:String = null):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Отправляет потоковое аудио, видео и сообщения с данными от клиента на сервер Flash Media Server, также может записывать поток в ходе передачи. Этот метод отправляет объект NetStatusEvent с информацией о потоке. Перед вызовом NetStream.publish()
прослушивайте событие "NetConnection.Connect.Success"
, чтобы убедиться, удалось ли приложению успешно подключиться к серверу Flash Media Server.
При публикации можно записывать файлы в формате FLV или F4V. При записи файла в формате F4V необходимо использовать средство преобразования для изменения или воспроизведения файла в другом приложении. Для загрузки инструмента см. www.adobe.com/go/fms_tools_ru.
Примечание.Не используйте этот метод для воспроизведения потоков. Для воспроизведения потока вызовите метод NetStream.play()
.
Рабочий процесс публикации потока
- Создайте объект NetConnection и вызовите метод
NetConnection.connect()
. - Вызовите метод
NetConnection.addEventListener()
, чтобы прослушивать события NetStatusEvent. - При получении события
"NetConnection.Connect.Success"
создайте объект NetStream и передайте объект NetConnection конструктору. - Для захвата аудио и видео требуется вызвать методы
NetStream.attachAudio()
иNetStream.attachCamera()
. - Для публикации потока вызовите метод
NetStream.publish()
. В процессе публикации можно записывать данные, которые пользователи смогут позже воспроизвести.
Примечание.Объект NetStream можно выполнять либо публикацию, либо воспроизведение потока, но не два действия сразу. Чтобы опубликовать поток и запустить воспроизведение с сервера, создайте два объекта NetStream. Через один объект NetConnection можно отправлять несколько объектов NetStream.
Когда сервер Flash Media Server записывает поток, создается файл. По умолчанию сервер создает каталог, используя имя экземпляра приложения, переданное методу NetConnection.connect()
, и сохраняет файл в этом каталоге. Например, следующий код подключается к экземпляру по умолчанию приложения lectureseries и записывает поток с именем lecture. Файл lecture.flv записывается в каталог applications/lectureseries/streams/_definst_:
var nc:NetConnection = new NetConnection(); nc.connect("rtmp://fms.example.com/lectureseries"); nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); function netStatusHandler(event:NetStatusEvent):void { if (event.info.code == "NetConnection.Connect.Success") { var ns:NetStream = new NetStream(nc); ns.publish("lecture", "record"); } }
Следующий пример подключается к экземпляру того же приложения под именем monday. Файл lecture.flv записывается в каталог /applications/lectureseries/streams/monday:
var nc:NetConnection = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); nc.connect("rtmp://fms.example.com/lectureseries/monday"); function netStatusHandler(event:NetStatusEvent):void { if (event.info.code == "NetConnection.Connect.Success") { var ns:NetStream = new NetStream(nc); ns.publish("lecture", "record"); } }
Параметры
name:String (default = null ) — Строка, идентифицирующая поток. Клиенты, подписывающиеся на данный поток, передают это имя при вызове метода NetStream.play() . Не ставьте после имени потока символ «/». Например, не используйте в качестве имени потока bolero/ .
Файлы можно записывать в форматах, описанных в нижеследующей таблице (невозможно использовать
| |||||||||||||
type:String (default = null ) — Строка, указывающая способ публикации потока. Допустимые значения: record , append , appendWithGap и live . Значение по умолчанию: live .
|
Связанные элементы API
Пример ( Использование этого примера )
Чтобы выполнить этот пример, к компьютеру должна быть подключена камера. Также необходимо добавить по одному компоненту Button и Label в библиотеку.
У приложения есть кнопка, которая публикует поток (отправляет его на Flash Media Server) только после того, как приложение успешно подключается к серверу. Приложение воспроизводит поток, получаемый с сервера только после того, как поток будет успешно опубликован. NetStatusEvent
возвращает объект info
со свойством code
, описывающим эти случаи. Функция netStatusHandler
обрабатывает эти события для классов NetConnection и NetStream.
package { import flash.display.Sprite; import flash.events.*; import flash.media.Video; import flash.media.Camera; import flash.net.NetConnection; import flash.net.NetStream; import fl.controls.Button; import fl.controls.Label; public class NetStream_publish extends Sprite { private var connectionURL:String = "rtmp://localhost/live/"; private var videoURL:String = "liveVideo"; private var nc:NetConnection; private var ns_publish:NetStream; private var ns_playback:NetStream; private var video_publish:Video; private var video_playback:Video; private var cam:Camera; private var b:Button; private var l:Label; public function NetStream_publish() { setUpUI(); nc = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); // Add bandwidth detection handlers on the NetConnection Client to // prevent Reference Errors at runtime when using the "live" and "vod" applications. var clientObj:Object = new Object(); clientObj.onBWDone = onBWDone; clientObj.onBWCheck = onBWCheck; nc.client = clientObj; // Connect to the "live" application on Flash Media Server. nc.connect(connectionURL); } private function netStatusHandler(event:NetStatusEvent):void { trace(event.info.code + " | " + event.info.description); switch (event.info.code) { case "NetConnection.Connect.Success": // Enable the "Publish" button after the client connects to the server. b.enabled = true; break; case "NetStream.Publish.Start": playbackVideo(); break; } } private function publishVideo(event:MouseEvent):void{ // Disable the button so that you can only publish once. b.enabled = false; // Create a NetStream to send video to FMS. ns_publish = new NetStream(nc); ns_publish.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); // Publish (send) the video to FMS. cam = Camera.getCamera(); ns_publish.attachCamera(cam); ns_publish.publish(videoURL); } private function playbackVideo():void { // Create the Video object to show the video on the stage video_playback = new Video(cam.width, cam.height); video_playback.x = cam.width + 20; video_playback.y = 10; addChild(video_playback); // Create a NetStream to receive the video from FMS. ns_playback = new NetStream(nc); ns_playback.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); // Display the video that was published to FMS. video_playback.attachNetStream(ns_playback); ns_playback.play(videoURL); } private function setUpUI():void { b = new Button(); b.addEventListener(MouseEvent.CLICK, publishVideo); b.width = 150; b.label = "Publish video to server"; b.move(10, 150); b.enabled = false; l = new Label(); l.width = 150; l.text = "Playing back from server" l.move(190, 150); addChild(b); addChild(l); } // Handlers called by the Flash Media Server "live" and "vod" applications. public function onBWDone(... rest):Boolean { return true; } public function onBWCheck(... rest):Number { return 0; } } }
receiveAudio | () | метод |
public function receiveAudio(flag:Boolean):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Определяет, воспроизводится ли входящий звук в потоке. Этот метод доступен только клиентам, оформившим подписку на указанный поток. Он недоступен издателю потока. Вызовите этот метод до или после вызова метода NetStream.play()
. Например, подключите этот метод к кнопке, чтобы пользователи могли выключать и включать звук. Используйте этот метод только в потоках индивидуальной рассылки, которые воспроизводятся с сервера Flash Media Server. Этот метод не работает в потоках групповой передачи RTMFP или при использовании метода NetStream.appendBytes()
.
Параметры
flag:Boolean — Указывает, воспроизводится (true ) или не воспроизводится (false ) входящее аудио в потоке. По умолчанию используется значение true . Если указанный поток содержит только аудиоданные, NetStream.time останавливает увеличение при передаче значения false .
|
receiveVideo | () | метод |
public function receiveVideo(flag:Boolean):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Определяет, воспроизводится ли входящее видео в потоке. Этот метод доступен только клиентам, оформившим подписку на указанный поток. Он недоступен издателю потока. Вызовите этот метод до или после вызова метода NetStream.play()
. Например, подключите этот метод к кнопке, чтобы пользователи могли показать или скрыть видео. Используйте этот метод только в потоках индивидуальной рассылки, которые воспроизводятся с сервера Flash Media Server. Этот метод не работает в потоках групповой передачи RTMFP или при использовании метода NetStream.appendBytes()
.
Параметры
flag:Boolean — Указывает, воспроизводится (true ) или не воспроизводится (false ) входящее видео в этом потоке. По умолчанию используется значение true . Если указанный поток содержит только видеоданные, NetStream.time останавливает увеличение при передаче значения false .
|
receiveVideoFPS | () | метод |
public function receiveVideoFPS(FPS:Number):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Указывает частоту кадров для входящего видео. Этот метод доступен только клиентам, оформившим подписку на указанный поток. Он недоступен издателю потока. Вызовите этот метод до или после вызова метода NetStream.play()
. Например, вызовите этот метод, чтобы пользователи могли установить частоту видеокадров. Чтобы определить текущую частоту кадров, используйте NetStream.currentFPS
. Чтобы остановить получение видео, передайте значение 0
.
Если в целях ограничения частоты видеокадров передать определенное значение параметру FPS, проигрыватель Flash Media Server предпримет попытку снизить частоту кадров, при этом сохраняя целостность видеоизображения. Между каждыми двумя ключевыми кадрами сервер отправляет минимальное число кадров в соответствии с нужной частотой. Обратите внимание, что I-кадры (или промежуточные кадры) должны передаваться друг за другом, иначе видео будет повреждено. Таким образом, необходимое число кадров отправляется немедленно в сопровождении ключевого кадра. Так как кадры распределены неравномерно, движение выглядит сглаженным в тех сегментах, прерываемых остановками.
Используйте этот метод только в потоках индивидуальной рассылки, которые воспроизводятся с сервера Flash Media Server. Этот метод не работает в потоках групповой передачи RTMFP или при использовании метода NetStream.appendBytes()
.
Параметры
FPS:Number — Указывает частоту кадров (в секунду), с которой воспроизводится входящее видео.
|
resetDRMVouchers | () | метод |
public static function resetDRMVouchers():void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 11.8, Flash Lite 4 |
В приложениях AIR это приводит к удалению всех локально кэшированных данных ваучеров управления цифровыми правами (DRM). Для приложений, использующих браузер, такая ситуация возникает только при наличии ошибок 3322 и соответсвует действиям панели параметров воспроизведения защищенного содержимого.
Чтобы пользователь мог снова получить доступ к зашифрованному содержимому, приложение должно снова загрузить необходимые ваучеры с сервера управления правами доступа к содержимому. Вызов этой функции равнозначен вызову функции resetDRMVouchers()
объекта DRMManager.
Выдает
IOError — Невозможно удалить данные ваучера.
|
Связанные элементы API
Пример ( Использование этого примера )
NetStream.resetDRMVouchers();
resume | () | метод |
public function resume():void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Возобновляет воспроизведение приостановленного видеопотока. Если видео уже воспроизводится, вызов данного метода ни к чему не приведет.
Связанные элементы API
seek | () | метод |
public function seek(offset:Number):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Осуществляет поиск ключевого кадра (так называемого I-кадра), расположенного ближе всего к указанной точке. Ключевой кадр размещается в точке смещения, измеряемой в секундах от начала потока.
Видеопотоки обычно кодируются с двумя типами кадров: ключевые кадры (или I-кадры) и P-кадры. Ключевой кадр содержит все изображение, в то время как P-кадр является промежуточным кадром, предоставляющим дополнительную видеоинформацию между ключевыми кадрами. Как правило, в видеопотоке ключевой кадр ставится через каждые 10-50 кадров.
Во Flash Media Server предусмотрено несколько типов поведения поиска: улучшенный поиск и интеллектуальный поиск.
Улучшенный поиск
Улучшенный поиск включен по умолчанию. Чтобы выключить улучшенный поиск, во Flash Media Server задайте элементу EnhancedSeek
в файле конфигурации Application.xml
значение false
.
Если включен интеллектуальный поиск, то сервер генерирует новый ключевой кадр в точке смещения offset
на основе предыдущего ключевого кадра и любых промежуточных P-кадров. Однако генерирование ключевых кадров создает большую нагрузку на вычислительные ресурсы сервера, что может привести к искажению сгенерированного ключевого кадра. Если в качестве видеокодека применяется On2, то клиенту отправляются ключевой кадр перед точкой поиска и любые P-кадры между ключевым кадром и точкой поиска.
Если улучшенный поиск выключен, сервер начинает потоковое воспроизведение с ближайшего ключевого кадра. Предположим, что видеопоток имеет ключевые кадры на 0-й и 10-й секундах. При попытке перейти на 4-ю секунду, воспроизведение начинается с 4-й секунды, исходя из ключевого кадра на 0-й секунде. Изображение не меняется до тех пор, пока на десятой секунде не будет достигнут следующий ключевой кадр. Для того чтобы оптимизировать операцию поиска, необходимо сократить интервал между ключевыми кадрами. В нормальном режиме поиска нельзя запустить видео в точке между ключевыми кадрами.
Интеллектуальный поиск
Чтобы включить умный поиск, задайте для NetStream.inBufferSeek
значение true
.
Интеллектуальный поиск позволяет Flash Player осуществлять поиск в существующем предшествующем и последующем буфере. Когда интеллектуальный буфер выключен, при каждом вызове seek()
Flash Player опустошает буфер и запрашивает данные с сервера. Дополнительные сведения см. в описании NetStream.inBufferSeek
.
Поиск в режиме создания данных
Когда метод seek()
вызывается для объекта NetStream в режиме создания данных, все байты, передаваемые после этого методу appendBytes()
, игнорируются (не помещаются в буфер, не собираются в FIFO частичных сообщений и не анализируется для определения точек поиска), пока не будет вызван метод appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN)
или appendBytesAction(NetStreamAppendBytesAction.RESET_SEEK)
для сброса синтаксического анализатора. Сведения о режиме создания данных см. в описании метода NetStream.play()
.
Параметры
offset:Number — Приблизительное время (в секундах), к которому надо перейти в видеофайле. Если при работе с Flash Media Server параметр <EnhancedSeek> имеет значение true в файле конфигурации Application.xml (значение по умолчанию), сервер генерирует ключевой кадр со смещением offset .
|
Связанные элементы API
send | () | метод |
public function send(handlerName:String, ... arguments):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Отправляет сообщение по опубликованному потоку всем подписавшимся клиентам. Данный метод доступен только издателю указанного потока. Этот метод доступен только для использования вместе с сервером Flash Media Server. Чтобы обработать данное сообщение и отреагировать на него, создайте обработчик на объекте NetStream
- например, ns.HandlerName
.
Приложение Flash Player или AIR не проводит сериализацию методов или их данных, переменных для прототипов объектов или несчетных переменных. Для отображаемых объектов проигрыватель Flash Player или AIR сериализует не данные, а только сам путь.
Для добавления ключевых кадров данных в прямой поток, публикуемый на сервер Flash Media Server, можно вызвать метод send()
. Ключевой кадр данных — это сообщение, добавляемое сервером публикаций в прямой поток. Ключевые кадры данных обычно используются для добавления метаданных в прямой поток до того, как будет происходить захват данных (для этого потока) с камеры и микрофона. Издатель может добавлять ключевой кадр данных в любой момент в процессе публикации прямого потока. Ключевой кадр данных хранится в памяти сервера, пока издатель подключен к данному серверу.
Клиенты, подписанные на прямой поток до добавления ключевого кадра данных, получают этот кадр в момент его добавления в поток. Клиенты, подписывающиеся на прямой поток после добавления ключевого кадра данных, получают этот кадр в момент подписки.
Для добавления ключевого кадра метаданных в прямой поток, отправляемый на сервер Flash Media Server, используйте @setDataFrame
в качестве имени обработчика, а затем добавьте два дополнительных аргумента, например:
var ns:NetStream = new NetStream(nc); ns.send("@setDataFrame", "onMetaData", metaData);
Аргумент @setDataFrame
ссылается на специальный обработчик, встроенный в сервер Flash Media Server. Аргумент onMetaData
— это имя функции обратного вызова в клиентском приложении, которая прослушивает событие onMetaData
и извлекает метаданные. Третий элемент, metaData
, представляет собой экземпляр Object
или Array
со свойствами, определяющими значения метаданных.
Для удаления ключевого кадра метаданных, который был предварительно определен в потоке, используйте @clearDataFrame
:
ns.send("@clearDataFrame", "onMetaData");
Параметры
handlerName:String — Отправляемое сообщение, а также имя обработчика ActionScript, который должен получить это сообщение. Имя обработчика должно быть исключительно одноуровневым (то есть, форма «родительский/дочерний объект» не используется) и связанным с объектом потока. Не используйте в качестве имени обработчика зарезервированный термин. Например, использование close в качестве имени обработчика приводит к сбою метода. При работе с Flash Media Server используйте @setDataFrame , чтобы добавить ключевой кадр метаданных в прямой поток, а @clearDataFrame - чтобы удалить ключевой кадр.
| |
... arguments — Необязательные (дополнительные) аргументы любого типа. Они сериализуются и отправляются посредством подключения, при этом принимающий обработчик получает их в том же самом порядке. Если параметр представляет собой объект круглой формы (например, связанный в круглую форму список), сериализатор обрабатывает ссылки надлежащим образом. Если при работе с Flash Media Server в качестве первого аргумента используется @setDataFrame , то как второй аргумент следует использовать onMetaData . В качестве третьего аргумента передайте экземпляр Object или Array , в котором свойствами выступают метаданные. Для получения списка предлагаемых имен свойств см. Flash Media Server Developer Guide. Если в качестве первого аргумента указан @clearDataFrame , в качестве второго аргумента используйте onMetaData , третий аргумент не требуется.
|
Связанные элементы API
Пример ( Использование этого примера )
NetStream
. Один используется для публикации потока в реальном времени на сервере, в то время как второй объект осуществляет подписку на данный поток.
package { import flash.display.Sprite; import flash.net.NetConnection; import flash.net.NetStream; import flash.events.NetStatusEvent; import flash.media.Video; import flash.utils.setTimeout; public class TestExample extends Sprite { var nc:NetConnection = new NetConnection(); var ns1:NetStream; var ns2:NetStream; var vid:Video = new Video(300,300); var obj:Object = new Object(); public function TestExample() { nc.objectEncoding = 0; nc.addEventListener("netStatus", onNCStatus); nc.connect("rtmp://localhost/FlashVideoApp"); addChild(vid); } function onNCStatus(event:NetStatusEvent):void { switch (event.info.code) { case "NetConnection.Connect.Success": trace("You've connected successfully"); ns1 = new NetStream(nc); ns2 = new NetStream(nc); ns1.client = new CustomClient(); ns1.publish("dummy", "live"); ns2.client = new CustomClient(); vid.attachNetStream(ns2); ns2.play("dummy"); setTimeout(sendHello, 3000); break; case "NetStream.Publish.BadName": trace("Please check the name of the publishing stream" ); break; } } function sendHello():void { ns1.send("myFunction", "hello"); } } } class CustomClient { public function myFunction(event:String):void { trace(event); } }
private function netStatusHandler(event:NetStatusEvent):void { switch (event.info.code) { case "NetStream.Publish.Start": var metaData:Object = new Object(); metaData.title = "myStream"; metaData.width = 400; metaData.height = 200; ns.send("@setDataFrame", "onMetaData", metaData); ns.attachCamera( Camera.getCamera() ); ns.attachAudio( Microphone.getMicrophone() ); } }
onMetaData
. Обработчик событий onMetaData
не регистрируется с методом addEventListener()
. Он представляет собой функцию обратного вызова с именем onMetaData
, например:
public function onMetaData(info:Object):void { trace("width: " + info.width); trace("height: " + info.height); }
// Create a NetStream for playing var my_ns:NetStream = new NetStream(my_nc); my_video.attachNetStream(my_ns); // Play the stream record1 my_ns.play("record1", 0, -1, true); // Switch to the stream live1 and play for 5 seconds. // Since reset is false, live1 will start to play after record1 is done. my_ns.play("live1", -1 , 5, false);
//To play at normal speed var my_ns:NetStream = new NetStream(my_nc); my_ns.play("log", 0, -1); //To get the data messages all at once my_ns.play("log", 0, -1, 3);
setDRMAuthenticationCredentials | () | метод |
public function setDRMAuthenticationCredentials(userName:String, password:String, type:String):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Lite 4 |
Задает учетные данные для прохождения аутентификации DRM, необходимой для просмотра соответствующего зашифрованного содержимого.
Метод setDRMAuthenticationCredentials()
должен предоставлять учетные данные, известные поставщику содержимого или прокси-серверу и принимаемые ими. Это те же учетные данные, которые пользователь использует при получении разрешения на просмотр содержимого.
Параметры
userName:String — Действительное имя пользователя.
| |
password:String — Пароль для предоставленного имени пользователя.
| |
type:String — Строка, указывающая тип предоставленных учетных данных для аутентификации. Допустимыми значениями являются drm и proxy . Значением по умолчанию является drm .
|
Связанные элементы API
step | () | метод |
public function step(frames:int):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Переходит вперед или назад на указанное число кадров относительно отображаемого в данный момент кадра. Задайте положительное число для перехода вперед или отрицательное для перехода назад. Вызовите этот метод, чтобы создать функцию точной перемотки вперед и назад.
Примечание. Этот метод не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Этот метод доступен, только когда поток данных передается с сервера Flash Media Server версии 3.5.3 или более поздней и когда NetStream.inBufferSeek
имеет значение true
. Кроме того, целевой кадр должен находиться в буфере. Например, если в данный момент отображается кадр 120, а указано значение 1000, метод не срабатывает, если кадра 1120 нет в буфере.
Этот метод предназначен для использования вместе с методами pause()
или togglePause()
. Если во время воспроизведения делается шаг на 10 кадров вперед или назад без приостановки, эти шаги могут быть незаметными или выглядеть как дефект изображения. Кроме того, при вызове методов pause()
или togglePause
, выключается звук.
Если вызов NetStream.step()
успешно выполняется, свойству code
объекта info отправляется объект NetStatusEvent со значением NetStream.Step.Notify.
Параметры
frames:int |
Связанные элементы API
togglePause | () | метод |
public function togglePause():void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Приостанавливает или возобновляет воспроизведение потока. При первом вызове данный метод временно останавливает воспроизведение, при последующем вызове он продолжает воспроизведение. Применение этого метода позволяет пользователям временно останавливать или продолжать воспроизведение путем нажатия одной кнопки.
Связанные элементы API
asyncError | Событие |
flash.events.AsyncErrorEvent
свойство AsyncErrorEvent.type =
flash.events.AsyncErrorEvent.ASYNC_ERROR
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Отправляется, когда исключение создается асинхронным образом, то есть в коде, изначально имеющем асинхронную природу. Данное событие отправляется, если сервер вызывает метод на клиенте, который не был определен.
КонстантаAsyncErrorEvent.ASYNC_ERROR
определяет значение свойства type
объекта события asyncError
.
Это событие имеет следующие свойства:
Свойство | Значение |
---|---|
bubbles | false |
cancelable | false ; поведение по умолчанию, подлежащее отмене, не определено. |
currentTarget | Объект, активно обрабатывающий объект Event с помощью прослушивателя событий. |
target | Объект, отправляющий событие. |
error | Ошибка, запускаемая событием. |
Связанные элементы API
drmAuthenticate | Событие |
flash.events.DRMAuthenticateEvent
свойство DRMAuthenticateEvent.type =
flash.events.DRMAuthenticateEvent.DRM_AUTHENTICATE
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Lite 4 |
Отправляется, когда объект NetStream пытается воспроизвести содержимое, зашифрованное с помощью технологии управления цифровыми правами (DRM) и требующее ввода учетных данных пользователя для проверки подлинности перед воспроизведением.
Примечание. Это событие не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
С помощью метода setDRMAuthenticationCredentials()
объекта NetStream можно выполнить аутентификацию пользователя. При неудачной проверке подлинности пользователя приложение пытается проверить подлинность повторно и отправляет новое событие DRMAuthenticateEvent для объекта NetStream.
DRMAuthenticateEvent.DRM_AUTHENTICATE
определяет значение свойства type
объекта DRMAuthenticateEvent.
Это событие имеет следующие свойства:
Свойство | Значение |
---|---|
authenticationType | Указывает, должны ли предоставленные учетные данные проверяться сервером Flash Media Rights Management Server (FMRMS) или прокси-сервером. |
bubbles | false |
cancelable | false ; нет поведения по умолчанию для отмены. |
header | Заголовок файла с зашифрованным содержимым, передаваемый сервером. |
netstream | Объект NetStream, инициировавший событие. |
passwordPrompt | Запрос пароля пользователя, передаваемый сервером. |
target | Объект NetStream. |
urlPrompt | Запрос URL-адреса для отображения, передаваемый сервером. |
usernamePrompt | Запрос имени пользователя, передаваемый сервером. |
Связанные элементы API
drmError | Событие |
flash.events.DRMErrorEvent
свойство DRMErrorEvent.type =
flash.events.DRMErrorEvent.DRM_ERROR
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 10.1, Flash Lite 4 |
Отправляется, когда объект NetStream, пытающийся воспроизвести файл с DRM-шифрованием, сталкивается с ошибкой, связанной с DRM. Например, объект DRMErrorEvent отправляется в случае ошибки авторизации пользователя. Это может произойти потому, что пользователь не приобрел права на просмотр содержимого или поставщик содержимого не поддерживает приложение для его просмотра.
Примечание. Это событие не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
КонстантаDRMErrorEvent.DRM_ERROR
определяет значение свойства type
для объекта события drmError
.
Это событие имеет следующие свойства:
Свойство | Значение |
---|---|
bubbles | false |
cancelable | false ; поведение по умолчанию, подлежащее отмене, не определено. |
errorID | Числовой код ошибки, присвоенный проблеме. |
subErrorID | Код ошибки, содержащий более подробную информацию о возникшей проблеме. |
target | Объект NetStream. |
Связанные элементы API
drmStatus | Событие |
flash.events.DRMStatusEvent
свойство DRMStatusEvent.type =
flash.events.DRMStatusEvent.DRM_STATUS
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 10.1, Flash Lite 4 |
Отправляется при начале воспроизведения содержимого, зашифрованного с помощью технологии управления цифровыми правами (DRM) (когда пользователь проходит аутентификацию и получает право на просмотр содержимого).
Примечание. Это событие не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Объект DRMStatusEvent содержит информацию, связанную с ваучером, например о том, доступно ли содержимое в автономном режиме, когда истекает срок действия ваучера и пользователи больше не смогут смотреть содержимое.
КонстантаDRMStatusEvent.DRM_STATUS
определяет значение свойства type
объекта события drmStatus
.
Это событие имеет следующие свойства:
Свойство | Значение |
---|---|
bubbles | false |
cancelable | false ; поведение по умолчанию, подлежащее отмене, не определено. |
detail | Строка, объясняющая контекст события состояния. |
isAnonymous | Указывает, доступно ли содержимое с DRM-шифрованием без запроса учетных данных пользователя для проверки подлинности. |
isAvailableOffline | Указывает, доступно ли содержимое с DRM-шифрованием в автономном режиме. |
offlineLeasePeriod | Оставшееся число дней, в течение которых содержимое можно просматривать в автономном режиме. |
policies | Пользовательский объект события состояния DRM. |
target | Объект NetStream. |
voucherEndDate | Абсолютная дата завершения срока действия ваучера, после которой содержимое становится недоступным для просмотра пользователями |
contentData | Объект DRMContentData для содержимого |
voucher | Объект DRMVoucher для содержимого. |
isLocal | Указывает на то, хранится ли содержимое в локальной файловой системе |
Связанные элементы API
ioError | Событие |
flash.events.IOErrorEvent
свойство IOErrorEvent.type =
flash.events.IOErrorEvent.IO_ERROR
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Отправляется, когда происходит ошибка ввода-вывода, приводящая к сбою сетевой операции.
Задает значение свойстваtype
для объекта события ioError
.
Это событие имеет следующие свойства:
Свойство | Значение |
---|---|
bubbles | false |
cancelable | false ; поведение по умолчанию, подлежащее отмене, не определено. |
currentTarget | Объект, активно обрабатывающий объект Event с помощью прослушивателя событий. |
errorID | Ссылочный номер, связываемый с конкретной ошибкой (только AIR). |
target | Сетевой объект, с которым произошла ошибка ввода/вывода. |
text | Текст, отображаемый в качестве сообщения об ошибке. |
mediaTypeData | Событие |
flash.events.NetDataEvent
свойство NetDataEvent.type =
flash.events.NetDataEvent
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.3, AIR 2.7 |
Отправляется при воспроизведении видеоконтента и обработке определенных типов сообщений.
NetDataEvent отправляется для следующих сообщений:
- onCuePoint
- onImageData
- onMetaData
- onPlayStatus (для кода NetStream.Play.Complete)
- onTextData
- onXMPData
Примечание. Это событие не отправляется содержимым, которое воспроизводит Flash Player в браузере на устройстве с ОС Android или Blackberry Tablet или которое выполняется в AIR для iOS.
netStatus | Событие |
flash.events.NetStatusEvent
свойство NetStatusEvent.type =
flash.events.NetStatusEvent.NET_STATUS
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Отправляется, когда объект NetStream сообщает о своем состоянии или о случившейся ошибке. Событие netStatus
содержит свойство info
, представляющее собой информационный объект, который содержит определенные сведения о событии (например, количество успешных и неудачных попыток подключения).
type
для объекта события netStatus
.
Это событие имеет следующие свойства:
Свойство | Значение |
---|---|
bubbles | false |
cancelable | false ; поведение по умолчанию, подлежащее отмене, не определено. |
currentTarget | Объект, активно обрабатывающий объект Event с помощью прослушивателя событий. |
info | Объект со свойствами, описывающими состояние объекта или условие ошибки. |
target | Объект NetConnection или NetStream, сообщающий свое состояние. |
Связанные элементы API
onCuePoint | Событие |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Добавляет прослушиватель, реагирующий на достижение встроенной ключевой точки во время воспроизведения видеофайла. Данный прослушиватель можно использовать для запуска действий в коде, когда воспроизведение видео достигает определенной ключевой точки. Это позволяет синхронизировать другие действия в приложении с событиями воспроизведения видео. Дополнительные сведения о форматах видеофайлов, поддерживаемых Flash Media Server, см. на странице www.adobe.com/go/learn_fms_fileformats_ru.
Примечание. Это событие не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
onCuePoint
на самом деле является свойством объекта NetStream.client
. Это свойство можно найти в разделе «События», так как оно отвечает на событие данных при потоковой передаче мультимедийного содержимого с помощью Flash Media Server или при воспроизведении FLV-файла. Дополнительные сведения см. в описании класса NetStream. Нельзя использовать метод addEventListener()
или любой другой метод EventDispatcher для прослушивания или обработки onCuePoint
в качестве события. Определите функцию обратного вызова и присоедините ее к одному из следующих объектов:
- Объект, на который ссылается свойство
client
экземпляра NetStream. - Экземпляр подкласса NetStream. NetStream представляет собой защищенный класс. Это означает, что при выполнении кода объекту NetStream не могут быть добавлены какие-либо свойства или методы. Создайте подкласс класса NetStream и определите в нем обработчик событий. Этот подкласс можно также сделать динамическим и добавить функцию обработчика события в его экземпляр.
Связанный прослушиватель событий запускается после вызова метода NetStream.play()
, но перед продвижением точки воспроизведения.
В видеофайл можно встроить следующие типы ключевых точек:
- Ключевая точка навигации указывает внутри видеофайла ключевой кадр, которому соответствует свойство
time
данной точки. Ключевые точки навигации часто используются как закладки или точки входа, облегчающие пользователям перемещение по видеофайлу. - Ключевая точка события указывает время. Время может не соответствовать определенному ключевому кадру. Ключевая точка события обычно представляет собой определенный момент видео, в котором происходит что-то, что можно использовать для вызова других событий.
Объект события onCuePoint
имеет следующие свойства:
Свойство | Описание |
---|---|
name | Имя, присвоенное данной ключевой точке при встраивании в видеофайл. |
parameters | Ассоциативный массив парных строк «имя-значение», определенных для данной ключевой точки. В качестве имени или значения параметра можно использовать любую допустимую строку. |
time | Время (в секундах) возникновения ключевой точки во время воспроизведения видеофайла. |
type | Тип достигнутой ключевой точки (точка навигации или события). |
Ключевые точки в видеофайле можно определить при первом кодировании файла или при импортировании фрагмента ролика в инструменте разработки Flash с помощью мастера импорта видео.
Событие onMetaData
также извлекает информацию о ключевых точках в видеофайле. Тем не менее, событие onMetaData
получает информацию обо всех ключевых точках до начала воспроизведения видеоданных. Событие onCuePoint
получает сведения об отдельной ключевой точке в момент времени, указанной для данной точки во время воспроизведения.
Как правило, для того чтобы ваш код отреагировал на определенную ключевую точку в момент ее возникновения, следует применить в коде событие onCuePoint
, позволяющее инициировать какое-либо действие.
С помощью списка ключевых точек, предоставленных событию onMetaData
, пользователь может начинать воспроизведение видео в предварительно определенных точках внутри видеопотока. Чтобы воспроизвести видео с определенной ключевой точки, передайте значение свойства time
данной точки методу NetStream.seek()
.
Пример ( Использование этого примера )
var video:Video = new Video(); addChild(video); var nc:NetConnection = new NetConnection(); nc.connect(null); var ns:NetStream = new NetStream(nc); ns.client = {}; ns.client.onMetaData = ns_onMetaData; ns.client.onCuePoint = ns_onCuePoint; video.attachNetStream(ns); ns.play("http://www.helpexamples.com/flash/video/cuepoints.flv"); function ns_onMetaData(item:Object):void { trace("metaData"); // Resize video instance. video.width = item.width; video.height = item.height; // Center video instance on Stage. video.x = (stage.stageWidth - video.width) / 2; video.y = (stage.stageHeight - video.height) / 2; } function ns_onCuePoint(item:Object):void { trace("cuePoint"); trace(item.name + "\t" + item.time); }
Связанные элементы API
onDRMContentData | Событие |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.5, Flash Lite 4 |
Добавляет прослушиватель событий, реагирующий на извлечение приложением AIR метаданных DRM-содержимого, внедренных в мультимедийный файл.
Примечание. Это событие не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Объект DRMContentData содержит информацию, необходимую для получения ваучера на воспроизведение мультимедийного файла с защитой по технологии DRM. С помощью класса DRMManager можно загрузить ваучер с данной информацией.
onDRMContentData
является свойством объекта NetStream.client
. Это свойство описывается в разделе «События», так как оно отвечает на событие данных при предварительной загрузке внедренных данных из локального мультимедийного файла. Дополнительные сведения см. в описании класса NetStream. Нельзя использовать метод addEventListener()
или любой другой метод EventDispatcher для прослушивания или обработки onDRMContentData
в качестве события. В данном случае необходимо определить отдельную функцию обратного вызова и прикрепить ее непосредственно к одному из следующих объектов:
- Объект, на который ссылается свойство
client
экземпляра NetStream. - Экземпляр подкласса NetStream. NetStream представляет собой защищенный класс. Это означает, что при выполнении кода объекту NetStream не могут быть добавлены какие-либо свойства или методы. Тем не менее, можно создать подкласс NetStream и определить свой обработчик событий в этом подклассе. Также можно создать динамический подкласс и добавить функцию обработчика событий отдельному экземпляру подкласса.
Связанные элементы API
onImageData | Событие |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.115.0, Flash Lite 4 |
Добавляет прослушиватель событий, реагирующий на получение проигрывателем Flash Player графических данных в виде массива байт, встроенного в воспроизводимый мультимедийный файл. Данные изображения могут быть преобразованы в содержимое формата JPEG, PNG или GIF. Используйте метод flash.display.Loader.loadBytes()
для загрузки байтового массива в экранный объект.
Примечание. Это событие не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
onImageData
на самом деле является свойством объекта NetStream.client
. Это свойство можно найти в разделе «События», так как оно отвечает на событие данных при потоковой передаче мультимедийного содержимого с помощью Flash Media Server или при воспроизведении FLV-файла. Дополнительные сведения см. в описании класса NetStream. Для прослушивания или обработки onImageData
в качестве события нельзя использовать ни метод addEventListener()
, ни любые другие методы EventDispatcher. Определите одну функцию обратного вызова и присоедините ее к одному из следующих объектов:
- Объект, на который ссылается свойство
client
экземпляра NetStream. - Экземпляр подкласса NetStream. NetStream представляет собой защищенный класс. Это означает, что при выполнении кода объекту NetStream не могут быть добавлены какие-либо свойства или методы. Создайте подкласс класса NetStream и определите в нем обработчик событий. Этот подкласс можно также сделать динамическим и добавить функцию обработчика события в его экземпляр.
Связанный прослушиватель событий запускается после вызова метода NetStream.play()
, но перед продвижением точки воспроизведения.
Объект события onImageData содержит данные изображения в качестве байтового массива, переданного по каналу данных AMF0.
Пример ( Использование этого примера )
Netstream.client
для обработки функций обратного вызова для onTextData
и onImageData
. Для хранения байтового массива функция onImageDataHandler()
использует объект события onImageData imageData
. Функция onTextDataHandler()
использует объект события onTextData textData
для хранения блоков текстовых данных (каждый блок данных является свойством объекта textData
).
Значение параметра yourURL
в коде необходимо изменить на фактическое место размещения мультимедийного файла, содержащего метаданные в форме текста или изображения.
Также для обработки данных изображения и текста можно использовать специальный класс. Дополнительные сведения и примеры см. в статье Обработка метаданных и ключевых точек в видеоматериалах Flash.
package { import flash.display.*; import flash.net.*; import flash.media.*; import flash.system.*; import flash.events.*; public class OnTextDataExample extends Sprite { public function OnTextDataExample():void { var my_video:Video = new Video(); addChild(my_video); var customClient:Object = new Object(); customClient.onImageData = onImageDataHandler; customClient.onTextData = onTextDataHandler; var my_nc:NetConnection = new NetConnection(); my_nc.connect(null); var my_ns:NetStream = new NetStream(my_nc); my_ns.client = customClient; my_video.attachNetStream(my_ns); my_ns.play("yourURL"); } public function onImageDataHandler(imageData:Object):void { trace("imageData length: " + imageData.data.length); var imageloader:Loader = new Loader(); imageloader.loadBytes(imageData.data); // imageData.data is a ByteArray object. addChild(imageloader); } public function onTextDataHandler(textData:Object):void { trace("--- textData properties ----"); var key:String; for (key in textData) { trace(key + ": " + textData[key]); } } } }
Связанные элементы API
onMetaData | Событие |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Добавляет прослушиватель, реагирующий на получение проигрывателем Flash Player описательной информации, встроенной в воспроизводимое видео. Дополнительные сведения о форматах видеофайлов, поддерживаемых Flash Media Server, см. в www.adobe.com/go/learn_fms_fileformats_ru.
onMetaData
на самом деле является свойством объекта NetStream.client
. Это свойство можно найти в разделе «События», так как оно отвечает на событие данных при потоковой передаче мультимедийного содержимого с помощью Flash Media Server или при воспроизведении FLV-файла. Дополнительные сведения см. в описании класса NetStream и свойства NetStream.client
. Для прослушивания или обработки onImageData
в качестве события нельзя использовать ни метод addEventListener()
, ни любые другие методы EventDispatcher. Определите одну функцию обратного вызова и присоедините ее к одному из следующих объектов:
- Объект, на который ссылается свойство
client
экземпляра NetStream. - Экземпляр подкласса NetStream. NetStream представляет собой защищенный класс. Это означает, что при выполнении кода объекту NetStream не могут быть добавлены какие-либо свойства или методы. Можно создать подкласс класса NetStream и определить в нем обработчик событий. Этот подкласс можно также сделать динамическим и добавить функцию обработчика события в его экземпляр.
Служебная программа Flash Video Exporter (версии 1.1 или более поздней версии) встраивает различные данные (продолжительность видео, дата создания, скорости передачи данных и т.п.) в сам видеофайл. Разные видеокодеры вставляют разные наборы метаданных.
Связанный прослушиватель событий запускается после вызова метода NetStream.play()
, но перед продвижением точки воспроизведения.
В большинстве случаев, значение продолжительности, встроенное в метаданные потока, является не точным, а лишь приблизительным показателем фактической продолжительности. Другими словами, оно не всегда совпадает со значением свойства NetStream.time
, когда точка воспроизведения находится в конце видеопотока.
Объект события, передаваемый обработчику событий onMetaData, содержит одно свойство для каждого элемента данных.
Пример ( Использование этого примера )
var video:Video = new Video(); addChild(video); var nc:NetConnection = new NetConnection(); nc.connect(null); var ns:NetStream = new NetStream(nc); ns.client = {}; ns.client.onMetaData = ns_onMetaData; ns.client.onCuePoint = ns_onCuePoint; video.attachNetStream(ns); ns.play("http://www.helpexamples.com/flash/video/cuepoints.flv"); function ns_onMetaData(item:Object):void { trace("metaData"); // Resize video instance. video.width = item.width; video.height = item.height; // Center video instance on Stage. video.x = (stage.stageWidth - video.width) / 2; video.y = (stage.stageHeight - video.height) / 2; } function ns_onCuePoint(item:Object):void { trace("cuePoint"); trace(item.name + "\t" + item.time); }
Связанные элементы API
onPlayStatus | Событие |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Добавляет прослушиватель, который реагирует на завершение воспроизведения потока объектом NetStream. Связанный объект событий передает информацию в дополнение к сведениям, возвращенным событием netStatus
. С помощью этого свойства можно запускать действия в коде, когда объект NetStream переключится с одного потока на другой поток в списке воспроизведения (на что указывает информационный объект NetStream.Play.Switch
) или когда объект NetStream завершит воспроизведение (на что указывает информационный объект NetStream.Play.Complete
).
Объект onPlayStaus
на самом деле является свойством объекта NetStream.client
. Это свойство можно найти в разделе «События», так как оно отвечает на событие данных при потоковой передаче мультимедийного содержимого с помощью Flash Media Server или при воспроизведении FLV-файла. Дополнительные сведения см. в описании класса NetStream. Нельзя использовать метод addEventListener()
или любой другой метод EventDispatcher для прослушивания или обработки onPlayStatus
в качестве события. Определите функцию обратного вызова и присоедините ее к одному из следующих объектов:
- Объект, на который ссылается свойство
client
экземпляра NetStream. - Экземпляр подкласса NetStream. NetStream представляет собой защищенный класс. Это означает, что при выполнении кода объекту NetStream не могут быть добавлены какие-либо свойства или методы. Создайте подкласс класса NetStream и определите в нем обработчик событий. Этот подкласс можно также сделать динамическим и добавить функцию обработчика события в его экземпляр.
Данное событие возвращает информационный объект со следующими свойствами:
Свойство code | Свойство level | Значение |
---|---|---|
NetStream.Play.Switch | status | Подписчик переключается в списке воспроизведения с одного потока на другой. |
NetStream.Play.Complete | status | Воспроизведение завершено. |
NetStream.Play.TransitionComplete | status | Подписчик переключается на новый поток в результате переключения скорости передачи битов потока. |
Связанные элементы API
onSeekPoint | Событие |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2, Flash Lite 4 |
Вызывается синхронно с appendBytes()
, когда в ходе разбора встречается точка, которая рассматривается как возможная точка поиска (например, ключевой кадр видеоролика). Используйте это событие, чтобы создать таблицу точек поиска. Значение byteCount
соответствует значению byteCount
первого байта подлежащего разбору сообщения для данной точки поиска, оно сбрасывается до нуля, как описано выше. Чтобы выполнить поиск, в событии NetStream.Seek.Notify
найдите байты, которые начинаются в точке, доступной для поиска, и вызовите метод appendBytes(bytes)
. Если аргумент bytes
представлен объектом ByteArray
, который содержит байты, начинающиеся в точке, доступной для поиска, воспроизведение видеоролика начинается с этой точки поиска.
Примечание. Вызовы метода appendBytes()
, выполненные в рамках такого обратного вызова, игнорируются.
Примечание. Это событие не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Свойство onSeekPoint
является свойством объекта NetStream.client
. Это свойство описано в разделе, посвященном событиям, так как оно отвечает на данные, передаваемые методу appendBytes()
. Дополнительные сведения см. в описании класса NetStream и свойства NetStream.client
. Для прослушивания или обработки onSeekPoint
в качестве события нельзя использовать ни метод addEventListener()
, ни любые другие методы EventDispatcher. Чтобы использовать onSeekPoint
, определите функцию обратного вызова и присоедините ее к одному из следующих объектов:
- Объект, на который ссылается свойство
client
экземпляра NetStream. - Экземпляр подкласса NetStream. NetStream представляет собой защищенный класс. Это означает, что при выполнении кода объекту NetStream не могут быть добавлены какие-либо свойства или методы. Однако можно создать подкласс класса NetStream и определить в нем обработчик событий. Этот подкласс можно также сделать динамическим и добавить функцию обработчика события в его экземпляр.
Связанные элементы API
onTextData | Событие |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.115.0, Flash Lite 4 |
Добавляет прослушиватель событий, реагирующий на получение проигрывателем Flash Player текстовых данных, встроенных в воспроизводимый мультимедийный файл. Текстовые данные представлены в формате UTF-8 и могут содержать информацию о форматировании на основе спецификации 3GP Timed Text.
Примечание. Это событие не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
onTextData
на самом деле является свойством объекта NetStream.client
. Это свойство можно найти в разделе «События», так как оно отвечает на событие данных при потоковой передаче мультимедийного содержимого с помощью Flash Media Server или при воспроизведении FLV-файла. Дополнительные сведения см. в описании класса NetStream. Нельзя использовать метод addEventListener()
или любой другой метод EventDispatcher для прослушивания или обработки onTextData
в качестве события. Определите функцию обратного вызова и присоедините ее к одному из следующих объектов:
- Объект, на который ссылается свойство
client
экземпляра NetStream. - Экземпляр подкласса NetStream. NetStream представляет собой защищенный класс. Это означает, что при выполнении кода объекту NetStream не могут быть добавлены какие-либо свойства или методы. Создайте подкласс класса NetStream и определите в нем обработчик событий. Этот подкласс можно также сделать динамическим и добавить функцию обработчика события в его экземпляр.
Связанный прослушиватель событий запускается после вызова метода NetStream.play()
, но перед продвижением точки воспроизведения.
Объект события onTextData содержит по одному свойству для каждого фрагмента текстовых данных.
Пример ( Использование этого примера )
Netstream.client
для обработки функций обратного вызова для onTextData
и onImageData
. Для хранения байтового массива функция onImageDataHandler()
использует объект события onImageData imageData
. Функция onTextDataHandler()
использует объект события onTextData textData
для хранения блоков текстовых данных (каждый блок данных является свойством объекта textData
).
Значение параметра yourURL
в коде необходимо изменить на фактическое место размещения мультимедийного файла, содержащего метаданные в форме текста или изображения.
Также для обработки данных изображения и текста можно использовать специальный класс. Дополнительные сведения и примеры см. в статье Обработка метаданных и ключевых точек в видеоматериалах Flash.
package { import flash.display.*; import flash.net.*; import flash.media.*; import flash.system.*; import flash.events.*; public class OnTextDataExample extends Sprite { public function OnTextDataExample():void { var my_video:Video = new Video(); addChild(my_video); var customClient:Object = new Object(); customClient.onImageData = onImageDataHandler; customClient.onTextData = onTextDataHandler; var my_nc:NetConnection = new NetConnection(); my_nc.connect(null); var my_ns:NetStream = new NetStream(my_nc); my_ns.client = customClient; my_video.attachNetStream(my_ns); my_ns.play("yourURL"); } public function onImageDataHandler(imageData:Object):void { trace("imageData length: " + imageData.data.length); var imageloader:Loader = new Loader(); imageloader.loadBytes(imageData.data); // imageData.data is a ByteArray object. addChild(imageloader); } public function onTextDataHandler(textData:Object):void { trace("--- textData properties ----"); var key:String; for (key in textData) { trace(key + ": " + textData[key]); } } } }
Связанные элементы API
onXMPData | Событие |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Устанавливает прослушиватель, реагирующий на получение проигрывателем Flash Player информации о платформе Adobe Extensible Metadata Platform (XMP), встроенной в воспроизводимое видео. Дополнительные сведения о форматах видеофайлов, поддерживаемых Flash Media Server, см. на странице www.adobe.com/go/learn_fms_fileformats_ru.
Примечание. Это событие не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
onXMPData
на самом деле является свойством объекта NetStream.client
. Это свойство можно найти в разделе «События», так как оно отвечает на событие данных при потоковой передаче мультимедийного содержимого с помощью Flash Media Server или при воспроизведении FLV-файла. Дополнительные сведения см. в описании класса NetStream и свойства NetStream.client
. Для прослушивания или обработки onImageData
в качестве события нельзя использовать ни метод addEventListener()
, ни любые другие методы EventDispatcher. Определите функцию обратного вызова и присоедините ее к одному из следующих объектов:
- Объект, на который ссылается свойство
client
экземпляра NetStream. - Экземпляр подкласса NetStream. NetStream представляет собой защищенный класс. Это означает, что при выполнении кода объекту NetStream не могут быть добавлены какие-либо свойства или методы. Однако можно создать подкласс класса NetStream и определить в нем обработчик событий. Этот подкласс можно также сделать динамическим и добавить функцию обработчика события в его экземпляр.
Связанный прослушиватель событий запускается после вызова метода NetStream.play()
, но перед продвижением точки воспроизведения.
Объект, передаваемый функции обработчика событияonXMPData()
, имеет одно свойство data
, содержащее строковое значение. Эта строка генерируется из поля UUID верхнего уровня. (Для поля верхнего уровня 128-разрядный UUID имеет значение BE7ACFCB-97A9-42E8-9C71-999491E3AFAC
.) Это поле UUID верхнего уровня содержит только один документ XML, представленный в виде строки UTF-8, заканчивающейся на 0.
Связанные элементы API
status | Событие |
flash.events.StatusEvent
свойство StatusEvent.type =
flash.events.StatusEvent.STATUS
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 1.0, Flash Lite 4 |
Отправляется при попытке приложения воспроизвести содержимое, зашифрованное с помощью технологии управления цифровыми правами (DRM), путем вызова метода NetStream.play()
. Значение свойства кода состояния будет равно DRM.encryptedFLV
.
Примечание. Это событие не поддерживается для видео H.264 в среде AIR 3.0 для ОС iOS.
Задает значение свойстваtype
для объекта события status
.
Это событие имеет следующие свойства:
Свойство | Значение |
---|---|
bubbles | false |
cancelable | false ; поведение по умолчанию, подлежащее отмене, не определено. |
code | Описание состояния объекта. |
currentTarget | Объект, активно обрабатывающий объект Event с помощью прослушивателя событий. |
level | Категория сообщения, например, status , warning или error . |
target | Объект, сообщающий свое состояние. |
Связанные элементы API
CONNECT_TO_FMS | Константа |
public static const CONNECT_TO_FMS:String = "connectToFMS"
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Статический объект, передаваемый в качестве параметра конструктору для экземпляра NetStream. Это значение по умолчанию для второго параметра в конструкторе NetStream. Оно не используется приложением для последовательного воспроизведения содержимого. Когда этот параметр используется, конструктор создает подключение к экземпляру Flash Media Server.
DIRECT_CONNECTIONS | Константа |
public static const DIRECT_CONNECTIONS:String = "directConnections"
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Создает подключение между одноранговыми издателями Передайте эту строку в качестве второго (необязательного) параметра конструктору для экземпляра NetStream. С помощью этой строки приложение может создать подключение NetStream с целью публикации аудио и видео для клиентов.
В данном примере код, создающий объекты Video и NetStream, а также вызывающий методы Video.attachNetStream()
и NetStream.play()
, размещен в функции обработчика. Обработчик вызывается только при успешном подключении к объекту NetConnection (другими словами, когда событие netStatus
возвращает объект info
со свойством code
, что свидетельствует об успешном выполнении задачи). Рекомендуется перед вызовом NetStream.play()
дождаться успешного подключения.
package { import flash.display.Sprite; import flash.events.NetStatusEvent; import flash.events.SecurityErrorEvent; import flash.media.Video; import flash.net.NetConnection; import flash.net.NetStream; import flash.events.Event; public class NetConnectionExample extends Sprite { private var videoURL:String = "http://www.helpexamples.com/flash/video/cuepoints.flv"; private var connection:NetConnection; private var stream:NetStream; private var video:Video = new Video(); public function NetConnectionExample() { connection = new NetConnection(); connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); connection.connect(null); } private function netStatusHandler(event:NetStatusEvent):void { switch (event.info.code) { case "NetConnection.Connect.Success": connectStream(); break; case "NetStream.Play.StreamNotFound": trace("Stream not found: " + videoURL); break; } } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function connectStream():void { addChild(video); var stream:NetStream = new NetStream(connection); stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); stream.client = new CustomClient(); video.attachNetStream(stream); stream.play(videoURL); } } } class CustomClient { public function onMetaData(info:Object):void { trace("metadata: duration=" + info.duration + " width=" + info.width + " height=" + info.height + " framerate=" + info.framerate); } public function onCuePoint(info:Object):void { trace("cuepoint: time=" + info.time + " name=" + info.name + " type=" + info.type); } }
mdata
используется для установки ширины и высоты видеоэкземпляра video
:
//Place the following in the connectStream() function //in the NetConnectionExample code var metaSniffer:Object=new Object(); stream.client=metaSniffer; //stream is the NetStream instance metaSniffer.onMetaData=getMeta; // Add the following function within the NetConnectionExample class private function getMeta (mdata:Object):void { video.width=mdata.width/2; video.height=mdata.height/2; }
Tue Jun 12 2018, 11:34 AM Z