Korzystanie z punktów sygnalizacji

Punkt sygnalizacji to punkt, w którym odtwarzacz wideo wywołuje zdarzenie cuePoint podczas odtwarzania pliku wideo. Punkty sygnalizacji można dodawać do pliku FLV, gdy wymagane jest wykonanie operacji dla innego elementu na stronie WWW. Wymagane może być na przykład wyświetlenie tekstu lub grafiki, zsynchronizowanie z animacją Flash, wstrzymanie pliku FLV, wyszukanie innego punktu w wideo albo przełączenie na inny plik FLV. Punkty sygnalizacji umożliwiają uzyskanie kontroli w kodzie ActionScript w celu synchronizowania punktów w pliku FLV z innymi operacjami na stronie WWW.

Istnieją trzy typy punktów sygnalizacji: nawigacja, zdarzenia i ActionScript. Punkty sygnalizacji typu nawigacja i zdarzenie są również określane jako osadzone punkty sygnalizacji, ponieważ są osadzone w strumieniu pliku FLV w pakiecie metadanych pliku FLV.

Punkt sygnalizacji typu nawigacja umożliwia wyszukiwanie odpowiednich klatek w pliku FLV, ponieważ punkt tworzy klatkę kluczową w pliku FLV tak blisko określonego czasu, jak to możliwe. Klatka kluczowa jest segmentem danych, jaki występuje między klatkami obrazu w strumieniu pliku FLV. Podczas wyszukiwania punktu sygnalizacji typu nawigacja składnik wyszukuje klatkę kluczową i uruchamia zdarzenie cuePoint .

Punkt sygnalizacji typu zdarzenie umożliwia zsynchronizowanie punktu w czasie w pliku FLV z zewnętrznym zdarzeniem na stronie WWW. Do zdarzenia cuePoint dochodzi dokładnie w określonym czasie. Punkty sygnalizacyjne typu nawigacja i zdarzenie można osadzać w plikach FLV za pomocą kreatora Import wideo lub za pomocą programu Flash Video Encoder. Więcej informacji na temat kreatora Import wideo i programu Flash Video Encoder zawiera rozdział 16, „Wideo”, w podręczniku Korzystanie z programu Flash .

Punkt sygnalizacji ActionScript jest zewnętrznym punktem sygnalizacji, który można dodawać za pośrednictwem okna dialogowego punktów sygnalizacji wideo (w programie Flash) lub za pomocą metody FLVPlayback.addASCuePoint() . Składnik zapisuje i śledzi punkty sygnalizacji ActionScript poza plikiem FLV i w konsekwencji są one mniej dokładne niż osadzone punkty sygnalizacji. Punkty sygnalizacji ActionScript zachowują dokładność do jednej dziesiątej sekundy. W celu zwiększenia dokładności punktów sygnalizacji ActionScript należy zmniejszyć wartość właściwości playheadUpdateInterval , ponieważ składnik generuje zdarzenie cuePoint dla punktów sygnalizacji ActionScript, gdy dojdzie do aktualizacji stanu głowicy odtwarzania. Więcej informacji zawiera opis właściwości FLVPlayback.playheadUpdateInterval w Skorowidzu języka ActionScript 3.0 dla programu Flash Professional .

W języku ActionScript oraz w metadanych pliku FLV punkt sygnalizacji jest reprezentowany jako obiekt z następującymi właściwościami: name , time , type i parameters . Właściwość name jest ciągiem znaków, który zawiera nazwę przypisaną do punktu sygnalizacji. Właściwość time jest liczbą reprezentującą czas wystąpienia punkty sygnalizacji w godzinach, minutach, sekundach i milisekundach (GG:MM:SS.mmm). Właściwość type jest ciągiem znaków, którego wartość to "navigation" , "event" lub "actionscript" — w zależności od typu utworzonego punktu sygnalizacji. Właściwość parameters jest tablicą określonych par nazwa/wartość.

Gdy dojdzie do zdarzenia cuePoint , obiekt punktu sygnalizacji staje się dostępny w obiekcie zdarzenia za pośrednictwem właściwości info .

Korzystanie z okna dialogowego Punkty kontrolne Flash Video

Otwórz okno dialogowe Punkty kontrolne Flash Video, klikając dwukrotnie komórkę Wartość parametru cuePoints w inspektorze właściwości. Okno dialogowe przypomina okno przedstawione poniżej:

Powiększ obraz
Okno dialogowe Punkty sygnalizacji

W tym oknie dialogowym widoczne są osadzone punkty sygnalizacji i punkty sygnalizacji ActionScript. Z tego okna dialogowego można korzystać w celu dodawania i usuwania punktów sygnalizacji ActionScript, a także parametrów punktów sygnalizacji. W tym oknie można również włączać i wyłączać osadzone punkty sygnalizacji. Osadzonych punktów sygnalizacji nie można jednak dodawać, zmieniać ani usuwać.

Dodawanie punktu sygnalizacji ActionScript:

  1. Kliknij dwukrotnie komórkę wartości parametru cuePoints w Inspektorze składników, aby otworzyć okno dialogowe punktów sygnalizacji Flash.

  2. Kliknij znak plus (+) w lewym górnym rogu, powyżej listy punktów sygnalizacji, aby dodać domyślną pozycję punktu sygnalizacji ActionScript.

  3. Kliknij napis Nowy punkt sygnalizacji w kolumnie Nazwa, a następnie zmodyfikuj napis, aby nazwać punkt sygnalizacji.

  4. Kliknij wartość Czas 00:00:00:000, aby zmodyfikować ją i przypisać czas wystąpienia punktu sygnalizacji. Czas można określić w godzinach, minutach, sekundach i milisekundach (GG:MM:SS.mmm).

    Jeśli istnieje wiele punktów sygnalizacji, nowy punkt zostanie przesunięty w oknie dialogowym zgodnie z chronologiczną pozycją na liście.

  5. Aby dodać parametr dla wybranego punktu sygnalizacji, kliknij znak plus (+) powyżej sekcji Parametry, a następnie wprowadź wartości do kolumn Nazwa i Wartość. Powtórz tę czynność dla każdego parametru.

  6. Aby dodać więcej punktów sygnalizacji ActionScript, powtórz dla każdego z nich czynności od 2 do 5.

  7. Kliknij przycisk OK, aby zapisać zmiany.

Usuwanie punktu sygnalizacji ActionScript:

  1. Kliknij dwukrotnie komórkę wartości parametru cuePoints w Inspektorze składników, aby otworzyć okno dialogowe punktów sygnalizacji Flash.

  2. Wybierz punkt sygnalizacji, który chcesz usunąć.

  3. Kliknij znak minus (-) w lewym górnym rogu, powyżej listy punktów sygnalizacji, aby usunąć punkt.

  4. Powtórz kroki 2 i 3 dla każdego punktu sygnalizacji, który chcesz usunąć.

  5. Kliknij przycisk OK, aby zapisać zmiany.

Aby włączyć lub wyłączyć punkt sygnalizacji w osadzonym pliku FLV:

  1. Kliknij dwukrotnie komórkę wartości parametru cuePoints w Inspektorze składników, aby otworzyć okno dialogowe punktów sygnalizacji Flash.

  2. Wybierz punkt sygnalizacji, który chcesz włączyć lub wyłączyć.

  3. Kliknij wartość w kolumnie Typ, aby wywołać menu podręczne, lub kliknij strzałkę w dół.

  4. Kliknij nazwę typu punktu sygnalizacji (np. Zdarzenie lub Nawigacja), aby go włączyć. Kliknij przycisk Wyłącz, aby wyłączyć

  5. Kliknij przycisk OK, aby zapisać zmiany.

Korzystanie z punktów sygnalizacji z ActionScript

Język ActionScript może służyć do dodawania punktów sygnalizacji ActionScript; nasłuchiwania zdarzeń cuePoint ; wyszukiwania punktów sygnalizacji dowolnego lub określonego typu; wyszukiwania punktów sygnalizacji typu nawigacja; włączania i wyłączania punktów sygnalizacji; sprawdzania, czy punkt sygnalizacji jest włączony oraz do usuwania punktów sygnalizacji.

Przykłady w tej sekcji przedstawiają używanie pliku FLV o nazwie cuepoints.flv, który zawiera następujące trzy punkty sygnalizacji:

Nazwa

Godzina

Typ

point1

00:00:00.418

Nawigacja

point2

00:00:07.748

Nawigacja

point3

00:00:16.020

Nawigacja

Dodawanie punktów sygnalizacji ActionScript

Punkty sygnalizacji ActionScript można dodawać do pliku FLV za pomocą metody addASCuePoint() . W poniższym przykładzie przedstawiono dodawanie dwóch punktów sygnalizacji ActionScript do pliku FLV gotowego do odtworzenia. Poniższy przykład dodaje obiekt punktu sygnalizacji, który określa godzinę, nazwę i typ punktu sygnalizacji w jego właściwościach. Drugie wywołanie określa czas i nazwę za pomocą parametrów time i name metody.

// Requires an FLVPlayback instance called my_FLVPlybk on Stage 
import fl.video.*; 
import fl.video.MetadataEvent; 
my_FLVPlybk.source = "http://www.helpexamples.com/flash/video/cuepoints.flv" 
var cuePt:Object = new Object(); //create cue point object 
cuePt.time = 2.02; 
cuePt.name = "ASpt1"; 
cuePt.type = "actionscript"; 
my_FLVPlybk.addASCuePoint(cuePt);//add AS cue point 
// add 2nd AS cue point using time and name parameters 
my_FLVPlybk.addASCuePoint(5, "ASpt2"); 

Więcej informacji zawiera opis metody FLVPlayback.addASCuePoint() w Skorowidzu języka ActionScript 3.0 dla programu Flash Professional .

Nasłuchiwanie zdarzeń cuePoint

Zdarzenie cuePoint umożliwia kontrolowanie (za pośrednictwem kodu ActionScript) czasu wystąpienia zdarzenia cuePoint . Gdy w poniższym przykładzie wystąpią punkty sygnalizacji, detektor zdarzeń cuePoint wywoła funkcję obsługi zdarzeń, która wyświetli wartość właściwości playheadTime , a także nazwę i typ punktu sygnalizacji. W celu wyświetlenia rezultatów należy użyć tego przykładu w połączeniu z przykładem z poprzedniej sekcji — Dodawanie punktów sygnalizacji ActionScript.

my_FLVPlybk.addEventListener(MetadataEvent.CUE_POINT, cp_listener); 
function cp_listener(eventObject:MetadataEvent):void { 
        trace("Elapsed time in seconds: " + my_FLVPlybk.playheadTime); 
        trace("Cue point name is: " + eventObject.info.name); 
        trace("Cue point type is: " + eventObject.info.type); 
}

Więcej informacji na temat zdarzenia cuePoint zawiera zdarzenie FLVPlayback.cuePoint w Skorowidzu języka ActionScript 3.0 dla programu Flash Professional .

Wyszukiwanie punktów sygnalizacji

Za pomocą języka ActionScript można znaleźć punkt sygnalizacji dowolnego typu, znaleźć punkt sygnalizacji najbliżej punktu czasowego lub znaleźć następny punkt sygnalizacji o określonej nazwie.

Moduł obsługi zdarzeń ready_listener() w poniższym przykładzie wywołuje metodę findCuePoint() w celu znalezienia punktu sygnalizacji ASpt1 , a następnie wywołuje metodę findNearestCuePoint() w celu znalezienia punktu sygnalizacji typu Nawigacja, który znajduje się najbliżej czasu wystąpienia punktu sygnalizacji ASpt1 :

import fl.video.FLVPlayback; 
import fl.video.CuePointType; 
import fl.video.VideoEvent; 
my_FLVPlybk.source = "http://www.helpexamples.com/flash/video/cuepoints.flv" 
var rtn_obj:Object; //create cue point object 
my_FLVPlybk.addASCuePoint(2.02, "ASpt1");//add AS cue point 
function ready_listener(eventObject:VideoEvent):void { 
    rtn_obj = my_FLVPlybk.findCuePoint("ASpt1", CuePointType.ACTIONSCRIPT); 
    traceit(rtn_obj); 
    rtn_obj = my_FLVPlybk.findNearestCuePoint(rtn_obj.time, CuePointType.NAVIGATION); 
    traceit(rtn_obj); 
} 
my_FLVPlybk.addEventListener(VideoEvent.READY, ready_listener); 
function traceit(cuePoint:Object):void { 
    trace("Cue point name is: " + cuePoint.name); 
    trace("Cue point time is: " + cuePoint.time); 
    trace("Cue point type is: " + cuePoint.type); 
}

W poniższym przykładzie moduł obsługi zdarzeń ready_listener() wyszukuje punkt sygnalizacji ASpt i wywołuje metodę findNextCuePointWithName() w celu znalezienia następnego punktu sygnalizacji o takiej samej nazwie:

import fl.video.*; 
my_FLVPlybk.source = "http://www.helpexamples.com/flash/video/cuepoints.flv" 
var rtn_obj:Object; //create cue point object 
my_FLVPlybk.addASCuePoint(2.02, "ASpt");//add AS cue point 
my_FLVPlybk.addASCuePoint(3.4, "ASpt");//add 2nd Aspt 
my_FLVPlybk.addEventListener(VideoEvent.READY, ready_listener); 
function ready_listener(eventObject:VideoEvent):void { 
    rtn_obj = my_FLVPlybk.findCuePoint("ASpt", CuePointType.ACTIONSCRIPT); 
    traceit(rtn_obj); 
    rtn_obj = my_FLVPlybk.findNextCuePointWithName(rtn_obj); 
    traceit(rtn_obj); 
} 
function traceit(cuePoint:Object):void { 
    trace("Cue point name is: " + cuePoint.name); 
    trace("Cue point time is: " + cuePoint.time); 
    trace("Cue point type is: " + cuePoint.type); 
}

Więcej informacji na temat wyszukiwania punktów sygnalizacji zawiera opis metod FLVPlayback.findCuePoint(), FLVPlayback.findNearestCuePoint() i FLVPlayback.findNextCuePointWithName() w Skorowidzu języka ActionScript 3.0 dla programu Flash Professional .

Wyszukiwanie punktów sygnalizacji typu nawigacja

Istnieje możliwość wyszukania punktu sygnalizacji typu nawigacja, wyszukiwania kolejnego punktu sygnalizacji od określonego czasu, a także wyszukiwania poprzedniego punktu sygnalizacji typu nawigacja (od określonego czasu). Poniższy przykład prezentuje odtwarzanie pliku FLV cuepoints.flv, a ponadto wyszukuje punkt sygnalizacji po upływie 7.748 sekundy od wystąpienia zdarzenia ready . Gdy wystąpi zdarzenie cuePoint w przykładzie wywoływana jest metoda seekToPrevNavCuePoint() w celu znalezienia pierwszego punktu sygnalizacji. Gdy wystąpi to zdarzenie cuePoint , w przykładzie wywoływana jest metoda seekToNextNavCuePoint() w celu znalezienia ostatniego punktu sygnalizacji poprzez dodanie 10 sekund do wartości eventObject.info.time , która jest czasem bieżącego punktu sygnalizacji.

import fl.video.*; 
 
my_FLVPlybk.addEventListener(VideoEvent.READY, ready_listener); 
function ready_listener(eventObject:Object):void { 
    my_FLVPlybk.seekToNavCuePoint("point2"); 
} 
my_FLVPlybk.addEventListener(MetadataEvent.CUE_POINT, cp_listener); 
function cp_listener(eventObject:MetadataEvent):void { 
    trace(eventObject.info.time); 
    if(eventObject.info.time == 7.748) 
        my_FLVPlybk.seekToPrevNavCuePoint(eventObject.info.time - .005); 
    else 
        my_FLVPlybk.seekToNextNavCuePoint(eventObject.info.time + 10); 
} 
my_FLVPlybk.source = "http://helpexamples.com/flash/video/cuepoints.flv";

Więcej informacji zawiera opis metod FLVPlayback.seekToNavCuePoint(), FLVPlayback.seekToNextNavCuePoint() i FLVPlayback.seekToPrevNavCuePoint() w Skorowidzu języka ActionScript 3.0 dla programu Flash Professional .

Włączanie i wyłączanie punktów sygnalizacji w osadzonym pliku FLV

Do włączania i wyłączania punktów sygnalizacji w osadzonym pliku FLV służy metoda setFLVCuePointEnabled() . Wyłączone punkty sygnalizacji nie wywołują zdarzeń cuePoint i nie działają z metodami seekToCuePoint() , seekToNextNavCuePoint() oraz seekToPrevNavCuePoint() . Wyłączone punkty sygnalizacji można wyszukiwać za pomocą metod findCuePoint() , findNearestCuePoint() i findNextCuePointWithName() .

Aby sprawdzić, czy punkt sygnalizacji w osadzonym pliku FLV jest włączony, należy użyć metody isFLVCuePointEnabled() . W poniższym przykładzie przedstawiono wyłączanie punktów sygnalizacji point2 i point3 , gdy plik wideo jest gotowy do odtwarzania. Po wystąpieniu pierwszego zdarzenia cuePoint moduł obsługi zdarzeń sprawdza, czy punkt sygnalizacji point3 jest wyłączony. Jeśli jest wyłączony, włącza go.

import fl.video.*; 
my_FLVPlybk.source = "http://www.helpexamples.com/flash/video/cuepoints.flv"; 
my_FLVPlybk.addEventListener(VideoEvent.READY, ready_listener); 
function ready_listener(eventObject:VideoEvent):void { 
    my_FLVPlybk.setFLVCuePointEnabled(false, "point2"); 
    my_FLVPlybk.setFLVCuePointEnabled(false, "point3"); 
} 
my_FLVPlybk.addEventListener(MetadataEvent.CUE_POINT, cp_listener); 
function cp_listener(eventObject:MetadataEvent):void { 
        trace("Cue point time is: " + eventObject.info.time); 
        trace("Cue point name is: " + eventObject.info.name); 
        trace("Cue point type is: " + eventObject.info.type); 
        if (my_FLVPlybk.isFLVCuePointEnabled("point2") == false) { 
            my_FLVPlybk.setFLVCuePointEnabled(true, "point2"); 
        } 
}

Więcej informacji zawiera opis metod FLVPlayback.isFLVCuePointEnabled() i FLVPlayback.setFLVCuePointEnabled() w Skorowidzu języka ActionScript 3.0 dla programu Flash Professional .

Usuwanie punktu sygnalizacji ActionScript

Punkt sygnalizacji ActionScript można usunąć za pomocą metody removeASCuePoint() . W poniższym przykładzie przedstawiono usuwanie punktu sygnalizacji ASpt2 , gdy wystąpi punkt sygnalizacji ASpt1 :

import fl.video.*; 
my_FLVPlybk.source = "http://www.helpexamples.com/flash/video/cuepoints.flv" 
my_FLVPlybk.addASCuePoint(2.02, "ASpt1");//add AS cue point 
my_FLVPlybk.addASCuePoint(3.4, "ASpt2");//add 2nd Aspt 
my_FLVPlybk.addEventListener(MetadataEvent.CUE_POINT, cp_listener); 
function cp_listener(eventObject:MetadataEvent):void { 
        trace("Cue point name is: " + eventObject.info.name); 
        if (eventObject.info.name == "ASpt1") { 
            my_FLVPlybk.removeASCuePoint("ASpt2");     
            trace("Removed cue point ASpt2"); 
        } 
}

Więcej informacji zawiera opis metody FLVPlayback.removeASCuePoint() w Skorowidzu języka ActionScript 3.0 dla programu Flash Professional .