Uso de puntos de referencia

Un punto de referencia es un punto en el que el reproductor de vídeo distribuye un evento cuePoint mientras se reproduce un archivo de vídeo. Se pueden añadir puntos de referencia a un archivo FLV cuando se desee interactuar con otro elemento de la página Web. Quizá se desee mostrar texto o un gráfico, por ejemplo, o sincronizar con una animación de Flash, o pausar la reproducción del archivo FLV, buscar otro punto distinto del vídeo o cambiar a otro archivo FLV. Los puntos de referencia permiten recibir el control en el código ActionScript para sincronizar dichos puntos del archivo FLV con otras acciones de la página Web.

Hay tres tipos de puntos de referencia: navegación, eventos y ActionScript. Los puntos de referencia de navegación y eventos se denominan también puntos de referencia incorporados porque se incorporan en el flujo de archivos FLV y en el paquete de metadatos del archivo FLV.

Un punto de referencia de navegación permite buscar un determinado fotograma en el archivo FLV, ya que crea un fotograma clave en el archivo FLV, lo más cerca posible al tiempo especificado. Un fotograma clave es un segmento de datos que se produce entre los fotogramas de imagen del flujo del archivo FLV. Cuando se busca un punto de referencia de navegación, el componente busca el fotograma clave e inicia el evento cuePoint .

Un punto de referencia de evento permite sincronizar un instante específico del archivo FLV con un evento externo de la página Web. El evento cuePoint se produce precisamente en el instante especificado. Se pueden incorporar puntos de referencia de navegación y de evento en un archivo FLV mediante el asistente de importación de vídeo o Flash Video Encoder. Para más información sobre el asistente de importación de vídeo y Flash Video Encoder, consulte el Capítulo 16, "Trabajo con vídeo", en Utilización de Flash .

Un punto de referencia de ActionScript es un punto de referencia externo que puede añadirse a través del cuadro de diálogo Puntos de referencia de Flash Video del componente o a través del método FLVPlayback.addASCuePoint() . El componente almacena y rastrea los puntos de referencia de ActionScript independientemente del archivo FLV, por lo que son menos precisos que los puntos de referencia incorporados. La precisión de los puntos de referencia de ActionScript es de una décima de segundo. Para aumentar esta precisión, es necesario reducir el valor de la propiedad playheadUpdateInterval , ya que el componente genera el evento cuePoint para los puntos de referencia de ActionScript cuando se actualiza la cabeza lectora. Para obtener más información, consulte la propiedad FLVPlayback.playheadUpdateInterval en la Referencia de ActionScript 3.0 para Flash Professional .

En ActionScript y en los metadatos del archivo FLV, un punto de referencia se representa como un objeto con las siguientes propiedades: name , time , type y parameters La propiedad name es una cadena que contiene el nombre asignado del punto de referencia. La propiedad time es un número que representa el tiempo en horas, minutos, segundos y milisegundos (HH:MM:SS.mmm) cuando se produce el punto de referencia. La propiedad type es una cadena cuyo valor es "navigation" , "event" o "actionscript" , en función del tipo de punto de referencia que se haya creado. La propiedad parameters es un conjunto de los pares nombre-valor especificados.

Cuando se produce un evento cuePoint , el punto de referencia está disponible en el objeto de evento a través de la propiedad info .

Uso del cuadro de diálogo Puntos de referencia de Flash Video

Para abrir el cuadro de diálogo Puntos de referencia de Flash Video, haga doble clic en la celda Valor del parámetro cuePoints del inspector de componentes. El cuadro de diálogo tiene el siguiente aspecto:

Ver gráfico a tamaño completo
Cuadro de diálogo Cue Points (Puntos de referencia)

El cuadro de diálogo muestra los puntos de referencia de ActionScript y los incorporados. Se puede utilizar este cuadro de diálogo para añadir y eliminar puntos de referencia de ActionScript y parámetros de puntos de referencia. También se pueden activar o desactivar los puntos de referencia incorporados. Sin embargo, no puede añadir, cambiar ni eliminar cuepoints incorporados.

Añadir un punto de referencia de ActionScript:

  1. Haga doble clic en la celda Valor del parámetro cuePoints en el inspector de componentes para abrir el cuadro de diálogo Puntos de referencia de Flash Video.

  2. Haga clic en el signo más (+) situado en la esquina superior izquierda, por encima de la lista de puntos de referencia, para añadir una entrada de punto de referencia de ActionScript predeterminada.

  3. Haga clic en el texto Nuevo cuepoint de la columna Nombre y edite el texto para asignar un nombre al cuepoint.

  4. Haga clic en el valor de tiempo de 00:00:00:000 para editarlo y asigne un tiempo para el punto de referencia. Se puede especificar el tiempo en horas, minutos, segundos y milisegundos (HH:MM:SS.mmm).

    Si hay varios puntos de referencia, el cuadro de diálogo mueve el nuevo punto de referencia a su posición cronológica en la lista.

  5. Para añadir un parámetro para el punto de referencia seleccionado, haga clic en el signo más (+) situado encima de la sección Parámetros e introduzca valores en las columnas Nombre y Valor. Repita este paso para cada parámetro.

  6. Para añadir más puntos de referencia de ActionScript, repita los pasos 2 a 5 para cada uno.

  7. Haga clic en Aceptar para guardar los cambios.

Eliminar un punto de referencia de ActionScript:

  1. Haga doble clic en la celda Valor del parámetro cuePoints en el inspector de componentes para abrir el cuadro de diálogo Puntos de referencia de Flash Video.

  2. Seleccione los puntos de referencia que desea eliminar.

  3. Haga clic en el signo menos (-) situado en la esquina superior izquierda, por encima de la lista de puntos de referencia, para eliminarlo.

  4. Repita los pasos 2 y 3 para cada punto de referencia que desee eliminar.

  5. Haga clic en Aceptar para guardar los cambios.

Para activar o desactivar un punto de referencia de archivo FLV incorporado:

  1. Haga doble clic en la celda Valor del parámetro cuePoints en el inspector de componentes para abrir el cuadro de diálogo Puntos de referencia de Flash Video.

  2. Seleccione el punto de referencia que desea activar o desactivar.

  3. Haga clic en el valor de la columna Tipo para activar el menú emergente o haga clic en la flecha abajo.

  4. Haga clic en el nombre del tipo de punto de referencia (por ejemplo, Event o Navigation) para activarlo. Haga clic en Disabled para desactivarlo.

  5. Haga clic en Aceptar para guardar los cambios.

Uso de los puntos de referencia con ActionScript

Se puede utilizar ActionScript para añadir puntos de referencia de ActionScript, detectar eventos cuePoint , buscar puntos de referencia de cualquier tipo o de un tipo especificado, buscar un punto de referencia de navegación, activar o desactivar un punto de referencia, comprobar si un punto de referencia está activado y quitar un punto de referencia.

En los ejemplos de esta sección, se utiliza un archivo FLV denominado cuepoints.flv, que contiene los tres puntos de referencia siguientes:

Nombre

Tiempo

Tipo

point1

00:00:00.418

Navigation

point2

00:00:07.748

Navigation

point3

00:00:16.020

Navigation

Añadir puntos de referencia de ActionScript

Es posible añadir puntos de referencia de ActionScript a un archivo FLV mediante el método addASCuePoint() . En el siguiente ejemplo, se añaden dos puntos de referencia de ActionScript al archivo FLV cuando está listo para se. Se añade el primer punto de referencia mediante un objeto de punto de referencia, que especifica el tiempo, el nombre y el tipo del punto de referencia en sus propiedades. En la segunda llamada, se especifica el tiempo y el nombre mediante los parámetros time y name del método.

// 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"); 

Para obtener más información, consulte el método FLVPlayback.addASCuePoint() en la Referencia de ActionScript 3.0 para Flash Professional .

Detección de eventos cuePoint

El evento cuePoint permite recibir el control en el código ActionScript cuando se produce un evento cuePoint . Cuando se producen puntos de referencia en el siguiente ejemplo, el detector de cuePoint llama a una función de controlador de eventos que muestra el valor de la propiedad playheadTime y el nombre y el tipo del punto de referencia. Utilice este ejemplo junto con el ejemplo en la sección anterior, Añadir puntos de referencia de ActionScript, para ver los resultados.

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); 
}

Para obtener más información sobre el evento cuePoint , consulte el evento FLVPlayback.cuePoint en la Referencia de ActionScript 3.0 para Flash Professional .

Localización de puntos de referencia

El código ActionScript permite encontrar un punto de referencia de cualquier tipo, el punto de referencia más cercano en el tiempo o el siguiente punto de referencia con un nombre específico.

El controlador de eventos ready_listener() del siguiente ejemplo llama al método findCuePoint() para buscar el punto de referencia ASpt1 y, a continuación, llama al método findNearestCuePoint() para buscar el punto de referencia de navegación más cercano en el tiempo al punto de referencia 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); 
}

En el siguiente ejemplo, el controlador de eventos ready_listener() busca el punto de referencia ASpt y llama al método findNextCuePointWithName() para buscar el siguiente punto de referencia con el mismo nombre:

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); 
}

Para obtener más información sobre cómo encontrar puntos de referencia, consulte los métodos FLVPlayback.findCuePoint(), FLVPlayback.findNearestCuePoint() y FLVPlayback.findNextCuePointWithName() en la Referencia de ActionScript 3.0 para Flash Professional .

Búsqueda de puntos de referencia de navegación

Se puede buscar un punto de referencia de navegación y buscar el anterior y siguiente punto de referencia de navegación a partir de un tiempo especificado. En el siguiente ejemplo se reproduce el archivo FLV cuepoints.flv y se busca el punto de referencia correspondiente a 7.748 cuando se produce el evento ready. Cuando se produce el evento cuePoint , el ejemplo llama al método seekToPrevNavCuePoint() para buscar el primer punto de referencia. Cuando se produce dicho evento cuePoint , el ejemplo llama al método seekToNextNavCuePoint() para buscar el último punto de referencia añadiendo 10 segundos a eventObject.info.time , que es el tiempo del punto de referencia actual.

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";

Para obtener más información, consulte los métodos FLVPlayback.seekToNavCuePoint(), FLVPlayback.seekToNextNavCuePoint() y FLVPlayback.seekToPrevNavCuePoint() de la Referencia de ActionScript 3.0 para Flash Professional .

Activación y desactivación de puntos de referencia de archivo FLV incorporados

Es posible activar y desactivar puntos de referencia de archivo FLV incorporados, mediante el método setFLVCuePointEnabled() . Los puntos de referencia desactivados no activan eventos cuePoint ni funcionan con los métodos seekToCuePoint() , seekToNextNavCuePoint() o seekToPrevNavCuePoint() . Sin embargo, puede buscar los puntos de referencia desactivados mediante los métodos findCuePoint() , findNearestCuePoint() y findNextCuePointWithName() .

Se puede probar si un punto de referencia de archivo FLV incorporado está activado, mediante el método isFLVCuePointEnabled() . En el siguiente ejemplo, se desactivan los puntos de referencia incorporados point2 y point3 cuando el vídeo está listo para se. Sin embargo, cuando se produce el primer evento cuePoint , el controlador de eventos prueba si el punto de referencia point3 está desactivado y, si lo está, lo activa.

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"); 
        } 
}

Para obtener más información, consulte los métodos FLVPlayback.isFLVCuePointEnabled() y FLVPlayback.setFLVCuePointEnabled() de la Referencia de ActionScript 3.0 para Flash Professional .

Eliminación de un punto de referencia de ActionScript

Se puede quitar un punto de referencia de ActionScript mediante el método removeASCuePoint() . En el siguiente ejemplo, se quita el punto de referencia ASpt2 cuando se produce el punto de referencia 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"); 
        } 
}

Para obtener más información, consulte FLVPlayback.removeASCuePoint() en la Referencia de ActionScript 3.0 para Flash Professional .