Pakiet | flash.net |
Klasa | public class NetStream |
Dziedziczenie | NetStream EventDispatcher Object |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Klasa NetStream może być stosowana w następujących celach:
- Wywołanie metody
NetStream.play()
służy do odtworzenia pliku multimedialnego z dysku lokalnego, serwera sieci Web lub serwera Flash Media Server. - Wywołanie metody
NetStream.publish()
służy do publikowania wideo, dźwięku oraz strumienia danych na serwerze Flash Media Server. - Wywołanie metody
NetStream.send()
służy do wysyłania komunikatów danych do wszystkich klientów subskrybujących. - Wywołanie metody
NetStream.send()
służy do dodawania metadanych do strumienia „na żywo”. - Wywołanie metody
NetStream.appendBytes
umożliwia przekazanie danych w obiekcie ByteArray do obiektu NetStream.
Uwaga: Nie można odtwarzać i publikować strumienia za pomocą tego samego obiektu NetStream.
Środowisko Adobe AIR oraz program Flash Player 9.0.115.0 i nowsze wersje obsługują pliki pomocnicze uzyskane na podstawie standardowego formatu „kontenerowego” MPEG-4. Są to pliki F4V, MP4, M4A, MOV, MP4V, 3GP i 3G2, o ile zawierają wideo zakodowane w formacie H.264 i/lub dźwięk zakodowany w formacie HE-AAC v2. Standard H.264 zapewnia wyższą jakość wideo przy mniejszej szybkości transmisji w porównaniu z takim samym profilem kodowania w standardach Sorenson i On2. AAC jest standardowym formatem dźwięku zdefiniowanym w ramach standardu wideo MPEG-4. W formacie HE-AAC v2, stanowiącym rozszerzenie formatu AAC, stosowane są techniki replikacji pasma widmowego (SBR, ang. spectral band replication) i stereofonii parametrycznej (PS, ang. parametric stereo) w celu zwiększenia efektywności kodowania przy niskiej liczbie bitów na sekundę.
Informacje na temat obsługiwanych kodeków i formatów plików można znaleźć w następującej dokumentacji:
- Dokumentacja serwera Flash Media Server
- Exploring Flash Player support for high-definition H.264 video and AAC audio
- FLV/F4V open specification documents
Odbieranie danych ze strumienia serwera Flash Media Server, stopniowo pobieranego pliku F4V lub stopniowo pobieranego pliku FLV
Serwer Flash Media Server, pliki F4V oraz pliki FLV mogą być źródłem obiektów zdarzeń zawierających dane w konkretnych punktach przesyłanego lub odtwarzanego strumienia danych. Podczas odtwarzania dane mogą być obsługiwane ze strumienia lub pliku FLV na dwa sposoby:
-
Skojarz właściwość client z modułem obsługi zdarzeń, aby otrzymać obiekt danych. Użyj właściwości
NetStream.client
, aby przypisać obiekt do wywoływania określonych funkcji obsługi danych. Obiekt przypisany do właściwościNetStream.client
może wykrywać następujące punkty danych:onCuePoint()
,onImageData()
,onMetaData()
,onPlayStatus()
,onSeekPoint()
,onTextData()
ionXMPData()
. Napisz procedury wewnątrz tych funkcji, aby obsłużyć podczas odtwarzania obiekt danych zwrócony ze strumienia. Więcej informacji można znaleźć w opisie właściwościNetStream.client
. - Skojarz właściwość client z podklasą NetStream, a następnie napisz moduł obsługi zdarzeń, aby otrzymać obiekt danych. NetStream jest klasą zapieczętowaną, co oznacza, że w środowisku wykonawczym do obiektu NetStream nie można dodawać właściwości ani metod. Można jednak utworzyć podklasę klasy NetStream i zdefiniować podprogram obsługi zdarzeń w takiej podklasie. Możliwe jest także utworzenie podklasy dynamicznej i dodanie podprogramu obsługi zdarzeń do instancji podklasy.
Przed użyciem replikacji obiektów, routingu ukierunkowanego lub interfejsów API publikowania należy zaczekać, aż zostanie odebrane zdarzenie NetGroup.Neighbor.Connect
.
Uwaga: aby wysłać dane za pomocą pliku audio, np. pliku MP3, należy użyć klasy Sound w celu skojarzenia pliku audio z obiektem Sound. Następnie, należy skorzystać z właściwości Sound.id3
w celu wczytania metadanych z pliku dźwiękowego.
Obsługa plików wideo zakodowanych za pomocą kodeka H.264 w środowisku AIR dla systemu iOS
W przypadku plików wideo w formacie H.264 środowisko AIR 3.0 (i nowsze wersje) dla systemu iOS obsługuje podzbiór pełnego interfejsu API NetStream. Poniższa tabela zawiera listę elementów składowych klasy NetStream przeznaczonych do odtwarzania, które nie są obsługiwane w środowisku AIR dla systemu iOS:
Nieobsługiwane właściwości | Nieobsługiwane metody | Nieobsługiwane zdarzenia |
---|---|---|
bufferTime | appendBytes() | onCuePoint (działa tylko w przypadku plików FLV) |
bufferLength | appendBytesAction() | onImageData |
backBufferTime | step() | onSeekPoint |
backBufferLength | onTextData | |
bufferTimeMax | onXMPData | |
bytesLoaded | drmError | |
currentFPS | drmStatus | |
inBufferSeek | onDRMContentData | |
info | drmAuthenticate | |
liveDelay | Kod zdarzenia stanu DRM.encryptedFLV | |
maxPauseBufferTime | ||
soundTransform | ||
Wszystkie właściwości opisujące połączenia RTMFP |
Więcej informacji na temat korzystania ze środowiska AIR for iOS można uzyskać, zapoznając się z opisem metody NetStream.play()
.
Powiązane elementy interfejsu API
Właściwość | Zdefiniowane przez | ||
---|---|---|---|
audioReliable : Boolean
W przypadku połączeń RTMFP określa, czy dźwięk jest przesyłany w pełni niezawodnie. | NetStream | ||
audioSampleAccess : Boolean
W przypadku połączeń RTMFP określa, czy subskrybenci P2P tego strumienia NetStream mogą przechwytywać strumień audio. | NetStream | ||
backBufferLength : Number [tylko do odczytu]
Liczba sekund danych wyświetlonych wcześniej, które są zapisane w buforze na potrzeby cofania i odtwarzania. | NetStream | ||
backBufferTime : Number
Określa (w sekundach) ilość danych wyświetlonych wcześniej, jaką program Flash Player próbuje buforować na potrzeby przewijania wstecz i odtwarzania. | NetStream | ||
bufferLength : Number [tylko do odczytu]
Czas odtwarzania aktualnie buforowanych danych (w sekundach). | NetStream | ||
bufferTime : Number
Określa czas buforowania komunikatów przed rozpoczęciem wyświetlania strumienia. | NetStream | ||
bufferTimeMax : Number
Określa (w sekundach) maksymalną długość buforu używanego do strumieniowego przesyłania treści w czasie rzeczywistym. | NetStream | ||
bytesLoaded : uint [tylko do odczytu]
Liczba bajtów załadowanych do aplikacji. | NetStream | ||
bytesTotal : uint [tylko do odczytu]
Całkowita liczba bajtów pliku ładowanego do aplikacji. | NetStream | ||
checkPolicyFile : Boolean
Określa, czy przed rozpoczęciem ładowania pliku wideo aplikacja powinna podjąć próbę pobrania z serwera międzydomenowego pliku reguł. | NetStream | ||
client : Object
Określa obiekt na którym wywoływane są metody wywołania zwrotnego w celu obsługi danych strumieniowych lub pliku F4V/FLV. | NetStream | ||
constructor : Object
Odwołanie do obiektu klasy lub funkcji konstruktora, dotyczące danej instancji obiektu. | Object | ||
currentFPS : Number [tylko do odczytu]
Liczba wyświetlanych klatek na sekundę. | NetStream | ||
dataReliable : Boolean
W przypadku połączeń RTMFP określa, czy wywołania NetStream.send() są realizowane w pełni niezawodnie. | NetStream | ||
farID : String [tylko do odczytu]
W przypadku połączeń RTMFP jest to identyfikator odległego węzła połączonego z instancją NetStream. | NetStream | ||
farNonce : String [tylko do odczytu]
W przypadku połączeń RTMFP i RTMPE jest to wartość wybrana przez drugi koniec strumienia, unikatowa dla tego połączenia. | NetStream | ||
inBufferSeek : Boolean
Określa, czy wyświetlane dane są buforowane na potrzeby inteligentnego wyszukiwania (TRUE), czy nie (FALSE). | NetStream | ||
info : NetStreamInfo [tylko do odczytu]
Zwraca obiekt NetStreamInfo, którego właściwości zawierają statystyki o jakości usługi. | NetStream | ||
liveDelay : Number [tylko do odczytu]
Ilość danych (liczba sekund) strumienia subskrypcji w trybie "na żywo" (bez buforowania). | NetStream | ||
maxPauseBufferTime : Number
Określa czas buforowania komunikatów w trybie wstrzymania, w sekundach. | NetStream | ||
multicastAvailabilitySendToAll : Boolean
W przypadku połączeń RTMFP określa, czy komunikaty multiemisji P2P o dostępności fragmentów są wysyłane do wszystkich węzłów równorzędnych, czy tylko do jednego węzła. | NetStream | ||
multicastAvailabilityUpdatePeriod : Number
W przypadku połączeń RTMFP określa okres (w sekundach) między operacjami wysyłania do węzłów równorzędnych komunikatów informujących o dostępności fragmentów multimediów w multiemisji P2P na lokalnym węźle. | NetStream | ||
multicastFetchPeriod : Number
W przypadku połączeń RTMFP określa czas w sekundach, jaki upływa między uzyskaniem przez węzeł lokalny informacji o dostępności fragmentu multimediów w multiemisji P2P a próbą pobrania tego fragmentu z węzła równorzędnego. | NetStream | ||
multicastInfo : NetStreamMulticastInfo [tylko do odczytu]
W przypadku połączeń RTMFP zwraca obiekt NetStreamMulticastInfo, którego właściwości zawierają dane statystyczne o jakości usług. | NetStream | ||
multicastPushNeighborLimit : Number
W przypadku połączeń RTMFP określa maksymalną liczbę węzłów równorzędnych, do których mają być proaktywnie przekazywane multimedia przesyłane w multiemisji. | NetStream | ||
multicastRelayMarginDuration : Number
W przypadku połączeń RTMFP określa czas (w sekundach), przez jaki dane multiemisji P2P pozostają dostępne do wysłania do węzłów równorzędnych, które zażądają ich już po upływie okna czasowego. | NetStream | ||
multicastWindowDuration : Number
W przypadku połączeń RTMFP określa w sekundach długość okna czasowego składania fragmentów multiemisji P2P. | NetStream | ||
nearNonce : String [tylko do odczytu]
W przypadku połączeń RTMFP i RTMPE jest to wartość wybrana przez ten koniec strumienia, unikatowa dla tego połączenia. | NetStream | ||
objectEncoding : uint [tylko do odczytu]
Kodowanie obiektów (wersja AMF) dotyczące tego obiektu NetStream. | NetStream | ||
peerStreams : Array [tylko do odczytu]
Obiekt przechowujący wszystkie subskrybujące instancje NetStream, które nasłuchują tej publikującej instancji NetStream. | NetStream | ||
soundTransform : flash.media:SoundTransform
Zapewnia kontrolę nad dźwiękiem reprezentowanym przez ten obiekt NetStream. | NetStream | ||
time : Number [tylko do odczytu]
Położenie głowicy odtwarzania (w sekundach). | NetStream | ||
useHardwareDecoder : Boolean
Określa, czy w strumieniu ma być używane dekodowanie przyspieszane sprzętowo. | NetStream | ||
useJitterBuffer : Boolean
Minimalizuje opóźnienia w przypadku przesyłania strumieniowego na żywo bez bufora (bufferTime = 0). | NetStream | ||
videoReliable : Boolean
W przypadku połączeń RTMFP określa, czy wideo jest przesyłane w pełni niezawodnie. | NetStream | ||
videoSampleAccess : Boolean
W przypadku połączeń RTMFP określa, czy subskrybenci P2P tego strumienia NetStream mogą przechwytywać strumień wideo. | NetStream | ||
videoStreamSettings : VideoStreamSettings
Określa właściwości kompresji strumienia. | NetStream |
Metoda | Zdefiniowane przez | ||
---|---|---|---|
Tworzy strumień, którego można używać w celu odtwarzania plików multimedialnych i wysyłania danych za pomocą obiektu NetConnection. | NetStream | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Rejestruje obiekt detektora zdarzeń w obiekcie EventDispatcher, dzięki czemu detektor będzie otrzymywał powiadomienia o zdarzeniu. | EventDispatcher | ||
Przekazuje obiekt ByteArray do obiektu NetStream w celu odtworzenia. | NetStream | ||
Wskazuje przerwę na osi czasu, opróżnia kolejkę FIFO i informuje analizator bajtów, aby oczekiwał nagłówka pliku lub początku znacznika FLV. | NetStream | ||
Przyłącza strumień do nowego obiektu NetConnection. | NetStream | ||
Dołącza do obiektu NetStream strumień audio pochodzący z obiektu Microphone przekazanego jako źródło. | NetStream | ||
Rozpoczyna przechwytywanie danych wideo z kamery lub zatrzymuje przechwytywanie, jeśli parametr theCamera ma wartość null. | NetStream | ||
Zatrzymuje odtwarzanie wszystkich danych strumienia, ustawia właściwość czasu na 0 i czyni strumień dostępnym dla innych celów. | NetStream | ||
Wywołuje zdarzenie, tj. kieruje je do przepływu zdarzeń. | EventDispatcher | ||
Zwalnia wszystkie źródła kontrolowane przez obiekt NetStream. | NetStream | ||
Sprawdza, czy obiekt EventDispatcher zawiera jakiekolwiek detektory zarejestrowane dla konkretnego typu zdarzeń. | EventDispatcher | ||
Wskazuje, czy dla obiektu zdefiniowano określoną właściwość. | Object | ||
Wskazuje, czy instancja klasy Object należy do łańcucha prototypów obiektu określonego jako parametr. | Object | ||
Wywoływana, gdy strumień publikowania między równorzędnymi komputerami odpowiada strumieniowi subskrypcji między równorzędnymi komputerami. | NetStream | ||
Wstrzymuje odtwarzanie strumienia wideo. | NetStream | ||
Odtwarza plik multimedialny z katalogu lokalnego lub serwera sieci Web; odtwarza plik multimedialny lub strumień „na żywo” z serwera Flash Media Server. | NetStream | ||
Umożliwia płynne przełączanie między plikami z różnymi szybkościami transmisji i wznowienie działania obiektu NetStream po przerwaniu i ponownym nawiązaniu połączenia. | NetStream | ||
Wyodrębnia metadane DRM z przechowywanego lokalnie pliku multimedialnego. | NetStream | ||
Wskazuje, czy określona właściwość istnieje i jest przeliczalna. | Object | ||
Wysyła strumieniowo dane audio, wideo i komunikaty danych z klienta na serwer Flash Media Server, opcjonalnie rejestrując strumień w trakcie transmisji. | NetStream | ||
Określa, czy są odtwarzane przychodzące dane audio. | NetStream | ||
Określa, czy w strumieniu jest odtwarzane przychodzące wideo. | NetStream | ||
Określa szybkość odtwarzania dla danych wejściowych wideo. | NetStream | ||
Usuwa detektor z obiektu EventDispatcher. | EventDispatcher | ||
[statyczny]
W aplikacjach AIR powoduje to usunięcie wszystkich buforowanych lokalnie danych kuponów zarządzania prawami cyfrowymi (DRM). | NetStream | ||
Wznawia odtwarzanie wstrzymanego strumienia wideo. | NetStream | ||
Wyszukuje klatkę kluczową (w branży filmowej nazywanej również) najbliższą dla określonego położenia. | NetStream | ||
Wysyła do wszystkich subskrybentów komunikat za pomocą opublikowanego strumienia. | NetStream | ||
Ustawia poświadczenia uwierzytelniania DRM niezbędne do wyświetlania skojarzonej zaszyfrowanej treści. | NetStream | ||
Ustawia dostępność właściwości dynamicznej używanej w pętlach. | Object | ||
Powoduje przejście naprzód lub wstecz o określoną liczbę klatek względem obecnie wyświetlanej klatki. | NetStream | ||
Wstrzymuje lub wznawia odtwarzanie strumienia. | NetStream | ||
Zwraca ciąg reprezentujący obiekt — sformatowany zgodnie z konwencjami właściwymi dla ustawień regionalnych. | Object | ||
Zwraca ciąg reprezentujący określony obiekt. | Object | ||
Zwraca pierwotną wartość dla określonego obiektu. | Object | ||
Sprawdza, czy detektor zdarzeń określonego typu jest zarejestrowany w tym obiekcie EventDispatcher lub jego elementach macierzystych. | EventDispatcher |
Zdarzenie | Podsumowanie | Zdefiniowane przez | ||
---|---|---|---|---|
[zdarzenie broadcast] Wywoływane, gdy program Flash Player lub aplikacja środowiska wykonawczego AIR uzyskuje fokus w systemie operacyjnym i przechodzi w stan aktywny. | EventDispatcher | |||
Wywoływana w przypadku asynchronicznego zgłoszenia wyjątku — pochodzącego z macierzystego kodu asynchronicznego. | NetStream | |||
[zdarzenie broadcast] Wywoływane, gdy program Flash Player lub aplikacja AIR traci fokus w systemie operacyjnym i przechodzi w stan nieaktywny. | EventDispatcher | |||
Wywoływane, gdy obiekt NetStream próbuje odtwarzać treść zaszyfrowaną przy użyciu mechanizmu DRM, która wymaga poświadczeń użytkownika do uwierzytelnienia przed rozpoczęciem odtwarzania. | NetStream | |||
Wywoływane, gdy obiekt NetStream próbujący odtwarzać plik zaszyfrowany za pomocą mechanizmu DRM napotka błąd związany z mechanizmem DRM. | NetStream | |||
Wywoływane, gdy rozpoczyna się odtwarzanie zawartości zabezpieczonej przy użyciu mechanizmu DRM (tj. gdy użytkownik zostanie uwierzytelniony i uzyska uprawnienia do odtwarzania zawartości). | NetStream | |||
Wywoływana, gdy wystąpi błąd wejścia lub wyjścia uniemożliwiający operację sieciową. | NetStream | |||
Wywoływane w przypadku przetworzenia komunikatów pewnego typu podczas odtwarzania zawartości wideo. | NetStream | |||
Wywoływana, gdy obiekt NetStream zgłasza swój stan lub warunek błędu. | NetStream | |||
Tworzy detektor, którego zadaniem jest generowanie odpowiedzi w momencie osiągnięcia punktu sygnalizacji w czasie odtwarzania pliku wideo. | NetStream | |||
Definiuje detektor reagujący na wyodrębnienie przez środowisko AIR metadanych zawartości DRM osadzonych w pliku multimedialnym. | NetStream | |||
Tworzy detektor w celu odpowiedzi na odebranie przez program Flash Player danych obrazu jako tablicy bajtów osadzonych w odtwarzanym pliku multimedialnym. | NetStream | |||
Tworzy detektor w celu odpowiedzi na odebranie przez program Flash Player informacji opisowych osadzonych w odtwarzanym w danym momencie pliku wideo. | NetStream | |||
Tworzy detektor, którego zadaniem jest generowanie odpowiedzi na zakończenie odtwarzania strumienia przez obiekt NetStream. | NetStream | |||
Wywoływana synchronicznie z metody appendBytes(), gdy analizator dołączonych bajtów napotka punkt uznany za możliwy do wyszukania (na przykład klatkę kluczową wideo). | NetStream | |||
Tworzy detektor w celu odpowiedzi na odebranie przez program Flash Player danych tekstowych osadzonych w odtwarzanym pliku multimedialnym. | NetStream | |||
Tworzy detektor w celu generowania odpowiedzi w momencie odebrania przez program Flash Player informacji charakterystycznych dla programu Adobe Extensible Metadata Platform (XMP) osadzonych w odtwarzanym pliku wideo. | NetStream | |||
Wywoływane, gdy aplikacja próbuje odtworzyć treść zaszyfrowaną przy użyciu mechanizmu DRM poprzez wywołanie metody NetStream.play(). | NetStream |
Stała | Zdefiniowane przez | ||
---|---|---|---|
CONNECT_TO_FMS : String = "connectToFMS" [statyczny]
Statyczny obiekt używany jako parametr w konstruktorze instancji NetStream. | NetStream | ||
DIRECT_CONNECTIONS : String = "directConnections" [statyczny]
Tworzy połączenie pomiędzy równorzędnymi wydawcami. | NetStream |
audioReliable | właściwość |
audioReliable:Boolean
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
W przypadku połączeń RTMFP określa, czy dźwięk jest przesyłany w pełni niezawodnie. Wartość TRUE oznacza, że dźwięk jest przez dany strumień NetStream przesyłany w pełni niezawodnie. Wartość FALSE oznacza, że przesyłanie dźwięku nie jest w pełni niezawodne, a dźwięk jest w razie potrzeby ponownie przesyłany tylko przez ograniczony czas, po czym dane dźwiękowe są usuwane. Ustawienie FALSE pozwala na ograniczenie opóźnień kosztem jakości dźwięku.
Próba ustawienia tej właściwości na FALSE dla protokołu sieciowego, który nie obsługuje częściowej niezawodności, zostanie zignorowana, a właściwość przyjmie wartość TRUE.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Implementacja
public function get audioReliable():Boolean
public function set audioReliable(value:Boolean):void
Powiązane elementy interfejsu API
audioSampleAccess | właściwość |
audioSampleAccess:Boolean
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
W przypadku połączeń RTMFP określa, czy subskrybenci P2P tego strumienia NetStream mogą przechwytywać strumień audio. Wartość FALSE powoduje, że próba przechwycenia strumienia audio przez subskrybenta wywoła błąd braku uprawnień.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Implementacja
public function get audioSampleAccess():Boolean
public function set audioSampleAccess(value:Boolean):void
Powiązane elementy interfejsu API
backBufferLength | właściwość |
backBufferLength:Number
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
Liczba sekund danych wyświetlonych wcześniej, które są zapisane w pamięci podręcznej na potrzeby przewijania wstecz i odtwarzania.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Ta właściwość jest dostępna tylko w przypadku strumieniowego przesyłania danych z serwera Flash Media Server 3.5.3 lub nowszej wersji; więcej informacji o serwerze Flash Media Server znajduje się w opisie klasy.
Aby określić ilość wcześniej wyświetlanych danych buforowanych w pamięci podręcznej, należy skorzystać z właściwości Netstream.backBufferTime
.
Aby wyłączyć buforowanie danych w pamięci podręcznej, należy przypisać właściwości Netstream.inBufferSeek
wartość FALSE.
Implementacja
public function get backBufferLength():Number
Powiązane elementy interfejsu API
backBufferTime | właściwość |
backBufferTime:Number
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
Określa (w sekundach) ilość danych wyświetlonych wcześniej, jaką program Flash Player próbuje buforować na potrzeby przewijania wstecz i odtwarzania. Wartość domyślna to 30 sekund dla aplikacji na urządzenia stacjonarne i 3 sekundy dla aplikacji na urządzenia mobilne.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Ta właściwość jest dostępna tylko w przypadku strumieniowego przesyłania danych z serwera Flash Media Server 3.5.3 lub nowszej wersji; więcej informacji o serwerze Flash Media Server znajduje się w opisie klasy.
Użycie tej właściwości poprawia wydajność przewijania wstecz, ponieważ dane, które były już wyświetlane, nie są ponownie pobierane z serwera. Strumień jest odtwarzany ponownie z buforu. W trakcie odtwarzania dane są nadal przesyłane strumieniowo z serwera aż do zapełnienia buforu.
Próba przewinięcia wstecz dalej niż sięgają dane w buforze spowoduje opróżnienie buforu. Rozpoczyna się wówczas strumieniowe przesyłanie danych z serwera od żądanej pozycji.
Aby używać tej właściwości, należy właściwości Netstream.inBufferSeek
nadać wartość TRUE.
Implementacja
public function get backBufferTime():Number
public function set backBufferTime(value:Number):void
Powiązane elementy interfejsu API
bufferLength | właściwość |
bufferLength:Number
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Czas odtwarzania aktualnie buforowanych danych (w sekundach). Tej właściwości można użyć z właściwością bufferTime
, aby oszacować ile pozostało czasu do całkowitego wypełnienia bufor — na przykład, aby wyświetlić informację zwrotną dla użytkownika, który oczekuje na załadowanie danych do bufora.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Implementacja
public function get bufferLength():Number
Powiązane elementy interfejsu API
bufferTime | właściwość |
bufferTime:Number
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Określa czas buforowania komunikatów przed rozpoczęciem wyświetlania strumienia.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Wartością domyślną jest 0,1 (1/10 sekundy). Aby określić liczbę sekund buforowanych w danym momencie, należy użyć właściwości bufferLength
.
Aby odtworzyć listę odtwarzania po stronie serwera, należy ustawić parametr bufferTime
na co najmniej 1 sekundę. W razie napotkania problemów z odtwarzaniem należy zwiększyć wartość bufferTime
.
Nagrana treść Aby uniknąć zniekształceń podczas strumieniowego przesyłania wstępnie nagranej treści (a nie odtwarzanej „na żywo”), nie należy ustawiać właściwości NetStream.bufferTime
na wartość 0. Domyślnie aplikacja używa wejściowego bufora danych dla treści wstępnie nagranej, który kolejkuje dane multimedialne i właściwie je odtwarza. Dla wstępnie nagranej treści należy używać wartości domyślnych lub zwiększać wartość bufora czasowego.
Treść na żywo W przypadku strumieniowego przesyłania treści odtwarzanej na żywo, należy ustawić właściwość bufferTime
na wartość 0.
Rozpoczynając od wersji Flash Player 9.0.115.0, program Flash Player nie czyści więcej bufora, gdy wywoływana jest metoda NetStream.pause()
. W wersjach starszych niż 9.0.115.0 program Flash Player oczekiwał na wypełnienie bufora przed wznowieniem odtwarzania, co często powodowało opóźnienie.
Dla pojedynczego wstrzymania właściwość NetStream.bufferLength
uwzględnia ograniczenie 60 sekund lub dwukrotną wartość właściwości NetStream.bufferTime
— w zależności do tego, która wartość jest wyższa. Na przykład jeśli właściwość bufferTime
ma wartość 20 sekund, program Flash Player buforuje dane aż do momentu, w którym właściwość NetStream.bufferLength
jest wyższą z dwóch wartości: 20*2 (40) albo 60. W tym przypadku dane będą buforowane aż do osiągnięcia przez właściwość bufferLength
wartości 60. Jeśli właściwość bufferTime
ma wartość 40 sekund, program Flash Player buforuje dane aż do momentu, w którym właściwość bufferLength
jest wyższą z dwóch wartości: 40*2 (80) albo 60. W tym przypadku dane będą buforowane, aż do osiągnięcia przez właściwość bufferLength
wartości 80.
Właściwość bufferLength
posiada także ograniczenie bezwzględne. Jeśli wywołanie metody pause()
spowoduje wzrost wartości właściwości bufferLength
do ponad 600 sekund lub dwukrotności wartości właściwości bufferTime
program Flash Player, w zależności od tego, która wartość jest wyższa, opróżnia bufor i ponownie ustawia wartość 0 dla właściwości bufferLength
. Na przykład jeśli właściwość bufferTime
ma wartość 120 sekund, program Flash Player opróżnia bufor, jeśli właściwość bufferLength
osiąga wartość 600 sekund; jeśli właściwość bufferTime
ma wartość 360 sekund, program Flash Player opróżnia bufor, jeśli właściwość bufferLength
osiąga wartość 720 sekund.
Wskazówka: W kodzie można użyć metody NetStream.pause()
, aby buforować dane, gdy obserwatorzy oglądają na przykład reklamę, a następnie wznowić w momencie rozpoczęcia głównego wideo.
Aby uzyskać więcej informacji na temat nowego zachowania metody pause, należy zapoznać się z informacjami na stronie http://www.adobe.com/go/learn_fms_smartpause_pl.
Flash Media Server. Działanie bufora zależy od tego, czy czas buforowania został ustawiony na strumień publikowania, czy strumień subskrypcji. Właściwość bufferTime
dla strumienia publikowania określa czas, przez jaki bufor danych wyjściowych będzie powiększany, zanim aplikacja zacznie gubić klatki. W przypadku szybkich połączeń czas buforowania nie musi być brany pod uwagę; dane będą wysyłane prawie tak szybko, jak aplikacja będzie je buforowała. W przypadku wolnych połączeń może pojawić się znacząca różnica pomiędzy szybkością buforowania danych przez aplikację a szybkością, z jaką są one wysyłane do klienta.
Właściwość bufferTime
dla strumienia subskrybującego określa czas, przez jaki buforowane są dane wejściowe, zanim rozpoczęte zostanie wyświetlanie strumienia.
Jeśli w czasie odtwarzania nagranego strumienia właściwość bufferTime
ma wartość 0, program Flash ustawi ją na niewielką wartość (w przybliżeniu 10 milisekund). Jeśli w późniejszym czasie odtwarzane są strumienie „na żywo” (np. z listy odtwarzania), czas buforowania nie ulegnie zmianie. Oznacza to, że właściwość bufferTime
pozostanie wartością niezerową dla strumienia.
Implementacja
public function get bufferTime():Number
public function set bufferTime(value:Number):void
Powiązane elementy interfejsu API
bufferTimeMax | właściwość |
bufferTimeMax:Number
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
Określa (w sekundach) maksymalną długość buforu używanego do strumieniowego przesyłania treści w czasie rzeczywistym. Wartością domyślną jest 0. Długość buforu może się z czasem zwiększać z powodu problemów z siecią i urządzeniami (np. rozsynchronizowywania się zegarów między nadawcą a odbiorcą). Ta właściwość umożliwia ograniczenie długości buforu w zastosowaniach wymagających przesyłania w czasie rzeczywistym, takich jak konferencje i telewizja przemysłowa.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Gdy bufferTimeMax > 0
i bufferLength >= bufferTimeMax
, dźwięk jest odtwarzany szybciej, dopóki wartość bufferLength
nie zrówna się z wartością bufferTime
. Jeśli przesyłany jest strumień zawierający tylko dane wideo, odtwarzanie wideo odbywa się w przyspieszonym tempie do czasu, aż bufferLength
zrówna się z wartością bufferTime
.
W zależności od opóźnienia w odtwarzaniu (różnicy między bufferLength
a bufferTime
) program Flash Player reguluje przyspieszenie w zakresie od 1,5% do 6,25%. Jeśli strumień zawiera dźwięk, szybsze odtwarzanie realizowane jest poprzez redukcję liczby próbek w dziedzinie częstotliwości, co minimalizuje słyszalne zniekształcenia dźwięku.
Ustawienie wartości właściwości bufferTimeMax
umożliwia „nadrobienie” opóźnienia w odtwarzaniu buforowanego strumienia w następujących sytuacjach:
- Podczas strumieniowego przesyłania multimediów „na żywo” z serwera Flash Media Server.
- Podczas strumieniowego przesyłania multimediów „na żywo” w trybie generowania danych (
NetStream.appendBytes()
).
Implementacja
public function get bufferTimeMax():Number
public function set bufferTimeMax(value:Number):void
Powiązane elementy interfejsu API
bytesLoaded | właściwość |
bytesLoaded:uint
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Liczba bajtów załadowanych do aplikacji. Tej właściwości można użyć z właściwością bytesTotal
, aby oszacować ile pozostało czasu do całkowitego wypełnienia bufor — na przykład, aby wyświetlić informację zwrotną dla użytkownika, który oczekuje na załadowanie danych do bufora.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Implementacja
public function get bytesLoaded():uint
Powiązane elementy interfejsu API
bytesTotal | właściwość |
checkPolicyFile | właściwość |
checkPolicyFile:Boolean
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Określa, czy przed rozpoczęciem ładowania pliku wideo aplikacja powinna podjąć próbę pobrania z serwera międzydomenowego pliku reguł. Właściwości tej należy używać przy stopniowym pobieraniu wideo, a także do ładowania plików znajdujących się poza własną domeną wywołującego pliku SWF. Ta właściwość jest ignorowana, jeśli używany jest protokół RTMP.
Należy ustawić tę właściwość true
, aby możliwe było wywołanie BitmapData.draw()
względem pliku wideo załadowanego z domeny poza wywołującym plikiem SWF. Metoda BitmapData.draw()
umożliwia dostęp do wideo na poziomie pikseli. Jeśli w czasie ładowania metoda BitmapData.draw()
zostanie wywołana bez właściwości checkPolicyFile
ustawionej na wartość true
, zgłoszony może zostać wyjątek SecurityError
, ponieważ nie został pobrany wymagany plik reguł.
Nie należy ustawiać tej właściwości na true, jeśli nie jest potrzebny dostęp do ładowanego wideo na poziomie pikseli. Sprawdzanie obecności pliku reguł dodatkowo obciąża sieć i może opóźnić rozpoczęcie pobierania.
Wywołanie metody NetStream.play()
, gdy właściwość checkPolicyFile
jest ustawiona na wartość true
, zmusza program Flash Player lub środowisko AIR do pobrania właściwego międzydomenowego pliku reguł lub określenia, że taki plik nie istnieje, zanim rozpocznie się pobieranie. Aby zweryfikować istnienie pliku reguł, program Flash Player lub środowisko AIR wykonuje następujące operacje w kolejności:
- Aplikacja uwzględnia pliki reguł, które zostały już pobrane.
- Aplikacja usiłuje pobrać dowolne oczekujące pliki reguł określone w wywołaniach metody
Security.loadPolicyFile()
. - Aplikacja usiłuje pobrać plik reguł z domyślnej lokalizacji określonej w adresie URL, który został przekazany do metody
NetStream.play()
, czyli plik/crossdomain.xml
na tym samym serwerze, co wskazany adres URL.
We wszystkich przypadkach program Flash Player lub środowisko Adobe AIR wymaga właściwego pliku reguł na serwerze pliku wideo, który zapewnia dostęp do obiektu określonego w adresie URL przekazanym do metody play()
i opartym na lokalizacji pliku reguł oraz pozwala domenie wywołującego pliku kodu na dostęp do wideo za pomocą jednego lub wielu znaczników <allow-access-from>
.
Ustawiając właściwość checkPolicyFile
na wartość true
, aplikacja czeka, aż plik reguł zostanie zweryfikowany, zanim pobrane zostanie wideo. Aby wykonać na danych wideo operacje z poziomu piksela, np. wywołać metodę BitmapData.draw()
, należy zaczekać, aż z obiektu NetStream odebrane zostaną zdarzenia onMetaData
lub NetStatus
.
Jeśli właściwość checkPolicyFile
ma wartość true
i nie został odnaleziony właściwy plik reguł, żaden błąd nie zostanie zgłoszony do momentu wykonania operacji, która wymaga pliku reguł, aplikacja Player zgłosi wyjątek SecurityError.
Korzystając z właściwości checkPolicyFile
należy zachować ostrożność, jeśli plik pobierany jest za pomocą adresu URL, który używa serwerowych przekierowań HTTP. Aplikacja usiłuje pobrać pliki reguł, które odpowiadają początkowemu adresowi URL, jaki został określony w metodzie NetStream.play()
. Jeśli z powodu przekierowań HTTP końcowy plik pochodzi z innego adresu URL, początkowo pobrane pliki reguł mogą nie odpowiadać adresowi URL pliku końcowego, który jest adresem URL istotnym dla decyzji dotyczących zabezpieczeń.
Więcej informacji na temat plików reguł zawiera sekcja „Kontrola witryn sieci Web (pliki reguł)” w publikacji ActionScript 3.0 — Podręcznik dla programistów oraz odpowiedni temat witryny Flash Player Developer Center: Security.
Implementacja
public function get checkPolicyFile():Boolean
public function set checkPolicyFile(value:Boolean):void
Powiązane elementy interfejsu API
client | właściwość |
client:Object
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Określa obiekt na którym wywoływane są metody wywołania zwrotnego w celu obsługi danych strumieniowych lub pliku F4V/FLV. Domyślnym obiektem jest ten (this
) tworzony obiekt NetStream. Jeśli właściwość client
zostanie ustawiona na inny obiekt, metody wywołania zwrotnego będą w tym innym obiekcie. Obiekt NetStream.client
może wywoływać następujące funkcje i odbierać skojarzone obiekty danych: onCuePoint()
, onImageData()
, onMetaData()
, onPlayStatus()
, onSeekPoint()
, onTextData()
i onXMPData()
.
Aby skojarzyć właściwość client
do modułu obsługi zdarzeń:
- Utwórz obiekt i przypisz go do właściwości
client
obiektu NetStream:var customClient:Object = new Object(); my_netstream.client = customClient;
- Przypisz funkcję modułu obsługi do określonego zdarzenia danych jako właściwość obiektu client:
customClient.onImageData = onImageDataHandler;
- Napisz funkcję modułu obsługi, aby odbierać obiekt zdarzenia danych:
public function onImageDataHandler(imageData:Object):void { trace("imageData length: " + imageData.data.length); }
Gdy dane są przekazywane za pomocą strumienia lub w czasie odtwarzania, obiekt zdarzenia danych (w tym przypadku obiekt imageData
) jest wypełniany danymi. W opisie zdarzenia onImageData
znajduje się pełen przykład obiektu przypisanego do właściwości client
.
Aby skojarzyć właściwość client
do podklasy:
- Utwórz podklasę z funkcją modułu obsługi, aby odbierać obiekt zdarzenia danych:
class CustomClient { public function onMetaData(info:Object):void { trace("metadata: duration=" + info.duration + " framerate=" + info.framerate); }
- Przypisz instancję podklasy do właściwości
client
obiektu NetStream:my_netstream.client = new CustomClient();
Gdy dane są przekazywane za pomocą strumienia lub w czasie odtwarzania, obiekt zdarzenia danych (w tym przypadku obiekt info
) jest wypełniany danymi. Na końcu opisu klasy NetStream znajduje się przykład, który przedstawia przypisanie instancji podklasy do właściwości client
.
Implementacja
public function get client():Object
public function set client(value:Object):void
Zgłasza
TypeError — Właściwość client musi obiektem różnym od wartości null.
|
Powiązane elementy interfejsu API
currentFPS | właściwość |
currentFPS:Number
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Liczba wyświetlanych klatek na sekundę. Jeśli pliki wideo są eksportowane w celu odtwarzania na wielu systemach, sprawdzenie tej wartości podczas testowania będzie pomocne w określaniu kompresji, jaka jest stosowana do eksportowania pliku.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Implementacja
public function get currentFPS():Number
dataReliable | właściwość |
dataReliable:Boolean
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
W przypadku połączeń RTMFP określa, czy wywołania NetStream.send()
są realizowane w pełni niezawodnie. W przypadku wartości TRUE wywołania NetStream.send()
są realizowane przez ten strumień NetStream jako w pełni niezawodne transmisje danych. W przypadku wartości FALSE wywołania NetStream.send()
nie są realizowane z pełną niezawodnością; przesyłanie danych jest ponawiane przez pewien ograniczony czas, a po tym czasie dane są usuwane. Wartość FALSE umożliwia ograniczenie opóźnień kosztem jakości transmisji danych.
Próba ustawienia tej właściwości na FALSE dla protokołu sieciowego, który nie obsługuje częściowej niezawodności, zostanie zignorowana, a właściwość przyjmie wartość TRUE.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Implementacja
public function get dataReliable():Boolean
public function set dataReliable(value:Boolean):void
Powiązane elementy interfejsu API
farID | właściwość |
farID:String
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5 |
W przypadku połączeń RTMFP jest to identyfikator odległego węzła połączonego z wystąpieniem klasy NetStream.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Implementacja
public function get farID():String
farNonce | właściwość |
farNonce:String
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5 |
W przypadku połączeń RTMFP i RTMPE jest to wartość wybrana przez drugi koniec strumienia, unikatowa dla tego połączenia. Wartość przedstawiana w drugim końcu strumienia jako wartość jego właściwości nearNonce
.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Implementacja
public function get farNonce():String
inBufferSeek | właściwość |
inBufferSeek:Boolean
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
Określa, czy wyświetlane dane są buforowane na potrzeby inteligentnego wyszukiwania (TRUE
), czy nie (FALSE
). Wartością domyślną jest FALSE.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Wyszukiwanie inteligentne jest realizowane poprzez odpowiednie współdziałanie między serwerem Flash Media Server 3.5.3 a odtwarzaczem Flash Player 10.1. Przy wyszukiwaniu inteligentnym używane są bufor odtwarzania wstecz i odtwarzania do przodu, które umożliwiają wyszukiwanie bez żądania danych z serwera. Wyszukiwanie standardowe powoduje usuwanie danych z bufora i wysłanie do serwera żądania przesłania nowych danych z wyszukiwanego punktu czasowego.
Aby przejść naprzód lub wstecz o określoną liczbę klatek, należy wywołać metodę NetStream.step()
. Aby przejść naprzód lub wstecz o określoną liczbę sekund, należy wywołać metodę NetStream.seek()
.
Wyszukiwanie inteligentne ogranicza obciążenie serwera i działa z większą wydajnością. Ustawiając inBufferSeek=true
i wywołując metody step()
oraz seek()
, można zrealizować następującą funkcjonalność:
- Odtwarzacz po stronie klienta. Wyszukiwanie może odbywać się w buforze po stronie klienta, bez pobierania nowego materiału wideo z serwera.
- Tryby efektów specjalnych. Odtwarzacze, które przeskakują po kilka klatek oraz przewijają materiał w przód i w tył w przyspieszonym lub w zwolnionym tempie.
Gdy inBufferSeek=true
, a wywołanie NetStream.seek()
powiedzie się, właściwość NetStatusEvent info.description
zawiera ciąg znaków "client-inBufferSeek"
.
Gdy wywołanie NetStream.step()
powiedzie się, właściwość info.code
obiektu NetStatusEvent zawiera ciąg znaków "NetStream.Step.Notify"
.
Implementacja
public function get inBufferSeek():Boolean
public function set inBufferSeek(value:Boolean):void
Powiązane elementy interfejsu API
info | właściwość |
info:NetStreamInfo
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Zwraca obiekt NetStreamInfo, którego właściwości zawierają statystyki o jakości usługi. Obiekt jest obrazem bieżącego stanu.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Implementacja
public function get info():NetStreamInfo
Powiązane elementy interfejsu API
liveDelay | właściwość |
liveDelay:Number
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Ilość danych (liczba sekund) strumienia subskrypcji w trybie "na żywo" (bez buforowania). Ta właściwość określa bieżące opóźnienie przesyłania w sieci.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Ta właściwość przeznaczona jest głównie do użycia z serwerem (np. Flash Media Server); więcej informacji znajduje się w opisie klasy.
Wartość tej właściwości można pobrać, aby dokonać przybliżonego pomiaru jakości przesyłania strumienia i przekazać go użytkownikowi.
Implementacja
public function get liveDelay():Number
maxPauseBufferTime | właściwość |
maxPauseBufferTime:Number
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Określa czas buforowania komunikatów w trybie wstrzymania, w sekundach. Ta właściwość może zostać użyta do ograniczenia ilości buforowanych danych w trybie wstrzymania. Po osiągnięciu przez wartość właściwości NetStream.bufferLength
ograniczenia buforowanie zostanie zatrzymane.
Jeśli ta wartość nie zostanie ustawiona, wartością domyślną ograniczenia dla każdego wstrzymania będzie 60 sekund lub dwukrotna wartość właściwości NetStream.bufferTime
, w zależności od tego, która z tych wartości jest większa.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Implementacja
public function get maxPauseBufferTime():Number
public function set maxPauseBufferTime(value:Number):void
Powiązane elementy interfejsu API
multicastAvailabilitySendToAll | właściwość |
multicastAvailabilitySendToAll:Boolean
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
W przypadku połączeń RTMFP określa, czy komunikaty multiemisji P2P o dostępności fragmentów są wysyłane do wszystkich węzłów równorzędnych, czy tylko do jednego węzła. Wartość TRUE oznacza, że komunikaty są wysyłane do wszystkich węzłów równorzędnych, raz na zadany okres. Wartość FALSE oznacza, że komunikaty są wysyłane do jednego węzła równorzędnego, raz na zadany okres. Okres jest zdefiniowany we właściwości multicastAvailabilityUpdatePeriod
.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Implementacja
public function get multicastAvailabilitySendToAll():Boolean
public function set multicastAvailabilitySendToAll(value:Boolean):void
Powiązane elementy interfejsu API
multicastAvailabilityUpdatePeriod | właściwość |
multicastAvailabilityUpdatePeriod:Number
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
W przypadku połączeń RTMFP określa okres (w sekundach) między operacjami wysyłania do węzłów równorzędnych komunikatów informujących o dostępności fragmentów multimediów w multiemisji P2P na lokalnym węźle. Większe wartości zwiększają wydajność przetwarzania partii danych i zmniejszają narzut związany z danymi sterującymi, ale mogą prowadzić do obniżenia jakości po stronie odbiorczej, ponieważ powodują skrócenie czasu, przez jaki można pobierać fragmenty, zanim minie ich okno czasowe. Niższe wartości mogą powodować ograniczenie opóźnień i poprawę jakości, ale zwiększają narzut związany z danymi sterującymi.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Implementacja
public function get multicastAvailabilityUpdatePeriod():Number
public function set multicastAvailabilityUpdatePeriod(value:Number):void
Powiązane elementy interfejsu API
multicastFetchPeriod | właściwość |
multicastFetchPeriod:Number
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
W przypadku połączeń RTMFP określa czas w sekundach, jaki upływa między uzyskaniem przez węzeł lokalny informacji o dostępności fragmentu multimediów w multiemisji P2P a próbą pobrania tego fragmentu z węzła równorzędnego. Modyfikując tę wartość, można proaktywnie wymusić pobranie fragmentu przez węzeł lokalny wcześniej niż podjęta zostałaby próba samoczynnego pobrania tego fragmentu. Możliwe jest również doprowadzenie do sytuacji, w której dostępność fragmentu będzie anonsowana przez więcej niż jeden węzeł, a pobieranie zostanie rozłożone na wiele węzłów.
Większe wartości poprawiają równoważenie obciążenia i „sprawiedliwość” dystrybucji w sieci P2P, jednak skracają okno multicastWindowDuration
i zwiększają opóźnienia. Mniejsze wartości mogą ograniczyć opóźnienia, gdy wymagane jest pobieranie fragmentów, ale jednocześnie mogą prowadzić do wielokrotnego odbierania tych samych danych i pogarszają równowagę obciążenia w sieci P2P.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Implementacja
public function get multicastFetchPeriod():Number
public function set multicastFetchPeriod(value:Number):void
Powiązane elementy interfejsu API
multicastInfo | właściwość |
multicastInfo:NetStreamMulticastInfo
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
W przypadku połączeń RTMFP zwraca obiekt NetStreamMulticastInfo, którego właściwości zawierają dane statystyczne o jakości usług. Obiekt jest obrazem bieżącego stanu.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Implementacja
public function get multicastInfo():NetStreamMulticastInfo
Powiązane elementy interfejsu API
multicastPushNeighborLimit | właściwość |
multicastPushNeighborLimit:Number
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
W przypadku połączeń RTMFP określa maksymalną liczbę węzłów równorzędnych, do których mają być proaktywnie przekazywane multimedia przesyłane w multiemisji.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Implementacja
public function get multicastPushNeighborLimit():Number
public function set multicastPushNeighborLimit(value:Number):void
multicastRelayMarginDuration | właściwość |
multicastRelayMarginDuration:Number
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
W przypadku połączeń RTMFP określa czas (w sekundach), przez jaki dane multiemisji P2P pozostają dostępne do wysłania do węzłów równorzędnych, które zażądają ich już po upływie okna czasowego. Długość okna czasowego określa się we właściwości multicastWindowDuration
.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Implementacja
public function get multicastRelayMarginDuration():Number
public function set multicastRelayMarginDuration(value:Number):void
Powiązane elementy interfejsu API
multicastWindowDuration | właściwość |
multicastWindowDuration:Number
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
W przypadku połączeń RTMFP określa w sekundach długość okna czasowego składania fragmentów multiemisji P2P. Krótsze wartości powodują zmniejszenie opóźnień, ale mogą pogorszyć jakość transmisji, uniemożliwiając pobranie wszystkich fragmentów z uwagi na zbyt krótkie okno czasowe. Z kolei większe wartości mogą przyczynić się do poprawy jakości, pozwalając na pobranie wszystkich fragmentów, ale kosztem większych opóźnień.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Implementacja
public function get multicastWindowDuration():Number
public function set multicastWindowDuration(value:Number):void
Powiązane elementy interfejsu API
nearNonce | właściwość |
nearNonce:String
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5, Flash Lite 4 |
W przypadku połączeń RTMFP i RTMPE jest to wartość wybrana przez ten koniec strumienia, unikatowa dla tego połączenia. Wartość pojawia się na drugim końcu strumienia jako wartość jego właściwości farNonce
.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Implementacja
public function get nearNonce():String
objectEncoding | właściwość |
objectEncoding:uint
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Kodowanie obiektów (wersja AMF) dotyczące tego obiektu NetStream. Obiekt NetStream dziedziczy wartość właściwości objectEncoding
po skojarzonym z nim obiekcie NetConnection. Zrozumienie tej właściwości jest ważne, jeśli plik SWF w formacie ActionScript 3.0 wymaga porozumiewania się z serwerami obsługującymi wersje poprzedzające Flash Player 9. Aby uzyskać więcej informacji, należy zapoznać się z opisem właściwości objectEncoding
w klasie NetConnection.
Wartość tej właściwości zależy od tego, czy strumień jest strumieniem lokalnym, czy zdalnym. Strumienie lokalne, w których do metody NetConnection.connect()
przekazano wartość null
, zwracają wartość właściwości NetConnection.defaultObjectEncoding
. Zdalne strumienie, w których nawiązywane jest połączenie z serwerem, zwracają kodowanie obiektu dla połączenia z serwerem.
Jeśli nastąpi próba odczytu tej właściwości w momencie, gdy nie jest ona połączona lub nastąpi próba zmiany tej właściwości, aplikacja zgłosi wyjątek.
Implementacja
public function get objectEncoding():uint
Powiązane elementy interfejsu API
peerStreams | właściwość |
peerStreams:Array
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5 |
Obiekt przechowujący wszystkie subskrybujące wystąpienia klasy NetStream, które wykrywają to publikujące wystąpienie klasy NetStream.
Implementacja
public function get peerStreams():Array
soundTransform | właściwość |
soundTransform:flash.media:SoundTransform
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Zapewnia kontrolę nad dźwiękiem reprezentowanym przez ten obiekt NetStream. Aby uzyskać więcej informacji, należy zapoznać się z opisem klasy SoundTransform.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Implementacja
public function get soundTransform():flash.media:SoundTransform
public function set soundTransform(value:flash.media:SoundTransform):void
Powiązane elementy interfejsu API
time | właściwość |
time:Number
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Położenie wskaźnika odtwarzania (w sekundach).
Serwer Flash Media Server: dla strumienia subskrypcji liczba sekund, które zostały odtworzone w strumieniu. Dla strumienia publikowania liczba sekund, które zostały opublikowane w strumieniu. Ta liczba odpowiada miejscu tysięcznemu; aby uzyskać liczbę milisekund odtworzonych w strumieniu, należy pomnożyć tę liczbę przez 1000.
Dla strumienia subskrypcji, jeśli serwer zatrzyma wysyłanie danych, ale strumień nadal pozostanie otwarty, wartość właściwości time
nie będzie zwiększana. W chwili, gdy serwer rozpocznie ponowne wysyłanie danych, zwiększanie wartości będzie kontynuowane od miejsca zatrzymania (miejsca, w którym serwer zatrzymał wysyłanie danych).
Wartość właściwości time
jest ponownie zwiększana, kiedy strumień jest przełączany między elementami listy odtwarzania. Właściwość ma wartość 0, gdy metoda NetStream.play()
jest wywoływana z parametrem reset
ustawionym na wartość 1
lub true
lub, gdy wywoływana jest metoda NetStream.close()
.
Implementacja
public function get time():Number
Powiązane elementy interfejsu API
useHardwareDecoder | właściwość |
useHardwareDecoder:Boolean
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11, AIR 3 |
Określa, czy w strumieniu ma być używane dekodowanie przyspieszane sprzętowo.
Uwaga: Tej właściwości nie można ustawiać podczas odtwarzania wideo. Należy ustawiać ją przed wywołaniem metody NetStream.play()
.
Wartością domyślną jest true.
Implementacja
public function get useHardwareDecoder():Boolean
public function set useHardwareDecoder(value:Boolean):void
Powiązane elementy interfejsu API
useJitterBuffer | właściwość |
useJitterBuffer:Boolean
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11.3, AIR 3.3 |
Minimalizuje opóźnienia w przypadku przesyłania strumieniowego na żywo bez bufora (bufferTime = 0). Nie jest używany konserwatywny mechanizm doganiania oparty na wysyłaniu (push) danych. Zamiast tego wiadomości audio są umieszczane w adaptacyjnym buforze o zmiennym rozmiarze. Gdy urządzenie głośnika wymaga dźwięku, wiadomości są pobierane z bufora o zmiennym rozmiarze, dekodowane i odtwarzane. Kodeki Speex i G.711 zawsze korzystają z tej metody opartej na pobieraniu (pull) — niezależnie od ustawień. (Właściwość useJitterBuffer ma wartość true dla kodeków Speex/G.711). Włączenie tego ustawienia w trybie niebuforowanym powoduje, że wszystkie kodeki, w tym Speex, G.711, Nellymoser, MP3 i AAC, używają bufora o zmiennym rozmiarze. Ta właściwość nie ma wpływu na tryb buforowany (bufferTime > 0). W tym trybie właściwość useJitterBuffer ma wartość false.
Implementacja
public function get useJitterBuffer():Boolean
public function set useJitterBuffer(value:Boolean):void
videoReliable | właściwość |
videoReliable:Boolean
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
W przypadku połączeń RTMFP określa, czy wideo jest przesyłane w pełni niezawodnie. Wartość TRUE oznacza, że wideo jest przez dany strumień NetStream przesyłane w pełni niezawodnie. Wartość FALSE oznacza, że przesyłanie wideo nie jest w pełni niezawodne, a wideo jest w razie potrzeby ponownie przesyłane tylko przez ograniczony czas, po czym dane wideo są usuwane. Ustawienie FALSE pozwala na ograniczenie opóźnień kosztem jakości wideo.
Próba ustawienia tej właściwości na FALSE dla protokołu sieciowego, który nie obsługuje częściowej niezawodności, zostanie zignorowana, a właściwość przyjmie wartość TRUE.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Implementacja
public function get videoReliable():Boolean
public function set videoReliable(value:Boolean):void
Powiązane elementy interfejsu API
videoSampleAccess | właściwość |
videoSampleAccess:Boolean
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
W przypadku połączeń RTMFP określa, czy subskrybenci P2P tego strumienia NetStream mogą przechwytywać strumień wideo. Wartość FALSE powoduje, że próba przechwycenia strumienia wideo przez subskrybenta wywoła błąd braku uprawnień.
Uwaga: ta właściwość nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Implementacja
public function get videoSampleAccess():Boolean
public function set videoSampleAccess(value:Boolean):void
Powiązane elementy interfejsu API
videoStreamSettings | właściwość |
videoStreamSettings:VideoStreamSettings
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11/ConnectAddin, AIR 3 |
Określa właściwości kompresji strumienia. Więcej informacji znajduje się w opisie klasy VideoStreamSettings
. W przypadku braku kamery podłączonej do systemu zwracana jest wartość null.
Implementacja
public function get videoStreamSettings():VideoStreamSettings
public function set videoStreamSettings(value:VideoStreamSettings):void
Powiązane elementy interfejsu API
NetStream | () | Konstruktor |
public function NetStream(connection:NetConnection, peerID:String = "connectToFMS")
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Tworzy strumień, którego można używać w celu odtwarzania plików multimedialnych i wysyłania danych za pomocą obiektu NetConnection.
Brak obsługi zdarzenia netStatus
obiektu NetStream jest sytuacją nieprawidłową. Aby uniknąć błędów, należy zarejestrować detektor zdarzenia netStatus
po utworzeniu obiektu NetStream i przed wywołaniem jego metody play()
.
connection:NetConnection — Obiekt NetConnection.
| |
peerID:String (default = "connectToFMS ") — Ten parametr opcjonalny jest dostępny w programie Flash Player 10 i nowszych wersjach; jest przeznaczony do użycia z połączeniami RTMFP. (Jeśli wartość właściwości NetConnection.protocol jest różna od "rtmfp" , ten parametr zostanie zignorowany). Należy użyć jednej z następujących wartości:
W większości przypadków Jeśli ten parametr zostanie uwzględniony w instrukcji konstruktora, ale będzie miał wartość |
Zgłasza
ArgumentError — Instancja NetConnection nie jest połączona.
|
Powiązane elementy interfejsu 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"
Przykład ( Sposób korzystania z tego przykładu )
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
) na zdalnej instancji serwera Flash Media Server określonego w poleceniuconnect()
:
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 | () | metoda |
public function appendBytes(bytes:ByteArray):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
Przekazuje obiekt ByteArray do obiektu NetStream w celu odtworzenia. Tę metodę należy wywołać w obiekcie NetStream, który znajduje się w trybie generowania danych. Aby przełączyć obiekt NetStream w tryb generowania danych, należy zastosować wywołanie NetStream.play(null)
w obiekcie NetStream utworzonym dla obiektu NetConnection połączonego z hostem null
. Wywołanie metody appendBytes()
w obiekcie NetStream, który nie znajduje się w trybie generowania danych, stanowi błąd i powoduje zgłoszenie wyjątku.
Uwaga: ta metoda nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Analizator bajtów wykonuje analizę pliku FLV, wykorzystując nagłówek. Po przeanalizowaniu nagłówka metoda appendBytes()
oczekuje, że wszystkie następne wywołania będą kontynuacją tego samego pliku rzeczywistego lub wirtualnego. Kolejny nagłówek nie jest oczekiwany, chyba że zostanie użyte wywołanie appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN)
.
Obiekt NetStream zawiera dwa bufory: kolejka FIFO z metody appendBytes()
dla obiektu NetStream oraz bufor odtwarzania. Kolejka FIFO to bufor składania zawierający najwyżej jeden niepełny znacznik FLV. Wywołuje metodę NetStream.seek()
w celu opróżnienia obu buforów. Po wywołaniu metody seek()
należy wywołać metodę appendBytesAction()
, aby ponownie ustawić na osi czasu początek znacznika czasu kolejnego dołączonego komunikatu.
Każde wywołanie metody appendBytes()
powoduje dodawanie bajtów do kolejki FIFO do momentu zapełnienia znacznika FLV. Gdy znacznik FLV będzie pełny, zostanie przeniesiony do buforu odtwarzania. Wywołanie metody appendBytes()
może spowodować zapisanie wielu znaczników FLV. Pierwsze bajty zapełnią istniejący znacznik FLV (który zostanie przeniesiony do buforu odtwarzania). Pełne znaczniki FLV są przenoszone do buforu odtwarzania. Pozostałe bajty, które nie wejdą w skład pełnego znacznika FLV, zostaną umieszczone w kolejce FIFO. Bajty w kolejce FIFO zostaną zapełnione przez wywołanie metody appendBytes()
lub opróżnione przez wywołanie meotdy appendBytesAction()
z argumentem RESET_SEEK
lub RESET_BEGIN
.
Uwaga: Analizator bajtów może nie być w stanie w pełni zdekodować wywołania appendBytes()
, dopóki nie zostanie wykonane kolejne wywołanie metody appendBytes()
.
Parametry
bytes:ByteArray |
Powiązane elementy interfejsu API
appendBytesAction | () | metoda |
public function appendBytesAction(netStreamAppendBytesAction:String):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
Wskazuje przerwę na osi czasu, opróżnia kolejkę FIFO i informuje analizator bajtów o tym, aby oczekiwał nagłówka pliku lub początku znacznika FLV.
Uwaga: ta metoda nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Wywołuje metodę NetStream.seek()
w celu opróżnienia buforów NetStream. Analizator bajtów pozostaje w trybie opróżniania do momentu wywołania metody appendBytesAction()
i przekazania argumentu RESET_BEGIN
lub RESET_SEEK
. Po wyszukiwaniu należy przechwycić zdarzenie "NetStream.Seek.Notify"
, aby wywołać metodę appendBytesAction()
. Nowy nagłówek pliku może obsługiwać listy odtwarzania i wyszukiwanie bez konieczności wywoływania metody NetStream.seek()
.
Można również wywołać tę metodę w celu wyzerowania licznika bajtów dla wywołania zwrotnego onSeekPoint()
).
Parametry
netStreamAppendBytesAction:String |
Powiązane elementy interfejsu API
attach | () | metoda |
public function attach(connection:NetConnection):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
Przyłącza strumień do nowego obiektu NetConnection. Wywołanie tej metody powoduje przyłączenie obiektu NetStream do nowego obiektu NetConnection po przerwaniu i ponownym nawiązaniu połączenia. Odtwarzacz Flash Player i środowisko AIR wznawiają przesyłanie strumieniowe od punktu, w którym doszło do utraty połączenia. Metody tej można także użyć do implementacji równoważenia obciążenia.
Ta metoda wymaga serwera Flash Media Server w wersji 3.5.3 lub nowszej.
Informacje na temat użycia tej metody do implementacji ponownego nawiązywania połączenia strumieniowego zawiera dokumentacja serwera Flash Media Server 3.5.3.
Aby użyć tej metody do równoważenia obciążenia:
- Przyłącz połączony strumień do obiektu NetConnection na innym serwerze.
- Po pomyślnym przyłączeniu strumienia do nowego połączenia wywołaj metodę
NetConnection.close()
w poprzednim połączeniu, aby zapobiec wyciekowi danych. - Wywołaj metodę
NetStream.play2()
i ustaw właściwośćNetStreamPlayOptions.transition
na RESUME. Pozostałym wartościom obiektu NetStreamPlayOptions nadaj te same wartości, co przy pierwotnym wywołaniuNetStream.play()
lubNetStream.play2()
rozpoczynającym odtwarzanie strumienia.
Parametry
connection:NetConnection |
Powiązane elementy interfejsu API
attachAudio | () | metoda |
public function attachAudio(microphone:Microphone):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Dołącza do obiektu NetStream strumień audio pochodzący z obiektu Microphone przekazanego jako źródło. Ta metoda jest dostępna jedynie dla wydawcy określonego strumienia.
Zastosowanie tej metody z serwerem Flash Media Server umożliwia wysyłanie do serwera dźwięku na żywo. Wywołanie tej metody musi nastąpić przez lub po wywołaniu metody publish()
.
Aby dopasować częstotliwość urządzenia do przechwytywania dźwięków, należy ustawić właściwość Microphone.rate
. Aby ustawić próg poziomu ciszy, należy wywołać metodę setSilenceLevel()
. Do sterowania właściwościami dźwięku (głośność i przesunięcie) w strumieniu audio służy właściwość 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")
Aby usłyszeć dźwięk, należy wywołać metodę NetStream.play()
oraz wywołać metodę DisplayObjectContainer.addChild()
w celu przekierowania dźwięku do obiektu znajdującego się na liście wyświetlania.
Parametry
microphone:Microphone — Źródło strumienia audio do transmisji.
|
Powiązane elementy interfejsu API
attachCamera | () | metoda |
public function attachCamera(theCamera:Camera, snapshotMilliseconds:int = -1):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Rozpoczyna przechwytywanie danych wideo z kamery lub zatrzymuje przechwytywanie, jeśli parametr theCamera
ma wartość null
. Ta metoda jest dostępna jedynie dla wydawcy określonego strumienia.
Ta metoda przeznaczona jest do użycia z serwerem Flash Media Server; więcej informacji znajduje się w opisie klasy.
Po dołączeniu źródła wideo należy wywołać metodę NetStream.publish()
w celu rozpoczęcia transmitowania. Subskrybenci chcący wyświetlić wideo muszą wywołać metody NetStream.play()
i Video.attachCamera()
, aby wyświetlić wideo na stole montażowym.
Parametru snapshotMilliseconds
można użyć w celu wysłania pojedynczej migawki (przekazując wartość 0) lub serii migawek — czyli w efekcie poklatkowego materiału filmowego — przekazując dodatnią liczbę, która spowoduje dodanie do materiału wideo zwiastuna o określonej liczbie milisekund. Zwiastun wydłuża czas wyświetlania komunikatu wideo. Wielokrotne wywoływanie metody attachCamera()
z dodatnią wartością dla parametru snapshotMilliseconds
umożliwia utworzenie materiału filmowego z sekwencji naprzemiennie odtwarzanych migawek i zwiastunów. Można na przykład każdego dnia przechwytywać pojedynczą klatkę i dołączać ją do pliku wideo. W momencie, gdy subskrybent odtwarza plik, każda klatka pozostaje widoczna na ekranie przez określoną liczbę milisekund, a następnie wyświetlana jest kolejna klatka.
Cel parametru snapshotMilliseconds
jest inny od celu parametru fps
, który można ustawić za pomocą metody Camera.setMode()
. Podczas określania parametru snapshotMilliseconds
można sterować czasem, jaki upływa pomiędzy zapisanymi klatkami. Określenie parametru fps
za pomocą metody Camera.setMode()
umożliwia sterowanie upływającym czasem podczas nagrywania i odtwarzania.
Na przykład użytkownik zechce zrobić migawkę co każde 5 minut, aby uzyskać w sumie 100 migawek. Można to zadanie wykonywać na dwa sposoby:
- Wydając polecenie
NetStream.attachCamera(myCamera, 500)
100 razy, jedno co każde 5 minut. Aby nagrać ten strumień należy poświęcić 500 minut, jednak wynikowy plik to 50 sekund (100 klatek i 500 milisekund pomiędzy klatkami). - Wydając polecenie
Camera.setMode()
z parametremfps
o wartości 1/300 (jedna klatka na 300 sekund lub jedna co każde 5 minut), a następnie polecenieNetStream.attachCamera(source)
, aby zezwolić kamerze na ciągłe przechwytywanie przez 500 minut. Wynikowy plik będzie odtwarzany przez 500 minut — taki sam czas, w jakim został nagrywany — z każdą klatką wyświetlaną przez 5 minut.
Obie techniki przechwytują te same 500 klatek i oba podejścia są użyteczne; wybór podejścia zależy głównie od wymagań odtwarzania. Na przykład w drugim przypadku dźwięk może być nagrywany przez cały czas. Oba pliki w przybliżeniu będą miały ten sam rozmiar.
Parametry
theCamera:Camera — Źródło transmisji wideo. Poprawnymi wartościami jest obiekt Camera (który rozpoczyna przechwytywanie wideo) oraz wartość null . Jeśli przekazana zostanie wartość null , aplikacja zatrzyma przechwytywanie wideo i wszystkie dodatkowe parametry, wysyłane przez użytkownika, zostaną zignorowane.
| |
snapshotMilliseconds:int (default = -1 ) — Określa, czy strumień wideo jest ciągły, jest pojedynczą klatką lub serią pojedynczych klatek użytych w celu utworzenia fotografii poklatkowej.
|
close | () | metoda |
public function close():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zatrzymuje odtwarzanie wszystkich danych strumienia, ustawia właściwość time
na 0 i czyni strumień dostępnym dla innych celów. Ta metoda usuwa również lokalną kopię pliku wideo pobranego za pomocą protokołu HTTP. Mimo że aplikacja usuwa lokalną kopię pliku, który utworzyła, kopia może nadal istnieć w katalogu pamięci podręcznej. Jeśli zaistnieje potrzeba całkowitego zablokowania możliwości buforowania lub lokalnego przechowywania plików wideo, należy wówczas użyć serwera Flash Media Server.
Używając serwera Flash Media Server, ta metoda będzie wywoływana niejawnie w momencie wywołania metody NetStream.play()
ze strumienia publikowania lub metody NetStream.publish()
ze strumienia subskrypcji. Należy zauważyć, że:
-
Jeśli ze strumienia publikowania wywołana zostanie metoda
close()
, publikowanie w strumieniu zostanie zatrzymane, a wydawca będzie mógł od tego momentu używać strumienia do innych celów. Subskrybenci nie będą otrzymywać niczego więcej ze strumienia, ponieważ publikowanie zostało zatrzymane. -
Jeśli ze strumienia subskrypcji wywołana zostanie metoda
close()
, odtwarzanie strumienia zostanie zatrzymane i subskrybent będzie mógł go używać do innych celów. Nie dotyczy to pozostałych subskrybentów. -
Strumień subskrypcji można zatrzymać bez konieczności zatrzymywania lub zmiany jego typu za pomocą wywołania
flash.net.NetStream.play(false)
.
Powiązane elementy interfejsu API
dispose | () | metoda |
public function dispose():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11, AIR 3.0 |
Zwalnia wszystkie źródła kontrolowane przez obiekt NetStream.
Metoda dispose()
działa podobnie do metody close
. Główna różnica między tymi metodami polega na tym, że metoda dispose()
zwalnia pamięć służącą do wyświetlania bieżącej klatki wideo. Jeśli ta klatka jest w danej chwili wyświetlana na ekranie, powoduje to zniknięcie obrazu z ekranu. Metoda close()
nie usuwa zawartości ekranu, gdyż nie zwalnia tej pamięci.
onPeerConnect | () | metoda |
public function onPeerConnect(subscriber:NetStream):Boolean
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Wywoływana, gdy strumień publikowania między równorzędnymi komputerami odpowiada strumieniowi subskrypcji między równorzędnymi komputerami. Zanim subskrybent zostanie połączony z wydawcą, należy wywołać tę metodę, aby umożliwić dostosowanie sterowania dostępem do publikowania pomiędzy równorzędnymi komputerami za pomocą kodu języka ActionScript. Poniższy kod przedstawia przykład tworzenia funkcji wywołania zwrotnego dla tej metody:
var c:Object = new Object; c.onPeerConnect = function(subscriber:NetStream):Boolean { if (accept) return true; else return false; }; m_netStream.client = c;
Jeśli równorzędny wydawca nie implementuje tej metody, na wszystkich równorzędnych komputerach będzie można odtworzyć dowolną opublikowaną zawartość.
Parametry
subscriber:NetStream |
Boolean |
pause | () | metoda |
public function pause():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wstrzymuje odtwarzanie strumienia wideo. Wywołanie tej metody nie skutkuje niczym, jeśli wideo zostało już wcześniej wstrzymane. Aby wznowić odtwarzanie wideo po jego wstrzymaniu, należy wywołać metodę resume()
. Aby możliwe było przełączanie pomiędzy wstrzymywaniem i odtwarzaniem (wideo jest najpierw wstrzymywane, następnie wznawiane), należy wywołać metodę togglePause()
.
Dd wersji Flash Player 9.0.115.0 program Flash Player nie czyści więcej bufora, gdy wywoływana jest metoda NetStream.pause()
. To zachowanie jest określane jako inteligentne wstrzymanie. W wersjach starszych niż 9.0.115.0 program Flash Player oczekiwał na wypełnienie bufora przed wznowieniem odtwarzania, co często powodowało opóźnienie.
Uwaga: W celu zachowania zgodności ze starszym kodem zdarzenie NetStream.Buffer.Flush
(informacje w opisie właściwości NetStatusEvent.info
) nadal jest wywoływane, choć serwer nie opróżnia bufora.
Dla pojedynczego wstrzymania właściwość NetStream.bufferLength
posiada ograniczenie 60 sekund lub dwukrotną wartość właściwości NetStream.bufferTime
w zależności do tego, która wartość jest wyższa. Na przykład jeśli właściwość bufferTime
ma wartość 20 sekund, program Flash Player buforuje dane aż do momentu, w którym właściwość NetStream.bufferLength
jest wyższą z dwóch wartości: 20*2 (40) albo 60; w tym przypadku dane będą buforowane aż do osiągnięcia przez właściwość bufferLength
wartości 60. Jeśli właściwość bufferTime
ma wartość 40 sekund, program Flash Player buforuje dane aż do momentu, w którym właściwość bufferLength
jest wyższą z dwóch wartości: 40*2 (80) albo 60; w tym przypadku dane będą buforowane, aż do osiągnięcia przez właściwość bufferLength
wartości 80.
Właściwość bufferLength
posiada także ograniczenie bezwzględne. Jeśli wywołanie metody pause()
spowoduje wzrost wartości właściwości bufferLength
do ponad 600 sekund lub dwukrotności wartości właściwości bufferTime
program Flash Player, w zależności od tego, która wartość jest wyższa, opróżnia bufor i ponownie ustawia wartość 0 dla właściwości bufferLength
. Na przykład jeśli właściwość bufferTime
ma wartość 120 sekund, program Flash Player opróżnia bufor, jeśli właściwość bufferLength
osiąga wartość 600 sekund; jeśli właściwość bufferTime
ma wartość 360 sekund, program Flash Player opróżnia bufor, jeśli właściwość bufferLength
osiąga wartość 720 sekund.
Wskazówka: W kodzie można użyć metody NetStream.pause()
, aby buforować dane, gdy obserwatorzy oglądają na przykład reklamę, a następnie wznowić w momencie rozpoczęcia głównego wideo.
Powiązane elementy interfejsu API
play | () | metoda |
public function play(... arguments):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Odtwarza plik multimedialny z katalogu lokalnego lub serwera sieci Web; odtwarza plik multimedialny lub strumień „na żywo” z serwera Flash Media Server. Wywołuje obiekt NetStatusEvent
w celu zgłoszenia statusu i komunikatów o błędzie.
Informacje na temat obsługiwanych kodeków i formatów plików można znaleźć w następującej dokumentacji:
- Dokumentacja serwera Flash Media Server
- Exploring Flash Player support for high-definition H.264 video and AAC audio
- FLV/F4V open specification documents
Przepływ operacji dot. odtwarzania pliku lub strumienia „na żywo”
- Utwórz obiekt Video, który będzie wyświetlał wideo, i wywołaj metodę
addChild()
, aby dodać go do stołu montażowego. Utwórz obiekt NetConnection i wywołaj metodę
NetConnection.connect()
.Aby odtworzyć plik z katalogu lokalnego lub serwera sieci Web, przekaż wartość null.
Aby odtworzyć nagrany plik lub strumień „na żywo” z serwera Flash Media Server, przekaż identyfikator URI aplikacji Flash Media Server.
- Wywołaj metodę
addEventListener()
obiektu NetConnection, aby wykryć zdarzenienetStatus
(NetStatusEvent.NET_STATUS
). - W przypadku zdarzenia
NetConnection.Connect.Success
utwórz obiekt NetStream i przekaż do konstruktora obiekt NetConnection. - Wywołaj metodę
attachNetStream()
obiektu Video i przekaż do niej obiekt NetStream. Wywołaj metodę
play()
obiektu NetStream.Aby odtworzyć strumień „na żywo”, przekaż nazwę strumienia przekazanego do metody
NetStream.publish()
.Aby odtworzyć nagrany plik, przekaż nazwę pliku.
Uwaga: Sprawdzona procedura polega na dodawaniu obiektu Video za każdym razem do stołu montażowego, przyłączanie do niego obiektu NetStream, a następnie wywoływanie metody play()
obiektu NetStream.
Włączanie trybu generowania danych
Aby włączyć tryb generowania danych, należy wywołać metodę play(null)
. W tym trybie wywołanie metody appendBytes()
umożliwia dostarczanie danych do strumienia NetStream. Tryb generowania danych jest przeznaczony do strumieniowego przesyłania treści za pośrednictwem połączenia HTTP z modułu Adobe HTTP Dynamic Streaming Origin Module na serwerze HTTP Apache. Strumieniowe przesyłanie dynamiczne przez połączenie HTTP umożliwia klientom szybkie przechodzenie do dowolnych punktów w pliku (tzw. wyszukiwanie). Architektura Open Source Media Framework (OSMF) obsługuje strumieniowe przesyłanie dynamiczne przez połączenia HTTP w przypadku strumieni VOD i strumieni przesyłanych na żywo. Przykłady zastosowania obiektu NetStream w trybie generowania danych można znaleźć w kodzie źródłowym architektury OSMF. Więcej informacji na temat dynamicznego przesyłania strumieniowego przez połączenia HTTP można znaleźć na stronie Dynamiczne przesyłanie strumieniowe przez połączenie HTTP.
W przypadku użycia tej metody bez serwera Flash Media Server obowiązują pewne uwarunkowania związane z bezpieczeństwem. Plik w zaufanym lokalnym obszarze izolowanym lub lokalnym obszarze izolowanym z dostępem do sieci może ładować i odtwarzać plik wideo ze zdalnego obszaru izolowanego, ale nie może uzyskać dostępu do danych zdalnego pliku bez jawnego uprawnienia w postaci pliku reguł URL. Ponadto można uniemożliwić plikowi SWF użycie tej metody w programie Flash Player — w tym celu należy ustawić parametr allowNetworking
znaczników object
oraz embed
na stronie HTML zawierającej treść SWF. Więcej informacji na temat zabezpieczeń zawiera odpowiedni temat w witrynie Flash Player Developer Center: Bezpieczeństwo.
Parametry
... arguments — Odtwarzanie pliku lokalnego
Położenie pliku multimedialnego. Argument może być obiektem String, właściwością Odtwarzanie pliku z serwera Flash Media Server
Możliwe jest odtworzenie plików w formatach opisanych w poniższej tabeli. Składnia różni się w zależności od formatu pliku.
Włączanie trybu generowania danych
Aby włączyć „tryb generowania danych”, należy przekazać wartość Uwagi dotyczące wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS W przypadku wideo w formacie H.264 interfejsy API systemu iOS przeznaczone do odtwarzania wideo przyjmują tylko adres URL wskazujący plik lub strumień. Nie można przekazać do dekodowania bufora danych wideo w formacie H264. W zależności od źródła wideo należy przekazać odpowiedni argument do metody
|
Zdarzenia
status: — Wywoływane przy próbie odtworzenia treści zaszyfrowanej przy użyciu mechanizmu DRM. Wartość właściwości code to "DRM.encryptedFLV" .
|
Zgłasza
SecurityError — Niezaufane pliki lokalne nie mogą komunikować się z siecią Internet. Można obejść to ograniczenie przez ponowne zaklasyfikowanie pliku SWF jako lokalnego z dostępem do sieci lub pliku zaufanego.
| |
ArgumentError — Należy określić przynajmniej jeden parametr.
| |
Error — Obiekt NetStream jest nieprawidłowy. Może być to spowodowane niepowodzeniem obiektu NetConnection.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
play()
również należy podać rozszerzenie.
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 | () | metoda |
public function play2(param:NetStreamPlayOptions):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Umożliwia płynne przełączanie między plikami z różnymi szybkościami transmisji i wznowienie działania obiektu NetStream po przerwaniu i ponownym nawiązaniu połączenia.
Ta metoda jest rozszerzoną wersją metody NetStream.play()
. Podobnie jak metoda play()
, metoda play2()
rozpoczyna odtwarzanie pliku multimedialnego lub kolejkuje pliki multimedialne, aby utworzyć listę odtwarzania. Jeśli jest używana z serwerem Flash Media Server, może ustawić żądanie przełączenia na inny plik multimedialny. Przejście następuje w sposób płynny i niewidoczny, w aplikacji klienckiej. Metoda przełączania strumieni play2()
używana jest przy realizacji następujących funkcji:
Dynamiczne przesyłanie strumieniowe
Dynamiczne przesyłanie strumieniowe (obsługiwane przez serwer Flash Media Server 3.5 i nowsze wersje) umożliwia udostępnianie z serwera strumienia kodowanego z różnymi szybkościami transmisji. Gdy stan sieci użytkownika odbierającego strumień ulegnie zmianie, również szybkość transmisji zmienia się na taką, która zapewni optymalną jakość odbioru. Klasa NetStreamInfo
umożliwia monitorowanie parametrów sieci i przełączanie strumieni w zależności od danych. Możliwe jest także przełączanie strumieni odpowiednio do parametrów danego klienta. Więcej informacji można znaleźć w sekcji „Dynamic streaming” w publikacji „Adobe Flash Media Server Developer Guide”.
Firma Adobe opracowała niestandardową klasę ActionScript o nazwie DynamicStream, która rozszerza klasę NetStream. Klasa DynamicStream umożliwia zaimplementowanie dynamicznego przesyłania strumieniowego w aplikacji, bez konieczności pisania własnego kodu wykrywającego bieżące parametry pracy sieci. Nawet jeśli programista zdecyduje się na napisanie własnej implementacji dynamicznego przesyłania strumieniowego, klasa DynamicStream może posłużyć za implementację referencyjną. Klasę i jej dokumentację można pobrać ze strony narzędzi i materiałów do pobrania dotyczących serwera Flash Media Server.
Ponowne podłączanie strumienia
Ponowne podłączanie strumienia (obsługiwane na serwerze Flash Media Server 3.5.3 lub nowszym) umożliwia użytkownikom nieprzerwany odbiór multimediów mimo utraty połączenia. Multimedia są dalej odtwarzane z bufora, a aplikacja ActionScript próbuje ponownie nawiązać połączenie z serwerem Flash Media Server. Po nawiązaniu połączenia należy wywołać metodę NetStream.attach()
, aby użyć tego samego obiektu NetStream z nowym obiektem NetConnection. Do ponownego podłączenia strumienia służą następujące elementy interfejsu API: NetStream.attach()
, NetStreamPlayTransitions.RESUME
oraz NetStreamPlayTrasitions.APPEND_AND_WAIT
. Więcej informacji zawiera Dokumentacja serwera Flash Media Server 3.5.3.
Parametry
param:NetStreamPlayOptions |
Powiązane elementy interfejsu API
preloadEmbeddedData | () | metoda |
public function preloadEmbeddedData(param:NetStreamPlayOptions):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.5, Flash Lite 4 |
Wyodrębnia metadane DRM z przechowywanego lokalnie pliku multimedialnego.
Pierwszym krokiem w procesie pobierania kuponów DRM potrzebnych do odtwarzania offline oraz zapisywania ich w pamięci podręcznej powinno być wywołanie metody preloadEmbeddedMetaData()
. Gdy w pliku multimedialnym zostaną wykryte osadzone metadane DRM, do funkcji object is onDRMContentData
klienta NetStream przekazywany jest obiekt DRMContentData. Ten obiekt DRMContentData zawiera informacje potrzebne do uzyskania kuponu niezbędnego do odtworzenia treści. Obiekt DRMContentDataObject należy przekazać do metody loadVoucher()
obiektu DRMManager w celu pobrania kuponu.
Oto kroki procesu wstępnego ładowania kuponu DRM:
-
Utwórz nowy obiekt NetStream potrzebny do wstępnego załadowania metadanych.
- Przypisz funkcję wywołania zwrotnego do właściwości
onDRMContentData
obiektu NetStreamclient
. - Utwórz nowy obiekt NetStreamPlayOptions i przypisz jego właściwości
streamName
ciąg znaków adresu URL wskazujący na lokalny plik wideo. - Wywołaj metodę
preloadEmbeddedMetadata()
, przekazując obiekt NetStreamPlayOptions. - W odpowiedzi na wywołanie zwrotne
onDRMContentData
wywołaj metodęloadVoucher()
obiektu DRMManager, przekazując obiekt DRMContentData. Jeśli właściwośćauthenticationMethod
obiektu DRMContentData ma wartośćuserNameAndPassWord
, wówczas należy uwierzytelnić użytkownika na serwerze uprawnień przed załadowaniem kuponu. - Zamknij obiekt NetStream używany do ładowania wstępnego.
Uwaga: Aby użyć tego samego obiektu NetStream od wstępnego ładowania metadanych i odtwarzania treści, należy przed rozpoczęciem odtwarzania poczekać na wywołanie funkcji onPlayStatus
wygenerowane przez operację ładowania wstępnego.
Pobrane kupony są przechowywane w lokalnej pamięci podręcznej. Odtwarzanie treści online także powoduje pobranie kuponów i zapisanie ich w pamięci podręcznej. Podczas wyświetlania pliku z treścią chronioną przy użyciu mechanizmu DRM, kupon jest automatycznie pobierany z magazynu lokalnego. Do zarządzania pamięcią podręczną kuponów służy klasa DRMManager.
Uwaga: Wstępne ładowanie metadanych DRM za pośrednictwem połączeń HTTP, HTTPS lub RTMP nie jest obsługiwane. Wstępne ładowanie metadanych jest możliwe wyłącznie z plików przechowywanych w systemie plików.
Parametry
param:NetStreamPlayOptions — Obiekt NetStreamPlayOptions opisujący żądane opcje przetwarzania pliku treści.
|
Powiązane elementy interfejsu API
publish | () | metoda |
public function publish(name:String = null, type:String = null):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Wysyła strumieniowo dane audio, wideo i komunikaty danych z klienta na serwer Flash Media Server, opcjonalnie rejestrując strumień w trakcie transmisji. Ta metoda wywołuje obiekt zdarzenia NetStatusEvent zawierający informacje o strumieniu. Przed wywołaniem metody NetStream.publish()
należy przechwycić zdarzenie "NetConnection.Connect.Success"
w celu sprawdzenia, czy aplikacja pomyślnie nawiązała połączenie z serwerem Flash Media Server.
Podczas publikowania można nagrywać pliki w formacie FLV lub F4V. W przypadku rejestrowania w formacie F4V należy użyć narzędzia „spłaszczającego” format, jeśli plik ma być odtwarzany lub edytowany w innej aplikacji. Narzędzie można pobrać ze strony www.adobe.com/go/fms_tools.
Uwaga: Nie należy używać tej metody do odtwarzania strumienia. Aby odtworzyć strumień, należy wywołać metodę NetStream.play()
.
Przepływ operacji publikowania strumienia
- Utwórz obiekt NetConnection i wywołaj metodę
NetConnection.connect()
. - Wywołaj metodę
NetConnection.addEventListener()
, aby wykrywać zdarzenia NetStatusEvent. - W przypadku zdarzenia
"NetConnection.Connect.Success"
utwórz obiekt NetStream i przekaż do konstruktora obiekt NetConnection. - Aby przechwytywać dźwięk i wideo, wywołaj metodę
NetStream.attachAudio()
i metodęNetStream.attachCamera()
. - Aby opublikować strumień, wywołaj metodę
NetStream.publish()
. Publikowane dane można również rejestrować, tak aby możliwe było ich odtworzenie w późniejszym czasie.
Uwaga: Obiekt NetStream może publikować strumień lub odtwarzać strumień, ale nie może wykonywać obu tych działań. Aby opublikować strumień i odtworzyć go z serwera, należy utworzyć dwa obiekty NetStream. Za pomocą jednego obiektu NetConnection można przesłać wiele obiektów NetStream.
Serwer Flash Media Server tworzy plik podczas nagrywania strumienia. Domyślnie serwer tworzy katalog o nazwie instancji aplikacji przekazanej do metody NetConnection.connect()
i zapisuje plik w tym katalogu. Na przykład poniższy kod nawiązuje połączenie z domyślną instancją aplikacji "lectureseries" i nagrywa strumień o nazwie "lecture". Plik "lecture.flv" jest zapisywany w katalogu applications/lectureseries/streams/_definst_ directory:
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"); } }
W poniższym przykładzie połączenie jest nawiązywane z instancją "monday" tej samej aplikacji. Plik "lecture.flv" jest zapisywany w katalogu /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"); } }
Parametry
name:String (default = null ) — Ciąg znaków identyfikujący strumień. Klienci, którzy subskrybują ten strumień, przekazują tę nazwę w wywołaniu metody NetStream.play() . Nie należy umieszczać znaku lewego ukośnika „/” po nazwie strumienia. Nie można na przykład nie użyć następującej nazwy strumienia "bolero/" .
Pliki można nagrywać w formatach opisanych w następującej tabeli. Nie można używać metody
| |||||||||||||
type:String (default = null ) — Ciąg znaków określający sposób publikowania strumienia. Poprawnymi wartościami są record , append , appendWithGap i live . Wartością domyślną jest "live ".
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
Aby uruchomić ten przykład, należy podłączyć kamerę do komputera. Należy także dodać składnik Button i Label do obiektu Library.
Aplikacja udostępnia przycisk publikujący strumień (strumień jest wysyłany na serwer Flash Media Server) tylko, gdy aplikacja pomyślnie nawiąże połączenie z serwerem. Aplikacja odtworzy strumień z serwera jedynie wtedy, gdy zostanie on pomyślnie opublikowany. Obiekt zdarzenia NetStatusEvent
zwraca obiekt info
z właściwością code
, która określa te przypadki. Funkcja netStatusHandler
obsługuje te zdarzenia dla klas NetConnection i 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 | () | metoda |
public function receiveAudio(flag:Boolean):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Określa, czy są odtwarzane przychodzące dane dźwiękowe. Ta metoda jest dostępna tylko dla klientów mających subskrypcję określonego strumienia. Nie jest dostępna dla wydawcy strumienia. Wywołanie tej metody musi nastąpić przed wywołaniem metody NetStream.play()
lub po jej wywołaniu. Tę metodę można na przykład dołączyć do przycisku, aby umożliwić użytkownikom wyciszanie i włączanie dźwięku. Tej metody należy używać tylko w przypadku strumieni w emisji pojedynczej odtwarzanych z serwera Flash Media Server. Ta metoda nie działa w przypadku strumieni emisji wielokrotnej RTMFP ani w przypadku używania metody NetStream.appendBytes()
.
Parametry
flag:Boolean — Określa, czy dane wejściowe audio są odtwarzane w strumieniu (wartość true ), czy nie (wartość false ). Wartością domyślną jest true . Jeśli określony strumień zawiera tylko dane dźwiękowe, wartość NetStream.time przestaje być zwiększana w momencie przekazania wartości false .
|
receiveVideo | () | metoda |
public function receiveVideo(flag:Boolean):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Określa, czy w strumieniu jest odtwarzane przychodzące wideo. Ta metoda jest dostępna tylko dla klientów mających subskrypcję określonego strumienia. Nie jest dostępna dla wydawcy strumienia. Wywołanie tej metody musi nastąpić przed wywołaniem metody NetStream.play()
lub po jej wywołaniu. Tę metodę można na przykład dołączyć do przycisku, aby umożliwić użytkownikom wyświetlanie i ukrywanie wideo. Tej metody należy używać tylko w przypadku strumieni w emisji pojedynczej odtwarzanych z serwera Flash Media Server. Ta metoda nie działa w przypadku strumieni emisji wielokrotnej RTMFP ani w przypadku używania metody NetStream.appendBytes()
.
Parametry
flag:Boolean — Określa, czy dane wejściowe wideo są odtwarzane w tym strumieniu (wartość true ) czy nie (wartość false ). Wartością domyślną jest true . Jeśli określony strumień zawiera tylko dane wideo, wartość NetStream.time przestaje być zwiększana w momencie przekazania wartości false .
|
receiveVideoFPS | () | metoda |
public function receiveVideoFPS(FPS:Number):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Określa szybkość odtwarzania dla danych wejściowych wideo. Ta metoda jest dostępna tylko dla klientów mających subskrypcję określonego strumienia. Nie jest dostępna dla wydawcy strumienia. Wywołanie tej metody musi nastąpić przed wywołaniem metody NetStream.play()
lub po jej wywołaniu. Tę metodę można na przykład wywołać w celu umożliwienia użytkownikom ustawienia szybkości odtwarzania wideo. Aby określić bieżącą szybkość odtwarzania, należy użyć właściwości NetStream.currentFPS
. Aby przestać odbierać wideo, należy przekazać wartość 0
.
Jeśli do parametru FPS zostanie przekazana wartość w celu ograniczenia szybkość odtwarzania wideo, serwer Flash Media Server będzie usiłował zmniejszyć tę szybkość przy zachowaniu integralności danych wideo. Między każdymi dwiema klatkami kluczowymi serwer wysyła minimalną liczbę klatek wymaganą do uzyskania żądanej szybkości. Klatki pośrednie muszą być wysyłane w trybie ciągłym, gdyż w przeciwnym razie nastąpi uszkodzenie wideo. Dlatego pożądana liczba klatek wysyłana jest w sposób ciągły natychmiast po klatce kluczowej. Ponieważ klatki nie są równomiernie rozłożone, ruch jest wyświetlany płynnie w segmentach między „zacięciami”.
Tej metody należy używać tylko w przypadku strumieni w emisji pojedynczej odtwarzanych z serwera Flash Media Server. Ta metoda nie działa w przypadku strumieni emisji wielokrotnej RTMFP ani w przypadku używania metody NetStream.appendBytes()
.
Parametry
FPS:Number — Określa szybkość odtwarzania (liczbę klatek na sekundę) dla danych wejściowych wideo.
|
resetDRMVouchers | () | metoda |
public static function resetDRMVouchers():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 11.8, Flash Lite 4 |
W aplikacjach AIR powoduje to usunięcie wszystkich buforowanych lokalnie danych kuponów zarządzania prawami cyfrowymi (DRM). W przypadku aplikacji działających w przeglądarkach ta funkcja jest dostępna tylko w kontekście błędów 3322 i działa analogicznie do panelu ustawień odtwarzania zawartości chronionej.
Aplikacja musi ponownie pobrać wszelkie wymagane kupony z serwera uprawnień, aby użytkownik miał dostęp do chronionej treści. Wywołanie tej funkcji jest równoważne wywołaniu funkcji resetDRMVouchers()
obiektu DRMManager.
Zgłasza
IOError — Danych kuponów nie można usunąć.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
NetStream.resetDRMVouchers();
resume | () | metoda |
public function resume():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wznawia odtwarzanie wstrzymanego strumienia wideo. Jeśli wideo jest w danym momencie odtwarzane, wywołanie tej metody niczym nie skutkuje.
Powiązane elementy interfejsu API
seek | () | metoda |
public function seek(offset:Number):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wyszukuje klatkę kluczową (w branży filmowej nazywanej również) najbliższą dla określonego położenia. Klatka kluczowa jest umieszczana w miejscu wskazywanym przez wartość przesunięcia (w sekundach) licząc od początku strumienia.
Strumienie wideo są zazwyczaj kodowane z użyciem dwóch typów klatek, kluczowych (I-klatek) oraz P-klatek. Klatki kluczowe zawierają całe obrazy podczas, gdy P-klatki są klatkami tymczasowymi, które dostarczają dodatkowych informacji między kolejnymi klatkami kluczowymi. Strumień wideo zazwyczaj posiada klatkę kluczową co 10–50 klatek.
Serwer Flash Media Server oferuje kilka mechanizmów wyszukiwania: udoskonalone wyszukiwanie i inteligentne wyszukiwanie.
Udoskonalone wyszukiwanie
Udoskonalone wyszukiwanie jest domyślnie włączone. Aby wyłączyć udoskonalone wyszukiwanie, należy w pliku konfiguracyjnym Application.xml
na serwerze Flash Media Server ustawić element EnhancedSeek
na false
.
Jeśli udoskonalone wyszukiwanie jest włączone, serwer wygeneruje w punkcie określonym przez parametr offset
nową klatkę kluczową w oparciu o poprzednią klatkę kluczową i wszystkie pośrednie P-klatki. Jednak generowanie klatek kluczowych znacząco obciąża serwer i może spowodować zniekształcenie w generowanej klatce. Jeśli kodekiem wideo jest On2, do klienta wysyłana jest klatka kluczowa znajdująca się przed punktem wyszukiwania i wszystkie P-klatki pomiędzy klatką kluczową i punktem wyszukiwania.
Jeśli udoskonalone wyszukiwanie jest wyłączone, serwer rozpoczyna przesyłanie strumieniowe od najbliższej klatki kluczowej. Załóżmy na przykład, że w klipie wideo klatki kluczowe znajdują się na pozycjach 0 sekund i 10 sekund. Przejście (wyszukanie) do punktu 4 sekund powoduje rozpoczęcie odtwarzania od 4. sekundy przy wykorzystaniu klatki kluczowej na pozycji 0 sekund. Wideo zostanie „zamrożone” do momentu, aż osiągnie kolejną klatkę kluczową w 10. sekundzie. Aby uzyskać lepsze wyniki wyszukiwania, należy zmniejszyć interwał klatek kluczowych. W normalnym trybie wyszukiwania nie ma możliwości rozpoczęcia odtwarzania wideo w punkcie pomiędzy klatkami kluczowymi.
Inteligentne wyszukiwanie
Aby włączyć inteligentne wyszukiwanie, należy przypisać właściwości NetStream.inBufferSeek
wartość true
.
Funkcja inteligentnego wyszukiwania umożliwia programowi Flash Player wyszukiwanie w istniejącym buforze odtwarzania do tyłu i buforze odtwarzania do przodu. Gdy inteligentne wyszukiwanie jest wyłączone, każde wywołanie metody seek()
powoduje, że program Flash Player opróżnia bufor i żąda danych z serwera. Więcej informacji zawiera opis właściwości NetStream.inBufferSeek
.
Wyszukiwanie w trybie generowania danych
Wywołanie metody seek()
obiektu NetStream w trybie generowania danych powoduje, że od tej pory wszystkie bajty przekazywane do metody appendBytes()
będą odrzucane (nie będą umieszczane w buforze, gromadzone w kolejce FIFO komunikatów częściowych ani analizowane w poszukiwaniu punktów wyszukiwania), aż do wywołania appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN
lub appendBytesAction(NetStreamAppendBytesAction.RESET_SEEK)
w celu zresetowania analizatora. Informacje na temat trybu generowania danych zawiera opis metody NetStream.play()
.
Parametry
offset:Number — Przybliżona wartość czasu (w sekundach) dla przesunięcia w pliku wideo. Jeśli element <EnhancedSeek> ma w pliku konfiguracyjnym Application.xml wartość true (jest to ustawienie domyślne), serwer tworzy klatkę kluczową przesuniętą o wartość parametru offset . (Dotyczy serwera Flash Media Server).
|
Powiązane elementy interfejsu API
send | () | metoda |
public function send(handlerName:String, ... arguments):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Wysyła do wszystkich subskrybentów komunikat za pomocą opublikowanego strumienia. Ta metoda jest dostępna jedynie dla wydawcy określonego strumienia. Ta metoda jest dostępna tylko w przypadku współpracy z serwerem Flash Media Server. Aby przetworzyć i wygenerować odpowiedź dla tego komunikatu, należy utworzyć moduł obsługi dla obiektu NetStream
, np. ns.HandlerName
.
W programie Flash Player lub środowisku AIR metody i ich dane, zmienne prototypów obiektów czy zmienne nienumeryczne nie są serializowane. Dla obiektów wyświetlanych program Flash Player lub środowisko AIR serializuje ścieżki, ale nie dane.
Aby dodać klatki kluczowe z danymi do strumienia publikowanego „na żywo” na serwer Flash Media Server, należy wywołać metodę send()
. Klatka kluczowa danych jest komunikatem, który wydawca dodaje do strumienia „na żywo”. Klatki kluczowe danych są zazwyczaj używane do dodawania metadanych do strumienia „na żywo” przed przechwyceniem danych dla strumienie kamery i mikrofonu. Wydawca może dodać klatki kluczowe danych w dowolnym momencie w czasie publikowania strumienia „na żywo”. Klatka kluczowa danych pozostaje zapisana w pamięci serwera tak długo, jak długo wydawca jest połączony z serwerem.
Przed dodaniem klatki kluczowej danych klienci subskrybujący strumień „na żywo” otrzymają klatkę kluczową zaraz po jej dodaniu. Po dodaniu klatki kluczowej danych klienci subskrybujący strumień „na żywo” otrzymają klatkę w momencie dokonania subskrypcji.
Aby dodać klatkę kluczową metadanych do strumienia „na żywo” przesłanego na serwer Flash Media Server, należy jako nazwy użyć argumentu @setDataFrame
, poprzedzając nim dwa dodatkowe argumenty, np.:
var ns:NetStream = new NetStream(nc); ns.send("@setDataFrame", "onMetaData", metaData);
Argument @setDataFrame
odnosi się do specjalnego modułu obsługi wbudowanego w serwer Flash Media Server. Argument onMetaData
jest nazwą funkcji wywołania zwrotnego w aplikacji klienckiej użytkownika, która wykrywa zdarzenia onMetaData
i pobiera metadane. Trzeci element, metaData
, jest instancją Object
lub Array
z właściwościami, które definiują wartości metadanych.
Argumentu @clearDataFrame
należy używać do usuwania klatek kluczowych metadanych, które zostały już ustawione w strumieniu:
ns.send("@clearDataFrame", "onMetaData");
Parametry
handlerName:String — Komunikat do wysłania; także nazwa modułu obsługi języka ActionScript do odbierania komunikatów. Nazwa modułu obsługi może być jedynie na pierwszym poziomie zagłębienia (oznacza to, że nie może mieć formatu element nadrzędny / element podrzędny) i pozostaje względna wobec obiektu strumieniowania. Nie należy używać wyrazów zastrzeżonych dla nazwy modułu obsługi. Na przykład użycie „close ” jako nazwy modułu obsługi powoduje niepowodzenie wykonania metody. Aby dodać do strumienia „na żywo” klatkę kluczową metadanych, korzystając z serwera Flash Media Server, należy użyć argumentu @setDataFrame lub argumentu @clearDataFrame , aby usunąć klatkę kluczową.
| |
... arguments — Opcjonalne argumenty mogą być dowolnego typu. Są serializowane i wysyłane za pomocą połączenia, a odbierający moduł obsługi otrzymuje je w tej samej kolejności. Jeśli parametr jest obiektem cyklicznym (np. powiązana lista cykliczna), obiekt serializujący obsługuje odwołania poprawnie. Korzystając z serwera Flash Media Server, jeśli @setDataFrame jest pierwszym argumentem, jako drugiego należy użyć onMetaData ; dla trzeciego argumentu należy przekazać instancję Object lub Array , która posiada metadane ustawione we właściwościach. Listę sugerowanych nazw właściwości zawiera podręcznik Flash Media Server Developer Guide. Jeśli @clearDataFrame jest pierwszym argumentem, należy użyć onMetaData jako drugiego argumentu i nie używać trzeciego.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
NetStream
. Jeden używany jest do publikowania strumienia „na żywo”, natomiast drugi subskrybuje strumień.
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
. Moduł obsługi zdarzeń onMetaData
nie jest zarejestrowany w metodzie addEventListener()
, ale w zamian jest funkcją wywołania zwrotnego o nazwie onMetaData
, na przykład:
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 | () | metoda |
public function setDRMAuthenticationCredentials(userName:String, password:String, type:String):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Lite 4 |
Ustawia poświadczenia uwierzytelniania DRM niezbędne do wyświetlania skojarzonej zaszyfrowanej zawartości.
Metoda setDRMAuthenticationCredentials()
musi udostępniać poświadczenia znane dostawcy treści lub serwerowi proxy i akceptowane przez dostawcę lub serwer. Są to te same poświadczenia, z których użytkownik korzysta w celu uzyskania zezwolenia na wyświetlenie treści.
Parametry
userName:String — Poprawna nazwa użytkownika.
| |
password:String — Hasło odpowiadające podanej nazwie użytkownika.
| |
type:String — Ciąg znaków określający typ podanych poświadczeń uwierzytelniania. Poprawne wartości to "drm" i "proxy" . Wartością domyślną jest "drm" .
|
Powiązane elementy interfejsu API
step | () | metoda |
public function step(frames:int):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
Powoduje przejście naprzód lub wstecz o określoną liczbę klatek względem obecnie wyświetlanej klatki. Podanie liczby dodatniej powoduje przejście w przód, a liczby ujemnej — przejście wstecz. Wywołaj tę metodę, aby utworzyć funkcje dokładnego szybkiego przewijania do przodu lub do tyłu.
Uwaga: ta metoda nie jest obsługiwana w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Ta metoda jest dostępna tylko podczas strumieniowego przesyłania danych z serwera Flash Media Server 3.5.3 lub nowszej wersji oraz gdy właściwość NetStream.inBufferSeek
ma wartość true
. Klatka docelowa również musi znajdować się w buforze. Na przykład, jeśli obecnie wyświetlana jest klatka numer 120 i zostanie podana wartość 1000, wykonanie metody nie powiedzie się, gdy klatka numer 1120 nie będzie dostępna w buforze.
Ta metoda jest przeznaczona do użycia z metodami pause()
lub togglePause()
. Jeśli podczas odtwarzania użytkownik przesunie głowicę o 10 klatek do przodu lub do tyłu bez wstrzymywania odtwarzania, wówczas ten skok nie zostanie zauważony lub będzie wyglądał jak chwilowe zakłócenie. Dźwięk zostanie wytłumiony również po wywołaniu metody pause()
lub togglePause
.
Jeśli wywołanie metody NetStream.step()
zakończy się powodzeniem, wysłane zostanie zdarzenie NetStatusEvent z wartością code
obiektu informacyjnego równą "NetStream.Step.Notify".
Parametry
frames:int |
Powiązane elementy interfejsu API
togglePause | () | metoda |
public function togglePause():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wstrzymuje lub wznawia odtwarzanie strumienia. Pierwsze wywołanie tej metody wstrzymuje odtwarzanie; kolejne jej wywołanie wznawia odtwarzanie. Z tej metody można korzystać, aby umożliwić użytkownikom wstrzymywanie i wznawianie odtwarzania za pomocą pojedynczego przycisku.
Powiązane elementy interfejsu API
asyncError | Zdarzenie |
flash.events.AsyncErrorEvent
właściwość AsyncErrorEvent.type =
flash.events.AsyncErrorEvent.ASYNC_ERROR
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wywoływana w przypadku asynchronicznego zgłoszenia wyjątku — pochodzącego z macierzystego kodu asynchronicznego. To zdarzenie wywoływane jest, gdy serwer wywołuje metodę na komputerze klienckim, który nie został zdefiniowany.
StałaAsyncErrorEvent.ASYNC_ERROR
definiuje wartość właściwości type
obiektu zdarzenia asyncError
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
currentTarget | Obiekt przetwarzający aktywnie obiekt Event za pomocą detektora zdarzeń. |
target | Obiekt wywołujący zdarzenie |
error | Błąd, który spowodował wywołanie zdarzenia. |
Powiązane elementy interfejsu API
drmAuthenticate | Zdarzenie |
flash.events.DRMAuthenticateEvent
właściwość DRMAuthenticateEvent.type =
flash.events.DRMAuthenticateEvent.DRM_AUTHENTICATE
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Lite 4 |
Wywoływane, gdy obiekt NetStream próbuje odtwarzać zawartość zaszyfrowaną przy użyciu mechanizmu DRM, która wymaga poświadczeń użytkownika do uwierzytelnienia przed rozpoczęciem odtwarzania.
Uwaga: to zdarzenie nie jest obsługiwane w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Do uwierzytelnienia użytkownika należy użyć metody setDRMAuthenticationCredentials()
obiektu NetStream. Jeśli uwierzytelnienie użytkownika nie powiedzie się, aplikacja ponowi próbę uwierzytelnienia i wywoła nowe zdarzenie DRMAuthenticateEvent dla obiektu NetStream.
DRMAuthenticateEvent.DRM_AUTHENTICATE
definiuje wartość właściwości type
obiektu zdarzenia DRMAuthenticateEvent.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
authenticationType | Określa, czy podane poświadczenia służą do uwierzytelniania na serwerze FMRMS (Flash Media Rights Management Server), czy na serwerze proxy. |
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
header | Nagłówek pliku z zaszyfrowaną treścią udostępniony przez serwer. |
netstream | Obiekt NetStream, który zainicjował zdarzenie. |
passwordPrompt | Monit o hasło udostępniony przez serwer. |
target | Obiekt NetStream. |
urlPrompt | Monit o adres URL do wyświetlenia, udostępniony przez serwer. |
usernamePrompt | Monit o nazwę użytkownika udostępniony przez serwer. |
Powiązane elementy interfejsu API
drmError | Zdarzenie |
flash.events.DRMErrorEvent
właściwość DRMErrorEvent.type =
flash.events.DRMErrorEvent.DRM_ERROR
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 10.1, Flash Lite 4 |
Wywoływane, gdy obiekt NetStream próbujący odtwarzać plik zaszyfrowany za pomocą mechanizmu DRM napotka błąd związany z mechanizmem DRM. Obiekt zdarzenia DRMErrorEvent jest wywoływany na przykład w razie niepowodzenia uwierzytelnienia użytkownika. Takie niepowodzenie może wynikać z faktu, że użytkownik nie zakupił praw do wyświetlania treści lub z tego, że dostawca treści nie obsługuje danej aplikacji przeznaczonej do wyświetlania.
Uwaga: to zdarzenie nie jest obsługiwane w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
StałaDRMErrorEvent.DRM_ERROR
definiuje wartość właściwości type
obiektu zdarzenia drmError
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
errorID | Liczbowy kod błędu przypisany do problemu. |
subErrorID | Kod błędu określający bardziej szczegółowe informacje na temat problemu będącego przyczyną błędu. |
target | Obiekt NetStream. |
Powiązane elementy interfejsu API
drmStatus | Zdarzenie |
flash.events.DRMStatusEvent
właściwość DRMStatusEvent.type =
flash.events.DRMStatusEvent.DRM_STATUS
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 10.1, Flash Lite 4 |
Wywoływane, gdy rozpoczyna się odtwarzanie treści zabezpieczonej przy użyciu mechanizmu DRM (tj. gdy użytkownik zostanie uwierzytelniony i uzyska uprawnienia do odtwarzania treści).
Uwaga: to zdarzenie nie jest obsługiwane w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Obiekt DRMStatusEvent zawiera informacje związane z kuponem, np. o tym, czy treść jest dostępna w trybie offline i jaki jest termin ważności kuponu, po upływie którego użytkownicy nie mogą już wyświetlać treści.
StałaDRMStatusEvent.DRM_STATUS
definiuje wartość właściwości type
obiektu zdarzenia drmStatus
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
detail | Ciąg objaśniający kontekst zdarzenia dotyczącego stanu. |
isAnonymous | Określa, czy treść chroniona szyfrowaniem DRM jest dostępna bez konieczności podawania przez użytkownika poświadczeń uwierzytelniania. |
isAvailableOffline | Określa, czy treść chroniona szyfrowaniem DRM jest dostępna w trybie offline. |
offlineLeasePeriod | Pozostały czas (liczba dni), przez jaki zawartość może być jeszcze wyświetlana w trybie offline. |
policies | Niestandardowy obiekt zdarzenia dotyczącego stanu DRM. |
target | Obiekt NetStream. |
voucherEndDate | Data bezwzględna wygaśnięcia kuponu, po której użytkownicy nie będą już mogli wyświetlać treści. |
contentData | Obiekt DRMContentData dla treści. |
voucher | Obiekt DRMVoucher dla treści. |
isLocal | Określa, czy treść jest przechowywana w lokalnym systemie plików |
Powiązane elementy interfejsu API
ioError | Zdarzenie |
flash.events.IOErrorEvent
właściwość IOErrorEvent.type =
flash.events.IOErrorEvent.IO_ERROR
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wywoływana, gdy wystąpi błąd wejścia lub wyjścia uniemożliwiający operację sieciową.
Definiuje wartość właściwościtype
obiektu zdarzenia ioError
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
currentTarget | Obiekt przetwarzający aktywnie obiekt Event za pomocą detektora zdarzeń. |
errorID | Numer referencyjny skojarzony z konkretnym błędem (tylko w środowisku AIR). |
target | Obiekt sieciowy, w którym wystąpił błąd wejścia/wyjścia. |
text | Tekst, który ma być wyświetlany w charakterze komunikatu o błędzie. |
mediaTypeData | Zdarzenie |
flash.events.NetDataEvent
właściwość NetDataEvent.type =
flash.events.NetDataEvent
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.3, AIR 2.7 |
Wywoływane w przypadku przetworzenia komunikatów pewnego typu podczas odtwarzania zawartości wideo.
Obiekt NetDataEvent jest wywoływany w przypadku następujących komunikatów:
- onCuePoint
- onImageData
- onMetaData
- onPlayStatus (dla kodu NetStream.Play.Complete)
- onTextData
- onXMPData
Uwaga: To zdarzenie nie jest wywoływane przez zawartość uruchomioną w programie Flash Player w przeglądarce systemu Android lub BlackBerry Tablet OS ani przez zawartość uruchomioną w środowisku AIR w systemie iOS.
netStatus | Zdarzenie |
flash.events.NetStatusEvent
właściwość NetStatusEvent.type =
flash.events.NetStatusEvent.NET_STATUS
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wywoływana, gdy obiekt NetStream zgłasza swój stan lub warunek błędu. Zdarzenie netStatus
zawiera właściwość info
, która jest obiektem informacji zawierającym informacje charakterystyczne dla zdarzenia np. czy próba połączenia zakończona została pomyślnie, czy niepowodzeniem.
type
obiektu zdarzenia netStatus
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
currentTarget | Obiekt przetwarzający aktywnie obiekt Event za pomocą detektora zdarzeń. |
info | Obiekt z właściwościami opisującymi stan obiektu lub warunek błędu. |
target | Obiekt NetConnection lub NetStream informujący o swoim stanie. |
Powiązane elementy interfejsu API
onCuePoint | Zdarzenie |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Tworzy detektor, którego zadaniem jest generowanie odpowiedzi w momencie osiągnięcia punktu sygnalizacji w czasie odtwarzania pliku wideo. Detektora można używać w kodzie, aby wywołać operacje, gdy wideo osiągnie określony punkt sygnalizacji. Pozwala to na synchronizację pozostałych operacji w aplikacji użytkownika za pomocą zdarzeń odtwarzania wideo. Informacje na temat formatów plików wideo obsługiwanych przez serwer Flash Media Server można znaleźć pod adresem www.adobe.com/go/learn_fms_fileformats_pl.
Uwaga: to zdarzenie nie jest obsługiwane w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Zdarzenie onCuePoint
jest w rzeczywistości właściwością obiektuNetStream.client
. Ta właściwość znajduje się na liście w sekcji Zdarzenia, ponieważ odpowiada na zdarzenia danych, zarówno w mediach strumieniowanych za pomocą serwera Flash Media Server, jak i podczas odtwarzania plików FLV. Więcej informacji na ten temat zawiera opis klasy NetStream. Nie można używać metody addEventListener()
, ani żadnej innej metody klasy EventDispatcher, aby wykrywać lub przetwarzać właściwość onCuePoint
jako zdarzenie. Należy zdefiniować funkcję wywołania zwrotnego i dołączyć ją do jednego z następujących obiektów:
- Obiekt, do którego odwołuje się właściwość
client
instancji NetStream. - Instancja podklasy NetStream. NetStream jest klasą zapieczętowaną, co oznacza, że w środowisku wykonawczym do obiektu NetStream nie można dodawać właściwości ani metod. Należy utworzyć podklasę klasy NetStream i zdefiniować podprogram obsługi zdarzeń w takiej podklasie. Możliwe jest także utworzenie podklasy dynamicznej i dodanie funkcji obsługi zdarzeń do instancji podklasy.
Skojarzony detektor zdarzeń uruchamiany jest po wywołaniu metody NetStream.play()
, jednak przed przesunięciem głowicy odtwarzania.
W pliku wideo można osadzać różnego typu punkty sygnalizacji:
- Punkt sygnalizacji nawigacji określa klatkę kluczową w pliku wideo oraz właściwość
time
punktu sygnalizacji w odniesieniu do tej klatki. Punkty sygnalizacji nawigacji są często używane jako zakładki lub punkty wejścia, aby umożliwić użytkownikom nawigację w pliku wideo. - Punkt sygnalizacji zdarzenia określa czas. Czas może, ale nie musi bezpośrednio odpowiadać konkretnej klatce. Punkt sygnalizacji zdarzenia zazwyczaj reprezentuje w wideo czas, w którym wystąpiły pewne działania i których można użyć w celu wywołania zdarzeń innych aplikacji.
Obiekt zdarzenia onCuePoint
ma następujące właściwości:
Właściwość | Opis |
---|---|
name | Nazwa punktu sygnalizacji nadana w czasie jego osadzania w pliku wideo. |
parameters | Tablica asocjacyjna ciągów znaków par nazwa/wartość określonych dla tego punktu sygnalizacji. Wszystkie poprawne ciągi znaków mogą być używane jako nazwa parametru lub jego wartość. |
time | Czas (liczba sekund), w jakim pojawi się podczas odtwarzania pliku wideo punkt sygnalizacji. |
type | Typ punktu sygnalizacji, który został osiągnięty, nawigacji lub zdarzenia. |
Punkty sygnalizacji można definiować w pliku wideo podczas pierwszego kodowania pliku lub w czasie importowania klipu wideo w narzędziu Flash za pomocą kreatora Import wideo.
Zdarzenie onMetaData
pobiera z pliku wideo także informacje na temat punktów sygnalizacji. Jednak zdarzenie onMetaData
pobiera informacje na temat wszystkich punktów sygnalizacji przed rozpoczęciem odtwarzania wideo. Zdarzenie onCuePoint
odbiera podczas odtwarzania informacje o pojedynczym punkcie sygnalizacji w czasie określonym dla tego punktu.
Zwykle, aby w kodzie użytkownika nastąpiło wykrycie określonego punktu sygnalizacji, w momencie jego pojawienia się, należy użyć zdarzenia onCuePoint
w celu wykonania pewnego działania w kodzie.
Istnieje możliwość użycia listy punktów sygnalizacji dostarczonej do zdarzenia onMetaData
, aby umożliwić użytkownikowi rozpoczynanie odtwarzania wideo w predefiniowanych punktach strumienia. Aby odtworzyć wideo z określonego punktu sygnalizacji, należy przekazać wartość jego właściwości time
do metody NetStream.seek()
.
Przykład ( Sposób korzystania z tego przykładu )
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); }
Powiązane elementy interfejsu API
onDRMContentData | Zdarzenie |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.5, Flash Lite 4 |
Definiuje detektor reagujący na wyodrębnienie przez środowisko AIR metadanych treści DRM osadzonych w pliku multimedialnym.
Uwaga: to zdarzenie nie jest obsługiwane w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Obiekt DRMContentData zawiera informacje potrzebne do uzyskania kuponu niezbędnego do odtwarzania pliku multimedialnego chronionego przy użyciu mechanizmu DRM. W celu pobrania kuponu z tymi informacjami należy użyć klasy DRMManager.
onDRMContentData
jest właściwością obiektu NetStream.client
. Właściwość ta została wymieniona w sekcji Zdarzenia, ponieważ reaguje na zdarzenie data podczas wstępnego ładowania osadzonych danych z lokalnego pliku multimedialnego. Więcej informacji na ten temat zawiera opis klasy NetStream. Nie można używać metody addEventListener()
, ani żadnej innej metody EventDispatcher, aby wykrywać lub przetwarzać właściwość onDRMContentData
jako zdarzenie. Należy raczej zdefiniować pojedynczą funkcję wywołania zwrotnego i dołączyć ją bezpośrednio do jednego z następujących obiektów:
- Obiekt, do którego odwołuje się właściwość
client
instancji NetStream. - Instancja podklasy NetStream. NetStream jest klasą zapieczętowaną, co oznacza, że w środowisku wykonawczym do obiektu NetStream nie można dodawać właściwości ani metod. Można jednak utworzyć podklasę NetStream i zdefiniować własny moduł obsługi zdarzeń w podklasie lub uczynić ją dynamiczną i dodać do instancji podklasy funkcję modułu obsługi zdarzeń.
Powiązane elementy interfejsu API
onImageData | Zdarzenie |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9.0.115.0, Flash Lite 4 |
Tworzy detektor w celu odpowiedzi na odebranie przez program Flash Player danych obrazu jako tablicy bajtów osadzonych w odtwarzanym pliku multimedialnym. Z danych obrazu można utworzyć treść JPEG, PNG lub GIF. Aby załadować tablicę bajtów do obiektu wyświetlanego, należy użyć metody flash.display.Loader.loadBytes()
.
Uwaga: to zdarzenie nie jest obsługiwane w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Zdarzenie onImageData
jest w rzeczywistości właściwością obiektu NetStream.client
. Ta właściwość znajduje się na liście w sekcji Zdarzenia, ponieważ reaguje na zdarzenia dotyczące danych — zarówno w danych przesyłanych strumieniowo za pomocą serwera Flash Media Server, jak i podczas odtwarzania plików FLV. Aby uzyskać więcej informacji na ten temat, należy zapoznać się z opisem klasy NetStream. Nie można używać metody addEventListener()
, ani żadnej innej metody EventDispatcher, aby wykrywać lub przetwarzać onImageData
jako zdarzenia. Należy zdefiniować jedną funkcję wywołania zwrotnego i dołączyć ją do jednego z następujących obiektów:
- Obiekt, do którego odwołuje się właściwość
client
instancji NetStream. - Instancja podklasy NetStream. NetStream jest klasą zapieczętowaną, co oznacza, że w środowisku wykonawczym do obiektu NetStream nie można dodawać właściwości ani metod. Należy utworzyć podklasę klasy NetStream i zdefiniować podprogram obsługi zdarzeń w takiej podklasie. Możliwe jest także utworzenie podklasy dynamicznej i dodanie funkcji obsługi zdarzeń do instancji podklasy.
Skojarzony detektor zdarzeń uruchamiany jest po wywołaniu metody NetStream.play()
, jednak przed przesunięciem głowicy odtwarzania.
Obiekt zdarzenia onImageData zawiera dane obrazu w postaci tablicy bajtów wysłanej za pomocą kanału danych AMF0.
Przykład ( Sposób korzystania z tego przykładu )
Netstream.client
, która obsługuje funkcje wywołania zwrotnego dla zdarzeń onTextData
i onImageData
. Funkcja onImageDataHandler()
używa obiektu zdarzenia onImageData imageData
, aby przechować tablicę bajtów. Natomiast funkcja onTextDataHandler()
używa obiektu zdarzenia onTextData textData
, aby przechować fragmenty danych tekstu (każdy fragment danych jest właściwością obiektu textData
).
W kodzie należy zastąpić rzeczywistą lokalizację pliku multimedialnego tekstem lub metadanymi obrazu dla lokalizacji "yourURL"
.
Obraz i tekst można również obsługiwać za pomocą niestandardowej klasy. Aby uzyskać więcej informacji i przykładów, należy zapoznać się z artykułem Obsługa metadanych oraz punktów podpowiedzi w plikach wideo 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]); } } } }
Powiązane elementy interfejsu API
onMetaData | Zdarzenie |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Tworzy detektor w celu odpowiedzi na odebranie przez program Flash Player informacji opisowych osadzonych w odtwarzanym w danym momencie pliku wideo. Informacje na temat formatów plików wideo obsługiwanych przez serwer Flash Media Server można znaleźć pod adresem www.adobe.com/go/learn_fms_fileformats_pl.
onMetaData
Zdarzenie jest w rzeczywistości właściwością obiektu
NetStream.client. Ta właściwość znajduje się na liście w sekcji Zdarzenia, ponieważ reaguje na zdarzenia danych, zarówno w mediach strumieniowanych za pomocą serwera Flash Media Server, jak i podczas odtwarzania plików FLV. Więcej informacji zawiera opis klasy NetStream oraz właściwości NetStream.client
. Nie można używać metody addEventListener()
, ani żadnej innej metody EventDispatcher, aby wykrywać lub przetwarzać onMetaData
jako zdarzenia. Należy zdefiniować jedną funkcję wywołania zwrotnego i dołączyć ją do jednego z następujących obiektów:
- Obiekt, do którego odwołuje się właściwość
client
instancji NetStream. - Instancja podklasy NetStream. NetStream jest klasą zapieczętowaną, co oznacza, że w środowisku wykonawczym do obiektu NetStream nie można dodawać właściwości ani metod. Można utworzyć podklasę klasy NetStream i zdefiniować podprogram obsługi zdarzeń w takiej podklasie. Możliwe jest także utworzenie podklasy dynamicznej i dodanie funkcji obsługi zdarzeń do wystąpienia tej podklasy.
Narzędzia programu Flash Video Exporter (w wersji 1.1 lub nowszej) umożliwiają samoczynne osadzanie czasu trwania wideo, daty utworzenia, szybkości danych i pozostałych informacji w pliku wideo. Różne kodeki wideo powodują osadzenie różnych zestawów metadanych.
Skojarzony detektor zdarzeń uruchamiany jest po wywołaniu metody NetStream.play()
, jednak przed przesunięciem głowicy odtwarzania.
W wielu przypadkach wartość czasu trwania osadzona w metadanych strumienia przybliża rzeczywisty czas trwania, jednak nie jest dokładna. Innymi słowy nie zawsze jest zgodna z właściwością NetStream.time
, gdy głowica odtwarzania znajduje się na końcu strumienia wideo.
Obiekt zdarzenia przekazany do modułu obsługi zdarzeń onMetaData zawiera jedną właściwość dla każdego fragmentu danych.
Przykład ( Sposób korzystania z tego przykładu )
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); }
Powiązane elementy interfejsu API
onPlayStatus | Zdarzenie |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Tworzy detektor, którego zadaniem jest generowanie odpowiedzi na zakończenie odtwarzania strumienia przez obiekt NetStream. Skojarzony obiekt zdarzenia zapewnia również informacje jako uzupełnienie wartości zwracanych przez zdarzenie netStatus
. Tej właściwości można użyć w kodzie w celu uruchomienia operacji, gdy obiekt NetStream jest przełączany pomiędzy strumieniami na liście odtwarzania (tak jak wskazuje obiekt informacji NetStream.Play.Switch
) lub gdy obiekt NetStream został odtworzony do końca (tak jak wskazuje obiekt informacji NetStream.Play.Complete
).
Zdarzenie onPlayStaus
jest w rzeczywistości właściwością obiektu NetStream.client
. Ta właściwość znajduje się na liście w sekcji Zdarzenia, ponieważ reaguje na zdarzenia dotyczące danych — zarówno w danych przesyłanych strumieniowo za pomocą serwera Flash Media Server, jak i podczas odtwarzania plików FLV. Aby uzyskać więcej informacji na ten temat, należy zapoznać się z opisem klasy NetStream. Nie można używać metody addEventListener()
, ani żadnej innej metody klasy EventDispatcher, aby wykrywać lub przetwarzać właściwość onPlayStatus
jako zdarzenie. Należy zdefiniować funkcję wywołania zwrotnego i dołączyć ją do jednego z następujących obiektów:
- Obiekt, do którego odwołuje się właściwość
client
instancji NetStream. - Instancja podklasy NetStream. NetStream jest klasą zapieczętowaną, co oznacza, że w środowisku wykonawczym do obiektu NetStream nie można dodawać właściwości ani metod. Należy utworzyć podklasę klasy NetStream i zdefiniować podprogram obsługi zdarzeń w takiej podklasie. Możliwe jest także utworzenie podklasy dynamicznej i dodanie funkcji obsługi zdarzeń do instancji podklasy.
To zdarzenie może zwrócić obiekt informacji z poniższymi właściwościami:
Właściwość code | Właściwość level | Znaczenie |
---|---|---|
NetStream.Play.Switch | "status" | Subskrybent jest przełączany pomiędzy strumieniami na liście odtwarzania. |
NetStream.Play.Complete | "status" | Odtwarzanie zostało zakończone. |
NetStream.Play.TransitionComplete | "status" | Subskrybent jest przełączany pomiędzy strumieniami na liście odtwarzania w wyniku przełączania prędkości bitowej strumienia |
Powiązane elementy interfejsu API
onSeekPoint | Zdarzenie |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2, Flash Lite 4 |
Wywoływana synchronicznie z metody appendBytes()
, gdy analizator dołączonych bajtów napotka punkt uznany za możliwy do wyszukania (na przykład klatkę kluczową wideo). To zdarzenie umożliwia skonstruowanie tabeli punktów wyszukiwania. Wartość byteCount
wskazuje na pierwszy bajt komunikatu dla danego punktu wyszukiwania i jest zerowana, tak jak opisano to powyżej Aby przejść do punktu wyszukiwania, należy po odebraniu zdarzenia
NetStream.Seek.Notify
znaleźć ciąg bajtów rozpoczynający się od punktu możliwego do wyszukania i wywołać metodę appendBytes(bytes)
. Jeśli argument bytes
jest obiektem ByteArray
zawierającym ciąg bajtów rozpoczynający się od punktu możliwego do wyszukania, odtwarzanie wideo rozpocznie się od punktu wyszukiwania.
Uwaga: Wywołania metody appendBytes()
wewnątrz tej funkcji wywołania zwrotnego są ignorowane.
Uwaga: to zdarzenie nie jest obsługiwane w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Właściwość onSeekPoint
jest właściwością obiektu NetStream.client
. Właściwość ta jest wymieniona w sekcji Zdarzenia, ponieważ reaguje na dane przekazywane do metody appendBytes()
. Więcej informacji zawiera opis klasy NetStream oraz właściwości NetStream.client
. Nie można używać metody addEventListener()
, ani żadnej innej metody EventDispatcher, aby wykrywać lub przetwarzać właściwość onSeekPoint
jako zdarzenie. Aby użyć właściwości onSeekPoint
, należy zdefiniować funkcję wywołania zwrotnego i dołączyć ją do jednego z następujących obiektów:
- Obiekt, do którego odwołuje się właściwość
client
instancji NetStream. - Instancja podklasy NetStream. NetStream jest klasą zapieczętowaną, co oznacza, że w środowisku wykonawczym do obiektu NetStream nie można dodawać właściwości ani metod. Można jednak utworzyć podklasę klasy NetStream i zdefiniować podprogram obsługi zdarzeń w takiej podklasie. Możliwe jest także utworzenie podklasy dynamicznej i dodanie funkcji obsługi zdarzeń do wystąpienia tej podklasy.
Powiązane elementy interfejsu API
onTextData | Zdarzenie |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9.0.115.0, Flash Lite 4 |
Tworzy detektor w celu odpowiedzi na odebranie przez program Flash Player danych tekstowych osadzonych w odtwarzanym pliku multimedialnym. Dane tekstowe są zapisane w formacie UTF-8 i mogą zawierać informacje na temat formatowania zgodne ze specyfikacją 3GP opisującą tekst z kodem czasowym.
Uwaga: to zdarzenie nie jest obsługiwane w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Zdarzenie onTextData
jest w rzeczywistości właściwością obiektu NetStream.client
. Ta właściwość znajduje się na liście w sekcji Zdarzenia, ponieważ reaguje na zdarzenia dotyczące danych — zarówno w danych przesyłanych strumieniowo za pomocą serwera Flash Media Server, jak i podczas odtwarzania plików FLV. Aby uzyskać więcej informacji na ten temat, należy zapoznać się z opisem klasy NetStream. Nie można używać metody addEventListener()
, ani żadnej innej metody klasy EventDispatcher, aby wykrywać lub przetwarzać właściwość onTextData
jako zdarzenie. Należy zdefiniować funkcję wywołania zwrotnego i dołączyć ją do jednego z następujących obiektów:
- Obiekt, do którego odwołuje się właściwość
client
instancji NetStream. - Instancja podklasy NetStream. NetStream jest klasą zapieczętowaną, co oznacza, że w środowisku wykonawczym do obiektu NetStream nie można dodawać właściwości ani metod. Należy utworzyć podklasę klasy NetStream i zdefiniować podprogram obsługi zdarzeń w takiej podklasie. Możliwe jest także utworzenie podklasy dynamicznej i dodanie funkcji obsługi zdarzeń do instancji podklasy.
Skojarzony detektor zdarzeń uruchamiany jest po wywołaniu metody NetStream.play()
, jednak przed przesunięciem głowicy odtwarzania.
Obiekt zdarzenia onTextData zawiera jedną właściwość dla każdego fragmentu danych tekstowych.
Przykład ( Sposób korzystania z tego przykładu )
Netstream.client
, która obsługuje funkcje wywołania zwrotnego dla zdarzeń onTextData
i onImageData
. Funkcja onImageDataHandler()
używa obiektu zdarzenia onImageData imageData
, aby przechować tablicę bajtów. Natomiast funkcja onTextDataHandler()
używa obiektu zdarzenia onTextData textData
, aby przechować fragmenty danych tekstu (każdy fragment danych jest właściwością obiektu textData
).
W kodzie należy zastąpić rzeczywistą lokalizację pliku multimedialnego tekstem lub metadanymi obrazu dla lokalizacji "yourURL"
.
Obraz i tekst można również obsługiwać za pomocą niestandardowej klasy. Aby uzyskać więcej informacji i przykładów, należy zapoznać się z artykułem Obsługa metadanych oraz punktów podpowiedzi w plikach wideo 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]); } } } }
Powiązane elementy interfejsu API
onXMPData | Zdarzenie |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Tworzy detektor w celu generowania odpowiedzi w momencie odebrania przez program Flash Player informacji charakterystycznych dla programu Adobe Extensible Metadata Platform (XMP) osadzonych w odtwarzanym pliku wideo. Informacje na temat formatów plików wideo obsługiwanych przez serwer Flash Media Server można znaleźć pod adresem www.adobe.com/go/learn_fms_fileformats_pl.
Uwaga: to zdarzenie nie jest obsługiwane w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Zdarzenie onXMPData
jest w rzeczywistości właściwością obiektu NetStream.client
. Ta właściwość znajduje się na liście w sekcji Zdarzenia, ponieważ reaguje na zdarzenia danych, zarówno w mediach strumieniowanych za pomocą serwera Flash Media Server, jak i podczas odtwarzania plików FLV. Więcej informacji zawiera opis klasy NetStream oraz właściwości NetStream.client
. Nie można używać metody addEventListener()
, ani żadnej innej metody EventDispatcher, aby wykrywać lub przetwarzać onMetaData
jako zdarzenia. Należy zdefiniować funkcję wywołania zwrotnego i dołączyć ją do jednego z następujących obiektów:
- Obiekt, do którego odwołuje się właściwość
client
instancji NetStream. - Instancja podklasy NetStream. NetStream jest klasą zapieczętowaną, co oznacza, że w środowisku wykonawczym do obiektu NetStream nie można dodawać właściwości ani metod. Można jednak utworzyć podklasę klasy NetStream i zdefiniować podprogram obsługi zdarzeń w takiej podklasie. Możliwe jest także utworzenie podklasy dynamicznej i dodanie funkcji obsługi zdarzeń do instancji podklasy.
Skojarzony detektor zdarzeń uruchamiany jest po wywołaniu metody NetStream.play()
, jednak przed przesunięciem głowicy odtwarzania.
Obiekt przekazany do funkcji obsługującej zdarzenia onXMPData()
posiada jedną właściwość data
, która jest ciągiem znaków. Ciąg znaków generowany jest z pola najwyższego poziomu identyfikatora UUID. (128-bitowym identyfikatorem UUID pola najwyższego poziomu jest BE7ACFCB-97A9-42E8-9C71-999491E3AFAC
). Pole najwyższego poziomu identyfikatora UUID zawiera dokładnie jeden dokument XML reprezentowany w postaci ciągu znaków kodowanego w standardzie UTF-8 i zakończonego wartością null.
Powiązane elementy interfejsu API
status | Zdarzenie |
flash.events.StatusEvent
właściwość StatusEvent.type =
flash.events.StatusEvent.STATUS
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 1.0, Flash Lite 4 |
Wywoływane, gdy aplikacja próbuje odtworzyć treść zaszyfrowaną przy użyciu mechanizmu DRM poprzez wywołanie metody NetStream.play()
. Właściwość statusu w kodzie będzie miała wartość "DRM.encryptedFLV"
.
Uwaga: to zdarzenie nie jest obsługiwane w przypadku wideo w formacie H.264 w środowisku AIR 3.0 dla systemu iOS.
Definiuje wartość właściwościtype
obiektu zdarzenia status
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
code | Opis stanu obiektu. |
currentTarget | Obiekt przetwarzający aktywnie obiekt Event za pomocą detektora zdarzeń. |
level | Kategoria komunikatu, np. "status" , "warning" lub "error" . |
target | Obiekt informujący o swoim stanie. |
Powiązane elementy interfejsu API
CONNECT_TO_FMS | Stała |
public static const CONNECT_TO_FMS:String = "connectToFMS"
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Statyczny obiekt używany jako parametr w konstruktorze instancji NetStream. Jest to wartość domyślna dla drugiego parametru konstruktora instancji NetStream; nie jest używana przez aplikację w przypadku stopniowego odtwarzania plików multimedialnych. Jeśli zostanie użyty, parametr spowoduje utworzenie przez konstruktor połączenia z instancją serwera Flash Media Server.
DIRECT_CONNECTIONS | Stała |
public static const DIRECT_CONNECTIONS:String = "directConnections"
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Tworzy połączenie pomiędzy równorzędnymi wydawcami. Ciąg znaków należy przekazać dla drugiego (opcjonalnego) parametru do konstruktora instancji NetStream. Za pomocą tego ciągu aplikacja może utworzyć połączenie NetStream, aby publikować do klientów dane audio i wideo.
W tym przykładzie kod tworzący obiekty Video oraz NetStream i wywołujący metody Video.attachNetStream()
i NetStream.play()
jest umieszczany w funkcji modułu obsługi. Moduł obsługi wywoływany jest jedynie w momencie próby połączenia z obiektem NetConnection zakończonej pomyślnie, czyli wtedy, gdy zdarzenie netStatus
zwróci obiekt info
z właściwością code
wskazującą na powodzenie operacji. Zalecane jest odczekanie do momentu pomyślnego nawiązania połączenia, zanim wywołana zostanie metoda 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
jest konfigurowana szerokość i wysokość wystąpienia obiektu 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, 12:06 PM Z