Uso de pontos de sinalização

Ponto de sinalização é um ponto em que o player de vídeo despacha um evento cuePoint durante a reprodução de um arquivo de vídeo. Você pode adicionar pontos de sinalização a um arquivo FLV quando desejar que uma ação ocorra em outro elemento na página da Web. Talvez você deseje exibir texto ou um gráfico, por exemplo, ou sincronizar com uma animação Flash ou, ainda, afetar a reprodução do arquivo FLV pausando-o, buscando um ponto diferente no vídeo ou alterando para um arquivo FLV diferente. Os pontos de sinalização permitem receber controle no seu código do ActionScript para sincronizar pontos no arquivo FLV com outras ações na página da Web.

Existem três tipos de pontos de sinalização: navegação, evento e ActionScript. Os pontos de sinalização navegação e evento também são conhecidos como pontos de sinalização incorporados porque são incorporados no fluxo de arquivo FLV e no pacote de metadados do arquivo FLV.

O ponto de sinalização de navegação permite buscar um quadro específico no arquivo FLV, pois ele cria um quadro-chave no arquivo FLV o mais próximo possível do tempo especificado. O quadro-chave é um segmento de dados que ocorre entre os quadros de imagem no fluxo de arquivo FLV. Ao buscar um ponto de sinalização de navegação, o componente busca o quadro-chave e inicia o evento cuePoint .

O ponto de sinalização de evento permite sincronizar um ponto no tempo no arquivo FLV com um evento externo na página da Web. O evento cuePoint ocorre precisamente no tempo especificado. Você pode incorporar pontos de sinalização de navegação e de evento em um arquivo FLV usando o assistente de importação de vídeo ou o Flash Video Encoder. Para obter mais informações sobre o assistente de importação de vídeo e o Flash Video Encoder, consulte o Capitulo 16, "Trabalho com vídeo", em Uso do Flash .

O ponto de sinalização do ActionScript é um ponto de sinalização externo que pode ser adicionado por meio da caixa de diálogo Pontos de sinalização Flash Video do componente ou por meio do método FLVPlayback.addASCuePoint() . O componente armazena e rastreia os pontos de sinalização do ActionScript, com exceção do arquivo FLV, e, conseqüentemente, eles são menos precisos do que os pontos de sinalização incorporados. Os pontos de sinalização do ActionScript têm precisão de um décimo de segundo. Você pode aumentar a precisão dos pontos de sinalização do ActionScript reduzindo o valor da propriedade playheadUpdateInterval , pois o componente gera o evento cuePoint para pontos de sinalização do ActionScript quando o indicador de reprodução é atualizado. Para obter mais informações, consulte a propriedade Propriedade FLVPlayback.playheadUpdateInterval na Referência do ActionScript 3.0 para Adobe Flash Platform .

No ActionScript e nos metadados do arquivo FLV, o ponto de sinalização é representado como um objeto com as seguintes propriedades: name , time , type e parameters . A propriedade name é uma string que contém o nome atribuído do ponto de sinalização. A propriedade time é um número representando o tempo em horas, minutos, segundos e milésimos de segundo (HH:MM:SS.mmm) quando ocorre o ponto de sinalização. A propriedade type é uma string cujo valor é "navigation" , "event" ou "actionscript" , dependendo do tipo de ponto de sinalização criado. A propriedade parameters é uma matriz de nome e pares de valores especificados.

Quando o evento cuePoint ocorre, o objeto de ponto de sinalização fica disponível no objeto de evento por meio da propriedade info .

Use a caixa de diálogo Pontos de sinalização Flash Video

Abra a caixa de diálogo Pontos de sinalização Flash Video, clicando duas vezes na célula Valor, do parâmetro cuePoints , no Inspetor de componentes. A caixa de diálogo se parece com a figura a seguir:

Visualizar gráfico inteiro
Caixa de diálogo Pontos de sinalização

A caixa de diálogo exibe pontos de sinalização incorporados e do ActionScript. Você pode usar essa caixa de diálogo para adicionar e excluir pontos de sinalização do ActionScript, bem como parâmetros de pontos de sinalização. Você também pode ativar ou desativar pontos de sinalização incorporados. No entanto, você não pode adicionar, alterar nem excluir pontos de sinalização incorporados.

Adicionar ponto de sinalização do ActionScript:

  1. Clique duas vezes na célula Valor, do parâmetro cuePoints , no Inspetor de componentes, para abrir a caixa de diálogo Pontos de sinalização Flash.

  2. Clique no sinal de adição (+) no canto superior esquerdo, acima da lista de pontos de sinalização, para adicionar uma entrada de ponto de sinalização do ActionScript.

  3. Clique no texto Novo ponto de sinalização, na coluna Nome, e edite o texto para nomear o ponto de sinalização.

  4. Clique no valor Tempo de 00:00:00:000 para editá-lo e atribuir um tempo para que o ponto de sinalização ocorra. Você pode especificar o tempo em horas, minutos, segundos e milésimos de segundos (HH:MM:SS.mmm).

    Se houver vários pontos de sinalização. a caixa de diálogo move o novo ponto de sinalização para a respectiva posição cronológica na lista.

  5. Para adicionar um parâmetro ao ponto de sinalização selecionado, clique no sinal de adição (+) acima da seção Parâmetros e insira valores nas colunas Nome e Valor. Repita essa etapa para cada parâmetro.

  6. Para adicionar mais pontos de sinalização do ActionScript, repita as etapas de 2 a 5 para cada um.

  7. Clique em OK para salvar as alterações.

Excluir um ponto de sinalização do ActionScript :

  1. Clique duas vezes na célula Valor, do parâmetro cuePoints , no Inspetor de componentes, para abrir a caixa de diálogo Pontos de sinalização Flash.

  2. Selecione o ponto de sinalização que deseja excluir.

  3. Clique no sinal de subtração (-) do canto superior esquerdo, acima da lista de pontos de sinalização, para excluí-lo.

  4. Repita as etapas 2 e 3 para cada ponto de sinalização que desejar excluir.

  5. Clique em OK para salvar as alterações.

Para ativar ou desativar o ponto de sinalização do arquivo FLV incorporado:

  1. Clique duas vezes na célula Valor, do parâmetro cuePoints , no Inspetor de componentes, para abrir a caixa de diálogo Pontos de sinalização Flash.

  2. Selecione o ponto de sinalização que deseja ativar ou desativar.

  3. Clique no, valor na coluna Tipo, para acionar o menu pop-up, ou clique na seta para baixo.

  4. Clique no nome do tipo de ponto de sinalização (por exemplo, Evento ou Navegação) para ativá-lo. Clique em Desativado para desativá-lo.

  5. Clique em OK para salvar as alterações.

Uso de pontos de sinalização com o ActionScript

Você pode usar o ActionScript para adicionar pontos de sinalização do ActionScript, monitorar o evento cuePoint , localizar pontos de sinalização de qualquer tipo ou de um tipo específico, buscar um ponto de sinalização de navegação, ativar ou desativar um ponto de sinalização, verificar se um ponto de sinalização está ativado e remover um ponto de sinalização.

Os exemplos nesta seção usam um arquivo FLV chamado cuepoints.flv, que contém os três seguintes pontos de sinalização:

Nome

Tempo

Tipo

ponto 1

00:00:00.418

Navegação

ponto 2

00:00:07.748

Navegação

ponto 3

00:00:16.020

Navegação

Adição de pontos de sinalização do ActionScript

Você pode adicionar pontos de sinalização do ActionScript a um arquivo FLV usando o método addASCuePoint() . O exemplo a seguir adiciona dois pontos de sinalização do ActionScript ao arquivo FLV quando ele está pronto para reprodução. Ele adiciona o primeiro ponto de sinalização usando um objeto de ponto de sinalização que especifica tempo, nome e tipo do ponto de sinalização nas respectivas propriedades. A segunda chamada especifica o tempo e o nome usando os parâmetros time e name do 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 obter mais informações, consulte a propriedade Método FLVPlayback.addASCuePoint() na Referência do ActionScript 3.0 para Adobe Flash Platform .

Monitoração de eventos cuePoint

O evento cuePoint permite receber controle no código do ActionScript quando ocorre um evento cuePoint . Quando ocorrem pontos de sinalização no exemplo seguinte, o ouvinte de cuePoint chama uma função do manipulador de eventos que exibe o valor da propriedade playheadTime e o nome e o tipo do ponto de sinalização. Use este exemplo juntamente com o exemplo da seção anterior, Adicionar pontos de sinalização do ActionScript, para ver os 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 obter mais informações sobre o evento cuePoint , consulte o evento Evento FLVPlayback.cuePoint na Referência do ActionScript 3.0 para Adobe Flash Platform .

Localizar pontos de sinalização

Com o uso do ActionScript, você pode localizar um ponto de sinalização de qualquer tipo, localizar o ponto de localização mais próximo de um tempo ou localizar o próximo ponto de sinalização com um nome específico.

O manipulador de eventos ready_listener() no exemplo a seguir chama o método findCuePoint() para localizar o ponto de sinalização ASpt1 e, em seguida, chama o método findNearestCuePoint() para localizar o ponto de sinalização de navegação mais próximo do tempo do ponto de sinalização 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); 
}

No exemplo a seguir, o manipulador de eventos ready_listener() localiza o ponto de sinalização ASpt e chama o método findNextCuePointWithName() para localizar o próximo ponto de sinalização com o mesmo nome:

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 obter mais informações sobre como localizar pontos de sinalização, consulte os métodos Métodos FLVPlayback.findCuePoint(), FLVPlayback.findNearestCuePoint() e FLVPlayback.findNextCuePointWithName() na Referência do ActionScript 3.0 para Adobe Flash Platform .

Busca de pontos de sinalização de navegação

Você pode buscar um ponto de sinalização de navegação, buscar o próximo ponto de sinalização de navegação de um tempo especificado e buscar o ponto de sinalização de navegação anterior em um tempo especificado. O exemplo a seguir reproduz o arquivo FLV cuepoints.flv e busca o ponto de sinalização em 7.748 quando o ocorre o evento ready . Quando ocorre o evento cuePoint , o exemplo chama o método seekToPrevNavCuePoint() para buscar o primeiro ponto de sinalização. Quando esse evento cuePoint ocorre, o exemplo chama o método seekToNextNavCuePoint() para buscar o último ponto de sinalização, adicionando 10 segundos a eventObject.info.time , que é o tempo do ponto de sinalização atual.

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 obter mais informações, consulte a propriedade Métodos FLVPlayback.seekToNavCuePoint(), FLVPlayback.seekToNextNavCuePoint() e FLVPlayback.seekToPrevNavCuePoint() na Referência do ActionScript 3.0 para Adobe Flash Platform .

Ativação e desativação de pontos de sinalização do arquivo FLV incorporado

Você pode ativar ou desativar pontos de sinalização do arquivo FLV incorporado usando o método addASCuePoint() . Os pontos de sinalização desativados não acionam eventos cuePoint e não funcionam com métodos seekToCuePoint() , seekToNextNavCuePoint() ou seekToPrevNavCuePoint() . No entanto, você pode encontrar pontos de sinalização desativados, com os métodos findCuePoint() , findNearestCuePoint() e findNextCuePointWithName() .

Você pode testar se um ponto de sinalização do arquivo FLV incorporado está ativado, usando o método isFLVCuePointEnabled() . O exemplo a seguir desativa os pontos de sinalização incorporados ponto 2 e ponto 3 quando o vídeo estiver pronto para reprodução. No entanto, quando o primeiro evento cuePoint ocorre, o manipulador de eventos testa para observar se o ponto de sinalização ponto 3 está desativado e, caso esteja, ativa-o.

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 obter mais informações, consulte a propriedade Métodos FLVPlayback.isFLVCuePointEnabled() e FLVPlayback.setFLVCuePointEnabled() na Referência do ActionScript 3.0 para Adobe Flash Platform .

Remover um ponto de sinalização do ActionScript

Você pode remover um ponto de sinalização do ActionScript usando o método removeASCuePoint() . O exemplo a seguir remove o ponto de sinalização ASpt2 quando ocorre o ponto de sinalização 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 obter mais informações, consulte FLVPlayback.removeASCuePoint() na Referência do ActionScript 3.0 para Adobe Flash Platform .