Pacote | flash.net |
Classe | public class NetStream |
Herança | NetStream EventDispatcher Object |
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Use a classe NetStream para fazer o seguinte:
- Chame
NetStream.play()
para reproduzir um arquivo de mídia a partir de um disco local, de um servidor web ou do Flash Media Server. - Chame
NetStream.publish()
para publicar vídeo, áudio e fluxo de dados para o Flash Media Server. - Chame
NetStream.send()
para enviar mensagens a todos os clientes assinantes. - Chame
NetStream.send()
para adicionar metadados a um fluxo ao vivo. - Chame
NetStream.appendBytes()
para enviar dados ByteArray para o NetStream.
Nota: você não pode reproduzir e publicar um fluxo contínuo no mesmo objeto NetStream.
O Adobe AIR e o Flash Player 9.0.115.0 e versões posteriores dão suporte a arquivos derivados do formato de contêiner MPEG-4 padrão. Esses arquivos incluirão F4V, MP4, M4A, MOV, MP4V, 3GP e 3G2 se contiverem vídeo H.264 ou áudio codificado em HEAAC v2 ou ambos. O H.264 apresenta um vídeo de qualidade superior com taxas de bits inferior se comparadas com o mesmo perfil de codificação no Sorenson ou On2. AAC é um formato de áudio padrão definido no padrão de vídeo MPEG-4. HE-AAC v2 é uma extensão que usa as técnicas SBR (Spectral Band Replication) e PS (Parametric Stereo) para aumentar a eficiência da codificação em taxas de bits baixas.
Para obter mais informações sobre codecs e formatos de arquivos suportados, consulte o seguinte:
- documentação do Flash Midia Server
- Exploring Flash Player support for high-definition H.264 video and AAC audio
- documentos de especificação aberta FLV/F4V
Recepção de dados de uma corrente de Flash Media Server, arquivo F4V progressivo, ou arquivo FLV progressivo
O Flash Media Server, os arquivos F4V e os arquivos FLV podem enviar objetos de evento que contêm dados em pontos de dados específicos durante o fluxo contínuo ou a reprodução. Você pode manipular dados de um fluxo ou arquivo FLV durante a reprodução de duas formas:
-
Para receber o objeto de dados, associe uma propriedade client a um manipulador de eventos. Use a propriedade
NetStream.client
para atribuir um objeto e chamar funções de manipulação de dados específicas. O objeto atribuído à propriedadeNetStream.client
pode ouvir os seguintes pontos de dados:onCuePoint()
,onImageData()
,onMetaData()
,onPlayStatus()
,onSeekPoint()
,onTextData()
eonXMPData()
. Escreva os procedimentos nessas funções para manipular o objeto de dados retornado do fluxo durante a reprodução. Consulte a propriedadeNetStream.client
para obter mais informações. - Associe uma propriedade client a uma subclasse da classe NetStream e escreva um manipulador de eventos para receber o objeto de dados. NetStream é uma classe selada; ou seja, propriedades ou métodos não podem ser adicionados a um objeto NetStream em tempo de execução. Contudo, você pode criar uma subclasse do NetStream e definir seu manipulador de eventos na subclasse. Você também pode tornar a subclasse dinâmica e adicionar o manipulador de eventos a uma instância da subclasse.
Espere até receber um evento NetGroup.Neighbor.Connect
para usar a replicação do objeto, o roteamento direto ou as APIs de postagem.
Observação: Para enviar dados por meio de um arquivo de áudio, como um arquivo MP3, use a classe Sound para associar o arquivo de áudio a um objeto Sound. Em seguida, use a propriedade Sound.id3
para ler metadados do arquivo de som.
Suporte para vídeo codificado H.264 no AIR para iOS
Para vídeos H.264, o AIR 3.0 (e versões posteriores) para iOS suporta um subconjunto da API de NetStream completa. A seguinte tabela enumera membros de NetStream para a reprodução que não são suportadas no AIR para iOS:
Propriedades não suportadas | Métodos não suportados | Eventos não suportados |
---|---|---|
bufferTime | appendBytes() | onCuePoint (funciona somente com arquivos FLV) |
bufferLength | appendBytesAction() | onImageData |
backBufferTime | step() | onSeekPoint |
backBufferLength | onTextData | |
bufferTimeMax | onXMPData | |
bytesLoaded | drmError | |
currentFPS | drmStatus | |
inBufferSeek | onDRMContentData | |
info | drmAuthenticate | |
liveDelay | código de evento de status de DRM.encryptedFLV | |
maxPauseBufferTime | ||
soundTransform | ||
Todas as propriedades que descrevem conexões de RTMFP |
Para obter mais informações sobre a utilização do AIR para iOS, consulte o método NetStream.play()
.
Elementos da API relacionados
Propriedade | Definido por | ||
---|---|---|---|
audioReliable : Boolean
Para conexões RTMFP, especifica se o áudio é despachado com total confiança. | NetStream | ||
audioSampleAccess : Boolean
Para conexões RTMFP, especifica se os assinantes pontos a ponto neste NetStream têm autorização para capturar o fluxo contínuo de áudio. | NetStream | ||
backBufferLength : Number [somente leitura]
O número de segundos de dados anteriormente exibidos armazenados em cache atualmente para rebobinação e reprodução. | NetStream | ||
backBufferTime : Number
Especifica quantos dados exibidos anteriormente o Flash Player tenta armazenar em cache para voltar e reproduzir, em segundos. | NetStream | ||
bufferLength : Number [somente leitura]
O número de segundos de dados atualmente no buffer. | NetStream | ||
bufferTime : Number
Especifica por quanto tempo armazenar em buffer as mensagens antes de iniciar a exibição do fluxo. | NetStream | ||
bufferTimeMax : Number
Especifica um comprimento máximo de buffers para o fluxo ao vivo do conteúdo, em segundos. | NetStream | ||
bytesLoaded : uint [somente leitura]
O número de bytes de dados que foram carregados no aplicativo. | NetStream | ||
bytesTotal : uint [somente leitura]
O tamanho total em bytes do arquivo que está sendo carregado no aplicativo. | NetStream | ||
checkPolicyFile : Boolean
Especifica se o aplicativo deve tentar baixar um arquivo de política entre domínios a partir do servidor do arquivo de vídeo carregado antes de começar a carregar esse arquivo de vídeo. | NetStream | ||
client : Object
Especifica o objeto no qual os métodos de retorno de chamada são invocados para manipular o fluxo contínuo ou os dados do arquivo F4V/FLV. | NetStream | ||
constructor : Object
Uma referência ao objeto de classe ou à função de construtor de uma determinada ocorrência de objeto. | Object | ||
currentFPS : Number [somente leitura]
O número de quadros por segundo que estão sendo exibidos. | NetStream | ||
dataReliable : Boolean
Para conexões RTMFP, especifica se chamadas NetStream.send() são enviadas com total confiança. | NetStream | ||
farID : String [somente leitura]
Para conexões RTMFP, o identificador da extremidade oposta conectada que está conectado a esta instância do NetStream. | NetStream | ||
farNonce : String [somente leitura]
Para conexões RTMFP e RTMPE, um valor escolhido substancialmente pela outra extremidade deste fluxo contínuo, exclusivo desta conexão. | NetStream | ||
inBufferSeek : Boolean
Especifica se os dados exibidos são armazenados em cache para a busca inteligente (TRUE), ou não (FALSE). | NetStream | ||
info : NetStreamInfo [somente leitura]
Retorna um objeto NetStreamInfo cujas propriedades contêm estatísticas sobre a qualidade de serviço. | NetStream | ||
liveDelay : Number [somente leitura]
O número de segundos de dados no buffer do fluxo de assinatura no modo ao vivo (sem buffer). | NetStream | ||
maxPauseBufferTime : Number
Especifica por quanto tempo armazenar mensagens em buffer durante o modo de pausa, em segundos. | NetStream | ||
multicastAvailabilitySendToAll : Boolean
Para conexões RTMFP, especifica se as mensagens de disponibilidade de fragmentos multicast ponto a ponto são enviadas a todos os pares ou apenas a um par. | NetStream | ||
multicastAvailabilityUpdatePeriod : Number
Para conexões RTMFP, especifica o intervalo em segundos entre mensagens enviadas a pares que os informam que o nó local tem novos fragmentos de mídia multicast ponto a ponto disponíveis. | NetStream | ||
multicastFetchPeriod : Number
Para conexões RTMFP, especifica a hora, em segundos, entre o momento em que o nó local reconhece pela primeira vez que um fragmento de mídia multicast ponto a ponto está disponível e o momento em que ele tenta obtê-lo de um item de mesmo nível. | NetStream | ||
multicastInfo : NetStreamMulticastInfo [somente leitura]
Para conexões RTMFP, retorna um objeto NetStreamMulticastInfo cujas propriedades contêm a estatística sobre a qualidade do serviço. | NetStream | ||
multicastPushNeighborLimit : Number
Para conexões RTMFP, especifica o número máximo de itens do mesmo nível aos quais adicionar proativamente a mídia multicast. | NetStream | ||
multicastRelayMarginDuration : Number
Para conexões RTMFP, especifica a duração em segundos que os dados multicast ponto a ponto permanecem disponíveis para enviar aos itens do mesmo nível que o solicitam, além de uma duração especificada. | NetStream | ||
multicastWindowDuration : Number
Para conexões RTMFP, especifica a duração em segundos da janela de remontagem de multicast ponto a ponto. | NetStream | ||
nearNonce : String [somente leitura]
Para conexões RTMFP e RTMPE, um valor escolhido substancialmente nesta extremidade do fluxo contínuo, exclusivo desta conexão. | NetStream | ||
objectEncoding : uint [somente leitura]
A codificação de objeto (versão AMF) para este objeto NetStream. | NetStream | ||
peerStreams : Array [somente leitura]
Um objeto que mantém todas as ocorrências de NetStream de assinatura que ouvem essa ocorrência de NetStream de publicação. | NetStream | ||
soundTransform : flash.media:SoundTransform
Controla o som neste objeto NetStream. | NetStream | ||
time : Number [somente leitura]
A posição do indicador de reprodução, em segundos. | NetStream | ||
useHardwareDecoder : Boolean
Especifica se deverá utilizar a decodificação acelerada de hardware no fluxo. | NetStream | ||
useJitterBuffer : Boolean
Minimize a latência para fluxo ao vivo sem buffer (bufferTime = 0). | NetStream | ||
videoReliable : Boolean
Para conexões RTMFP, especifica se o vídeo é despachado com total confiança. | NetStream | ||
videoSampleAccess : Boolean
Para conexões RTMFP, especifica se os assinantes ponto a ponto neste NetStream têm autorização para capturar o fluxo contínuo de vídeo. | NetStream | ||
videoStreamSettings : VideoStreamSettings
Especifica as propriedades de compactação do fluxo | NetStream |
Método | Definido por | ||
---|---|---|---|
Cria um fluxo que você pode usar para reproduzir arquivos de mídia e enviar dados por um objeto NetConnection. | NetStream | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registra um objeto de ouvinte de evento em um objeto EventDispatcher, de forma que o ouvinte receba a notificação de um evento. | EventDispatcher | ||
Transmite uma ByteArray para um NetStream para executar uma reprodução. | NetStream | ||
Indica uma descontinuidade de escala de tempo, limpa o FIFO e instrui o analisador de bytes a esperar o cabeçalho do arquivo ou o início de uma marca FLV. | NetStream | ||
Anexa um fluxo contínuo a um novo objeto NetConnection. | NetStream | ||
Anexa um fluxo de áudio a um objeto NetStream a partir de um objeto Microphone transmitido como a origem. | NetStream | ||
Inicia a captura de vídeo a partir da câmera ou para a captura quando theCamera está definido como "null". | NetStream | ||
Para a reprodução de todos os dados no fluxo, define a propriedade "time" como 0 e disponibiliza o fluxo para outro uso. | NetStream | ||
Envia um evento para o fluxo de eventos. | EventDispatcher | ||
As versões de todos os recursos são mantidas pelo objeto NetStream. | NetStream | ||
Verifica se o objeto EventDispatcher tem ouvintes registrados para um tipo específico de evento. | EventDispatcher | ||
Indica se um objeto tem uma propriedade especificada definida. | Object | ||
Indica se uma ocorrência da classe Object está na cadeia de protótipos do objeto especificado como o parâmetro. | Object | ||
Chamado sempre que um fluxo de publicação de mesmo nível corresponder a um fluxo de assinatura de mesmo nível. | NetStream | ||
Pausa a reprodução de um fluxo de vídeo. | NetStream | ||
Reproduz um arquivo de mídia a partir de um diretório local ou de um servidor web; executa um arquivo de mídia ou um fluxo ao vivo a partir do Flash Media Server. | NetStream | ||
Alterna perfeitamente entre arquivos com diversas taxas de bits e permite que um NetStream retome quando uma conexão é perdida e reconectada. | NetStream | ||
Extrai os metadados DRM de um arquivo de mídia armazenado localmente. | NetStream | ||
Indica se a propriedade especificada existe e é enumerável. | Object | ||
Envia fluxo contínuo de áudio, vídeo e mensagens de texto de um cliente para o Flash Media Server, opcionalmente gravando o fluxo contínuo durante a transmissão. | NetStream | ||
Especifica se o áudio de entrada é reproduzido no fluxo. | NetStream | ||
Especifica se o vídeo recebido é reproduzido no fluxo. | NetStream | ||
Especifica a taxa de quadros do vídeo recebido. | NetStream | ||
Remove um ouvinte do objeto EventDispatcher. | EventDispatcher | ||
[estático]
Em aplicativos AIR, isso exclui todos os dados do comprovante do gerenciamento de direitos digitais (DRM) armazenados localmente. | NetStream | ||
Reinicia a reprodução de um fluxo de vídeo pausado. | NetStream | ||
Busca o quadro-chave (também chamado de quadro em I na indústria de vídeo) mais próximo à localização especificada. | NetStream | ||
Envia uma mensagem em um fluxo publicado a todos os clientes assinantes. | NetStream | ||
Define as credenciais de autenticação DRM necessárias para visualização do conteúdo | NetStream | ||
Define a disponibilidade de uma propriedade dinâmica para operações de repetição. | Object | ||
As etapas avançam ou voltam o número especificado de quadros, relativo ao quadro atualmente exibido. | NetStream | ||
Pausa ou reinicia a reprodução de um fluxo. | NetStream | ||
Retorna a representação da string deste objeto, formatado segundo as convenções específicas para a localidade. | Object | ||
Retorna a representação de string do objeto especificado. | Object | ||
Retorna o valor primitivo do objeto especificado. | Object | ||
Verifica se um ouvinte de evento está registrado nesse objeto EventDispatcher ou em qualquer um de seus ancestrais para o tipo de evento especificado. | EventDispatcher |
Evento | Resumo | Definido por | ||
---|---|---|---|---|
[transmissão de evento] Despachado quando o Flash Player ou o aplicativo do AIR ganha o foco do sistema operacional e está se tornando inativo. | EventDispatcher | |||
Despachado quando uma exceção é lançada assincronamente – ou seja, a partir do código assíncrono nativo. | NetStream | |||
[transmissão de evento] Despachado quando o Flash Player ou o aplicativo do AIR perde o foco do sistema operacional e está se tornando inativo. | EventDispatcher | |||
Despachado quando um objeto NetStream tenta executar um conteúdo criptografado de gerenciamento digital dos direitos (DRM) que necessita de uma credencial de usuário antes de sua execução. | NetStream | |||
Despachado quando um objeto NetStream encontra um erro relacionado ao DRM ao tentar executar o arquivo criptografado de gerenciamento digital dos direitos (DRM). | NetStream | |||
Despachado quando o conteúdo DRM (digital rights management - gerenciamento digital dos direitos) criptografado inicia a execução (quando o usuário for autenticado e autorizado a executar o conteúdo). | NetStream | |||
Despachado quando ocorre um erro de entrada ou saída que resulta na falha de uma operação de rede. | NetStream | |||
Despachado ao reproduzir conteúdo de vídeo e quando certos tipos de mensagens são processados. | NetStream | |||
Despachado quando um objeto NetStream está relatando seu status ou uma condição de erro. | NetStream | |||
Estabelece um ouvinte de resposta quando se chega a um ponto de sinalização incorporado durante a reprodução de um arquivo de vídeo. | NetStream | |||
Estabelece um ouvinte para responder quando o AIR extrai metadados de conteúdo DRM incorporados a um arquivo de mídia. | NetStream | |||
Estabelece um ouvinte de resposta quando o Flash Player recebe dados de imagem como uma matriz de bytes incorporada em um arquivo de mídia em reprodução. | NetStream | |||
Estabelece um ouvinte de resposta quando o Flash Player recebe informações descritivas incorporadas ao vídeo em reprodução. | NetStream | |||
Estabelece um ouvinte de resposta quando um objeto NetStream reproduziu um fluxo na íntegra. | NetStream | |||
Invocado sincronicamente de appendBytes() quando o analisador de anexação de bytes encontra um ponto que acredita ser um ponto passível de busca (por exemplo, um quadro-chave de vídeo). | NetStream | |||
Estabelece um ouvinte de resposta quando o Flash Player recebe dados de texto incorporados em um arquivo de mídia em reprodução. | NetStream | |||
Estabelece um ouvinte para responder quando o Flash Player recebe informações específicas do Adobe Extensible Metadata Platform (XMP) incorporadas ao vídeo que está sendo reproduzido. | NetStream | |||
Despachado quando o aplicativo tenta executar o conteúdo criptografado com gerenciamento digital dos direitos (DRM), invocando o método NetStream.play(). | NetStream |
Constante | Definido por | ||
---|---|---|---|
CONNECT_TO_FMS : String = "connectToFMS" [estático]
Um objeto estático usado como um parâmetro para o construtor de uma ocorrência de NetStream. | NetStream | ||
DIRECT_CONNECTIONS : String = "directConnections" [estático]
Cria uma conexão ponto a ponto com o editor. | NetStream |
audioReliable | propriedade |
audioReliable:Boolean
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Para conexões RTMFP, especifica se o áudio é despachado com total confiança. Quando TRUE, todo o áudio transmitido por meio deste NetStream é totalmente confiável. Quando FALSE, o áudio transmitido não é totalmente confiável, mas em vez disso é retransmitido por um tempo limitado e depois cancelado. Você pode usar o valor FALSE para reduzir a latência em detrimento da qualidade do áudio.
Se você tentar estabelecer esta propriedade como FALSE em um protocolo de rede que não suporta a confiança parcial, a tentativa é ignorada e a propriedade é definida como TRUE.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Implementação
public function get audioReliable():Boolean
public function set audioReliable(value:Boolean):void
Elementos da API relacionados
audioSampleAccess | propriedade |
audioSampleAccess:Boolean
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Para conexões RTMFP, especifica se os assinantes pontos a ponto neste NetStream têm autorização para capturar o fluxo contínuo de áudio. Quando FALSE, as tentativas de o assinante capturar os fluxos contínuos de áudio mostra erros de permissão.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Implementação
public function get audioSampleAccess():Boolean
public function set audioSampleAccess(value:Boolean):void
Elementos da API relacionados
backBufferLength | propriedade |
backBufferLength:Number
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
O número de segundos de dados anteriormente exibidos armazenados em cache atualmente para rebobinação e reprodução.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Esta propriedade está disponível apenas quando os dados estiverem sendo despachados em fluxo contínuo do Flash Media Server 3.5.3 ou posterior. Para obter mais informações sobre o Flash Media Server, consulte a descrição da classe.
Para especificar o quanto dos dados anteriormente exibidos está armazenado em cache, use a propriedade Netstream.backBufferTime
.
Para impedir dados de serem armazenados em cache, defina a propriedade Netstream.inBufferSeek
como FALSE.
Implementação
public function get backBufferLength():Number
Elementos da API relacionados
backBufferTime | propriedade |
backBufferTime:Number
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Especifica quantos dados exibidos anteriormente o Flash Player tenta armazenar em cache para voltar e reproduzir, em segundos. O valor padrão é 30 segundos para aplicativos de desktop e três segundos para aplicativos móveis.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Esta propriedade está disponível apenas quando os dados estiverem sendo despachados em fluxo contínuo do Flash Media Server 3.5.3 ou posterior. Para obter mais informações sobre o Flash Media Server, consulte a descrição da classe.
A utilização desta propriedade melhora o desempenho de operações de rebobinagem, uma vez que os dados que já foram exibidos não são recuperados do servidor novamente. Em vez disso, o fluxo contínuo começa a reproduzir novamente do buffer. Durante a reprodução, os dados continuam com o fluxo contínuo do servidor até que o buffer esteja cheio.
Se a posição de rebobinagem for anterior ao armazenamento dos dados no cache, o buffer é descarregado; os dados, então, iniciam o fluxo contínuo do servidor na posição solicitada.
Para usar esta propriedades, defina a propriedade Netstream.inBufferSeek
como TRUE.
Implementação
public function get backBufferTime():Number
public function set backBufferTime(value:Number):void
Elementos da API relacionados
bufferLength | propriedade |
bufferLength:Number
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
O número de segundos de dados atualmente no buffer. Você pode usar essa propriedade com a propriedade bufferTime
para estimar o quão lotado está o buffer - por exemplo, para exibir feedback a um usuário que está aguardando o carregamento de dados no buffer.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Implementação
public function get bufferLength():Number
Elementos da API relacionados
bufferTime | propriedade |
bufferTime:Number
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Especifica por quanto tempo armazenar em buffer as mensagens antes de iniciar a exibição do fluxo.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
O valor padrão é 0,1 (um décimo de segundo). Para determinar o número de segundos atualmente no buffer, use a propriedade bufferLength
.
Para reproduzir uma lista de reprodução no lado do servidor, defina bufferTime
como pelo menos 1 segundo. Se você experimenta questões de reprodução, aumenta o comprimento de bufferTime
.
Conteúdo gravado Para evitar distorção ao fazer streaming de um conteúdo pré-gravado (não ao vivo), não defina o valor de Netstream.bufferTime
como 0. Por padrão, o aplicativo usa um buffer de entrada para conteúdo pré-gravado que coloca em fila os dados de mídia e reproduz essa mídia corretamente. Para conteúdo pré-gravado, use a configuração padrão ou aumente o tempo de buffer.
Conteúdo ao vivo Ao fazer streaming de conteúdo ao vivo, defina a propriedade bufferTime
como 0.
Ao começar com o Flash Player 9.0.115.0, o Flash Player não limpa mais o buffer quando o NetStream.pause()
é chamado. Antes do Flash Player 9.0.115.0, o Flash Player aguardava o preenchimento do buffer antes de reiniciar a reprodução, o que normalmente causava um atraso.
Para uma única pausa, a propriedade NetStream.bufferLength
tem um limite de 60 segundos ou duas vezes o valor de NetStream.bufferTime
, que é superior independentemente do valor que seja. Por exemplo, se o bufferTime
for de 20 segundos, o Flash Player armazenará em buffer até que o valor de NetStream.bufferLength
seja superior ao valor de 20*2 (40) ou 60. Neste caso, armazenará em buffer até que bufferLength
seja 60. Se o bufferTime
for de 40 segundos, o Flash Player armazenará em buffer até que o valor de bufferLength
seja superior a 40*2 (80) ou 60. Neste caso, armazenará em buffer até que o valor de bufferLength
seja 80 segundos.
A propriedade bufferLength
também possui um limite absoluto. Se qualquer chamada para pause()
fizer com que o valor de bufferLength
aumente para mais de 600 segundos ou o valor de bufferTime
* 2, sendo superior independentemente de qual seja, o Flash Player esvaziará o buffer e redefinirá bufferLength
para 0. Por exemplo, se bufferTime
for 120 seconds, o Flash Player esvaziará o buffer se o valor de bufferLength
atingir 600 segundos. Se bufferTime
for 360 segundos, o Flash Player esvaziará o buffer se bufferLength
atingir 720 segundos.
Dica: você pode usar NetStream.pause()
em código para armazenar os dados em buffer enquanto os visualizadores observam um comercial, por exemplo, e depois soltam o pause no início do vídeo principal.
Para obter informações sobre o novo comportamento de pausa, consulte http://www.adobe.com/go/learn_fms_smartpause_br.
Flash Media Server. O comportamento do buffer depende de o tempo de buffer estar definido em um fluxo de publicação ou em um fluxo de inscrição. Para um fluxo de publicação, bufferTime
especifica por quanto tempo o buffer de saída pode crescer antes que o aplicativo comece a eliminar quadros. Em uma conexão de alta velocidade, o tempo de buffer não é de grande importância; os dados serão despachados quase tão rapidamente quanto o aplicativo for capaz de armazená-los em buffer. Entretanto, em uma conexão lenta, pode haver uma diferença significativa entre a velocidade com a qual o aplicativo armazena os dados em buffer e a velocidade com que esses dados podem ser despachados ao cliente.
Para um fluxo de inscrição, bufferTime
especifica por quanto tempo armazenar os dados de entrada em buffer antes de começar a exibir o fluxo.
Quando um fluxo gravado for reproduzido, se bufferTime
for 0, o Flash o definirá como um valor pequeno (cerca de 10 milésimos de segundo). Se fluxos ao vivo forem reproduzidos posteriormente (por exemplo, a partir de uma lista de reprodução), esse tempo de buffer persistirá. Ou seja, bufferTime
permanecerá diferente de zero para o fluxo.
Implementação
public function get bufferTime():Number
public function set bufferTime(value:Number):void
Elementos da API relacionados
bufferTimeMax | propriedade |
bufferTimeMax:Number
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Especifica um comprimento máximo de buffers para o fluxo ao vivo do conteúdo, em segundos. O valor padrão é 0. O comprimento de buffers pode aumentar dentro de algum tempo devido a problemas de rede e dispositivo (como clock drift entre remetente e receptor). Defina esta propriedade para corrigir o comprimento de buffers de aplicativos ao vivo, como reuniões e vigilância.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Quando bufferTimeMax > 0
e bufferLength >= bufferTimeMax
, o áudio é executado com mais rapidez até bufferLength
atingir bufferTime
. Se um fluxo ao vivo for somente de vídeo, o vídeo será reproduzido mais rapidamente até que bufferLength
alcance bufferTime
.
Dependendo de quanto a reprodução está atrasando (a diferença entre bufferLength
e bufferTime
), o Flash Player controla a taxa de sincronia entre 1,5 % e 6,25 %. Se o fluxo contiver o áudio, a reprodução mais rápida é obtida pela redução da qualidade do domínio de frequência que minimiza a distorção audível.
Defina a propriedade bufferTimeMax
para habilitar a captura de fluxo contínuo armazenado em buffer nos seguintes casos:
- Enviar fluxo contínuo de mídia ao vídeo do Flash Media Server.
- Enviar fluxo contínuo de mídia ao vivo no Modo de Geração de Dados (
NetStream.appendBytes()
).
Implementação
public function get bufferTimeMax():Number
public function set bufferTimeMax(value:Number):void
Elementos da API relacionados
bytesLoaded | propriedade |
bytesLoaded:uint
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
O número de bytes de dados que foram carregados no aplicativo. Você pode usar essa propriedade com a propriedade bytesTotal
para estimar o quão lotado está o buffer - por exemplo, para exibir feedback a um usuário que está aguardando o carregamento de dados no buffer.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Implementação
public function get bytesLoaded():uint
Elementos da API relacionados
bytesTotal | propriedade |
checkPolicyFile | propriedade |
checkPolicyFile:Boolean
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9 |
Especifica se o aplicativo deve tentar baixar um arquivo de política entre domínios a partir do servidor do arquivo de vídeo carregado antes de começar a carregar esse arquivo de vídeo. Use esta propriedade do carregamento vídeo progressivo, e a arquivos de carregamento que são do lado de fora do próprio domínio do arquivo SWF que chama. Esta propriedade é ignorada quando você está usando RTMP.
Estabeleça esta propriedade como true
para invocar BitmapData.draw()
em um arquivo vídeo carregado de um domínio externo ao SWF que efetua a chamada. O BitmapData.draw()
o método fornece o acesso de nível do pixel ao vídeo. Se você chamar BitmapData.draw()
sem definir a propriedade checkPolicyFile
como true
na ocasião do carregamento, poderá obter uma exceção SecurityError
, uma vez que o arquivo de política necessário não foi baixado.
Não defina esta propriedade como verdadeira a menos que você deseje o acesso em nível do pixel ao vídeo que está carregando. A verificação de um arquivo de diretivas consome largura de banda da rede e pode atrasar o início do download.
Quando você chamar o método NetStream.play()
com checkPolicyFile
definida como true
, o tempo de execução do Flash Player ou do AIR deverá baixar com êxito um arquivo de diretivas entre domínios relevante ou determinar que esse arquivo não existe antes de iniciar o download. Para verificar a existência de um arquivo de diretivas, o Flash Player ou o AIR desempenha as ações a seguir, nesta ordem:
- O aplicativo considera os arquivos de política que já foram baixados.
- O aplicativo tenta baixar arquivos de diretivas pendentes especificados em chamadas ao método
Security.loadPolicyFile()
. - O aplicativo tenta baixar um arquivo de diretivas a partir da localização padrão que corresponde à URL que você transmitiu a
NetStream.play()
, que é/crossdomain.xml
no mesmo servidor que essa URL.
Em todos os casos, o Flash Player ou o Adobe AIR requer que um arquivo de políticas apropriado exista no servidor do vídeo, que ele forneça acesso ao objeto no URL transmitido ao play()
com base na localização do arquivo de políticas e que ele permita que o domínio do arquivo de código de chamada acesse o vídeo, por meio de uma ou mais marcas <allow-access-from>
.
Se você definir checkPolicyFile
como true
, o aplicativo aguardará até que o arquivo de diretivas seja verificado antes de baixar o vídeo. Aguarde para realizar operações em nível de pixel nos dados de vídeo, como chamar BitmapData.draw()
, até receber eventos onMetaData
ou NetStatus
do seu objeto NetStream.
Se você definir checkPolicyFile
como true
, mas nenhum arquivo de diretivas relevante for encontrado, um erro será exibido somente depois que tiver sido executada uma operação que requer um arquivo de diretivas, fazendo com que o aplicativo lance uma exceção SecurityError.
Tenha cautela com checkPolicyFile
se estiver baixando um arquivo a partir de uma URL que use redirecionamentos HTTP no lado do servidor. O aplicativo tenta recuperar arquivos de políticas que correspondem ao URL inicial especificado em NetStream.play()
. Se o arquivo final for proveniente de uma URL diferente devido a redirecionamentos HTTP, os arquivos de diretivas inicialmente baixados poderão não ser aplicáveis à URL final do arquivo, que é justamente a URL significativa em decisões de segurança.
Para obter mais informações sobre arquivos de política, consulte "controles de website (arquivos de política)" no Guia do Desenvolvedor do ActionScript 3.0 e o tópico do Centro do Desenvolvedor do Flash Player: Security.
Implementação
public function get checkPolicyFile():Boolean
public function set checkPolicyFile(value:Boolean):void
Elementos da API relacionados
client | propriedade |
client:Object
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Especifica o objeto no qual os métodos de retorno de chamada são invocados para manipular o fluxo contínuo ou os dados do arquivo F4V/FLV. O objeto padrão é this
, o objeto NetStream que está sendo criado. Caso você defina a propriedade client
como outro objeto, os métodos de retorno de chamada são invocados nesse outro objeto. O objeto NetStream.client
pode chamar as seguintes funções e receber um objeto de dados associado: onCuePoint()
, onImageData()
, onMetaData()
, onPlayStatus()
, onSeekPoint()
, onTextData()
e onXMPData()
.
Para associar a propriedade client
a um manipulador de eventos:
- Crie e atribua um objeto
client
do objeto NetStream:var customClient:Object = new Object(); my_netstream.client = customClient;
- Atribua uma função handler ao evento de dados desejado como uma propriedade do objeto de cliente:
customClient.onImageData = onImageDataHandler;
- Escreva a função handler para receber o objeto de evento de dados como, por exemplo:
public function onImageDataHandler(imageData:Object):void { trace("imageData length: " + imageData.data.length); }
Quando os dados passam pelo fluxo ou durante a reprodução, o objeto de evento de dados (nesse caso, o objeto imageData
) é preenchido com os dados. Veja a descrição de onImageData
, que inclui um exemplo completo de um objeto atribuído à propriedade client
.
Para associar a propriedade client
a uma subclasse:
- Crie uma subclasse com uma função handler para receber o objeto de evento de dados:
class CustomClient { public function onMetaData(info:Object):void { trace("metadata: duration=" + info.duration + " framerate=" + info.framerate); }
- Atribua uma instância da subclasse à propriedade
client
do objeto NetStream:my_netstream.client = new CustomClient();
Quando os dados passam pelo fluxo ou durante a reprodução, o objeto de evento de dados (nesse caso, o objeto info
) é preenchido com os dados. Veja o exemplo de classe no final da classe NetStream, que mostra a atribuição de uma ocorrência de subclasse à propriedade client
.
Implementação
public function get client():Object
public function set client(value:Object):void
Lança
TypeError — A propriedade client deve ser definida como um objeto não nulo.
|
Elementos da API relacionados
currentFPS | propriedade |
currentFPS:Number
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
O número de quadros por segundo que estão sendo exibidos. Se você estiver exportando arquivos de vídeo a serem reproduzidos em vários sistemas, poderá marcar esse valor durante os testes para ajudá-lo a determinar o nível de compactação a ser aplicado ao exportar o arquivo.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Implementação
public function get currentFPS():Number
dataReliable | propriedade |
dataReliable:Boolean
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Para conexões RTMFP, especifica se as chamadas NetStream.send()
são enviadas com total confiança. Quando TRUE, as chamadas NetStream.send()
que são transmitidas por meio deste NetStream são totalmente confiáveis. Quando FALSE, as chamadas NetStream.send()
não são transmitidas com total confiança, mas em vez disso são retransmitidas por um tempo limitado e depois canceladas. Você pode definir este valor como FALSE para reduzir a latência em detrimento da qualidade dos dados.
Se você tentar estabelecer esta propriedade como FALSE em um protocolo de rede que não suporta a confiança parcial, a tentativa é ignorada e a propriedade é definida como TRUE.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Implementação
public function get dataReliable():Boolean
public function set dataReliable(value:Boolean):void
Elementos da API relacionados
farID | propriedade |
farID:String
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Para conexões RTMFP, o identificador da extremidade oposta conectada que está conectado a esta instância do NetStream.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Implementação
public function get farID():String
farNonce | propriedade |
farNonce:String
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Para conexões RTMFP e RTMPE, um valor escolhido substancialmente pela outra extremidade deste fluxo contínuo, exclusivo desta conexão. Esse valor aparece para a outra extremidade do fluxo como seu valor nearNonce
.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Implementação
public function get farNonce():String
inBufferSeek | propriedade |
inBufferSeek:Boolean
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Especifica se os dados exibidos são armazenados em cache para a busca inteligente (TRUE
), ou não (FALSE
). O valor padrão é FALSE.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
O Flash Media Server 3.5.3 e o Flash Player 10.1 colaboram para suportar a busca inteligente. A busca inteligente usa buffers anteriores e posteriores para buscar sem solicitar dados do servidor. A busca padrão limpa dados armazenados em buffer e pede que o servidor envie novos dados com base no momento da busca.
Chame NetStream.step()
para avançar e voltar um número específico de quadros. Chame NetStream.seek()
para buscar avançando e voltando um número especificado de segundos.
A busca inteligente reduz a carga do servidor e melhora o desempenho da busca. Defina inBufferSeek=true
e chame step()
e seek()
para criar:
- Funcionalidade de DVR do Cliente. Busque dentro do buffer do cliente em vez de ir para o servidor para a entrega do novo vídeo.
- Modos de truque. Crie players que reproduzem quadro a quadro, avançam, voltam e avançam em câmera lenta.
Quando inBufferSeek=true
e uma chamada para NetStream.seek()
forem bem-sucedidos, a propriedade info.description
do NetStatusEvent contém a string "client-inBufferSeek"
.
Quando um chamada para NetStream.step()
for bem-sucedida, a propriedade info.code
do NetStatusEvent contém a string "NetStream.Step.Notify"
.
Implementação
public function get inBufferSeek():Boolean
public function set inBufferSeek(value:Boolean):void
Elementos da API relacionados
info | propriedade |
info:NetStreamInfo
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Retorna um objeto NetStreamInfo cujas propriedades contêm estatísticas sobre a qualidade de serviço. O objeto é um instantâneo do estado atual.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Implementação
public function get info():NetStreamInfo
Elementos da API relacionados
liveDelay | propriedade |
liveDelay:Number
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
O número de segundos de dados no buffer do fluxo de assinatura no modo ao vivo (sem buffer). Essa propriedade especifica o atraso atual de transmissão da rede (tempo de defasagem).
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Esse propriedade é destinada principalmente para uso com um servidor como o Flash Media Server; para obter mais informações, consulte a descrição da classe.
Você pode obter o valor dessa propriedade para medir em linhas gerais a qualidade de transmissão do fluxo e comunicá-la ao usuário.
Implementação
public function get liveDelay():Number
maxPauseBufferTime | propriedade |
maxPauseBufferTime:Number
Versões de runtime: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Especifica por quanto tempo armazenar mensagens em buffer durante o modo de pausa, em segundos. Essa propriedade pode ser usada para limitar o armazenamento em buffer durante o modo de pausa. Logo que o valor de NetStream.bufferLength
atinge esse limite, o armazenamento em buffer é interrompido.
Se esse valor não for definido, será usado como padrão o limite de 60 segundos ou de duas vezes o valor de NetStream.bufferTime
em cada pausa, o que for mais alto.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Implementação
public function get maxPauseBufferTime():Number
public function set maxPauseBufferTime(value:Number):void
Elementos da API relacionados
multicastAvailabilitySendToAll | propriedade |
multicastAvailabilitySendToAll:Boolean
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Para conexões RTMFP, especifica se as mensagens de disponibilidade de fragmentos multicast ponto a ponto são enviadas a todos os pares ou apenas a um par. Um valor TRUE especifica que as mensagens são enviadas a todos os pares uma vez por intervalo especificado. Um valor dos FALSE especifica que as mensagens são enviadas a apenas um par por intervalo especificado. O intervalo é determinado pela propriedade multicastAvailabilityUpdatePeriod
.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Implementação
public function get multicastAvailabilitySendToAll():Boolean
public function set multicastAvailabilitySendToAll(value:Boolean):void
Elementos da API relacionados
multicastAvailabilityUpdatePeriod | propriedade |
multicastAvailabilityUpdatePeriod:Number
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Para conexões RTMFP, especifica o intervalo em segundos entre mensagens enviadas a pares que os informam que o nó local tem novos fragmentos de mídia multicast ponto a ponto disponíveis. Valores maiores podem aumentar a eficiência de operações em lote e reduzir a sobrecarga de controle, mas eles podem reduzir a qualidade na extremidade receptora, reduzindo o período de tempo disponível para recuperar fragmentos antes que eles estejam fora da janela. Valores menores podem reduzir a latência e melhorar a qualidade, mas eles aumentam a sobrecarga de controle.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Implementação
public function get multicastAvailabilityUpdatePeriod():Number
public function set multicastAvailabilityUpdatePeriod(value:Number):void
Elementos da API relacionados
multicastFetchPeriod | propriedade |
multicastFetchPeriod:Number
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Para conexões RTMFP, especifica a hora, em segundos, entre o momento em que o nó local reconhece pela primeira vez que um fragmento de mídia multicast ponto a ponto está disponível e o momento em que ele tenta obtê-lo de um item de mesmo nível. Este valor dá uma oportunidade ao fragmento de ser proativamente direcionado ao nó local antes que uma busca de um item de mesmo nível seja tentada. Ele também permite que mais de um item de mesmo nível anuncie a disponibilidade do fragmento, para que a carga de esforço possa ser distribuída entre múltiplos item de mesmo nível.
Valores maiores valores podem melhorar o equilíbrio de carga e a equidade na malha ponto a ponto, mas podem reduzir o multicastWindowDuration
disponível e aumentar a latência. Valores menores podem reduzir a latência quando a busca é necessária, mas podem aumentar a recepção de dados duplicados e reduzir o equilíbrio da carga da malha ponto a ponto.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Implementação
public function get multicastFetchPeriod():Number
public function set multicastFetchPeriod(value:Number):void
Elementos da API relacionados
multicastInfo | propriedade |
multicastInfo:NetStreamMulticastInfo
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Para conexões RTMFP, retorna um objeto NetStreamMulticastInfo cujas propriedades contêm a estatística sobre a qualidade do serviço. O objeto é um instantâneo do estado atual.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Implementação
public function get multicastInfo():NetStreamMulticastInfo
Elementos da API relacionados
multicastPushNeighborLimit | propriedade |
multicastPushNeighborLimit:Number
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Para conexões RTMFP, especifica o número máximo de itens do mesmo nível aos quais adicionar proativamente a mídia multicast.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Implementação
public function get multicastPushNeighborLimit():Number
public function set multicastPushNeighborLimit(value:Number):void
multicastRelayMarginDuration | propriedade |
multicastRelayMarginDuration:Number
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Para conexões RTMFP, especifica a duração em segundos que os dados multicast ponto a ponto permanecem disponíveis para enviar aos itens do mesmo nível que o solicitam, além de uma duração especificada. A duração é especificada pela propriedade multicastWindowDuration
.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Implementação
public function get multicastRelayMarginDuration():Number
public function set multicastRelayMarginDuration(value:Number):void
Elementos da API relacionados
multicastWindowDuration | propriedade |
multicastWindowDuration:Number
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Para conexões RTMFP, especifica a duração em segundos da janela de remontagem de multicast ponto a ponto. Os valores mais curtos reduzem a latência, mas podem reduzir a qualidade, não permitindo tempo suficiente para obter todos os fragmentos. De modo inverso, os maiores valores podem aumentar a qualidade fornecendo mais tempo para obter todos os fragmentos, com um aumento correspondente na latência.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Implementação
public function get multicastWindowDuration():Number
public function set multicastWindowDuration(value:Number):void
Elementos da API relacionados
nearNonce | propriedade |
nearNonce:String
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Para conexões RTMFP e RTMPE, um valor escolhido substancialmente nesta extremidade do fluxo contínuo, exclusivo desta conexão. Esse valor aparece para a outra extremidade do fluxo como seu valor farNonce
.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Implementação
public function get nearNonce():String
objectEncoding | propriedade |
objectEncoding:uint
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
A codificação de objeto (versão AMF) para este objeto NetStream. O objeto NetStream herda o valor objectEncoding
a partir do objeto NetConnection associado. É importante compreender essa propriedade se o seu arquivo SWF ActionScript 3.0 precisar se comunicar com servidores lançados antes do Flash Player 9. Para obter mais informações, consulte a descrição da propriedade objectEncoding
na classe NetConnection.
O valor dessa propriedade depende de o fluxo ser local ou remoto. Fluxos locais, em que null
foi transmitido ao método NetConnection.connect()
, retornam o valor de NetConnection.defaultObjectEncoding
. Fluxos remotos, nos quais você está se conectando a um servidor, retornam a codificação de objeto da conexão com o servidor.
Se você tentar ler essa propriedade quando não estiver conectado ou se tentar alterá-la, o aplicativo lançará uma exceção.
Implementação
public function get objectEncoding():uint
Elementos da API relacionados
peerStreams | propriedade |
soundTransform | propriedade |
soundTransform:flash.media:SoundTransform
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9 |
Controla o som neste objeto NetStream. Para obter mais informações, consulte a classe SoundTransform.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Implementação
public function get soundTransform():flash.media:SoundTransform
public function set soundTransform(value:flash.media:SoundTransform):void
Elementos da API relacionados
time | propriedade |
time:Number
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
A posição do indicador de reprodução, em segundos.
Flash Media Server Para um fluxo de inscrição, o número de segundos durante os quais o fluxo está em reprodução. Para um fluxo de publicação, o número de segundos durante os quais o fluxo está sendo publicado. Esse número tem uma precisão até a milésima casa decimal; multiplique por 1000 para obter o número de milésimos de segundo durante os quais o fluxo está em reprodução.
Para um fluxo de assinatura, se o servidor interromper o envio de dados, mas o fluxo permanecer aberto, o valor da propriedade time
deixará de aumentar. Quando o servidor começar a enviar dados novamente, o valor continuará a aumentar a partir do ponto que havia parado (quando o servidor parou de enviar dados).
O valor de time
continuará a aumentar quando o fluxo contínuo alternar de um elemento de lista de reprodução para outro. Essa propriedade é definida como 0 quando NetStream.play()
é chamado com reset
definido como 1
ou true
ou quando NetStream.close()
é chamado.
Implementação
public function get time():Number
Elementos da API relacionados
useHardwareDecoder | propriedade |
useHardwareDecoder:Boolean
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 3 |
Especifica se deverá utilizar a decodificação acelerada de hardware no fluxo.
Nota: Não é possível definir esta propriedade durante a reprodução de vídeo. Você deverá defini-la antes de realizar a chamada de NetStream.play()
.
O valor padrão é true.
Implementação
public function get useHardwareDecoder():Boolean
public function set useHardwareDecoder(value:Boolean):void
Elementos da API relacionados
useJitterBuffer | propriedade |
useJitterBuffer:Boolean
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11.3, AIR 3.3 |
Minimize a latência para fluxo ao vivo sem buffer (bufferTime = 0). Em vez do mecanismo de acompanhamento baseado em push conservador, as mensagens de áudio são colocadas em um buffer de tremulação. Quando o dispositivo de alto-falante precisa do áudio, as mensagens são obtidas no buffer de tremulação, decodificadas e reproduzidas. Speex e G.711 sempre usam essa abordagem baseada em pull, independentemente dessas configurações (useJitterBuffer retorna verdadeiro para Speex/G.711). Quando ativado no modo sem buffer, todos os codecs usam o buffer de tremulação, como Speex, G.711, Nellymoser, MP3 e AAC. Esta propriedade não tem nenhum efeito no modo com buffer (bufferTime > 0) e, assim, useJitterBuffer retorna falso.
Implementação
public function get useJitterBuffer():Boolean
public function set useJitterBuffer(value:Boolean):void
videoReliable | propriedade |
videoReliable:Boolean
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Para conexões RTMFP, especifica se o vídeo é despachado com total confiança. Quando TRUE, todo o vídeo transmitido por meio deste NetStream é totalmente fiável. Quando FALSE, o vídeo transmitido não é totalmente confiável, mas em vez disso é retransmitido por um tempo limitado e depois cancelado. Você pode usar o valor FALSE para reduzir a latência em detrimento da qualidade vídeo.
Se você tentar estabelecer esta propriedade como FALSE em um protocolo de rede que não suporta a confiança parcial, a tentativa é ignorada e a propriedade é definida como TRUE.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Implementação
public function get videoReliable():Boolean
public function set videoReliable(value:Boolean):void
Elementos da API relacionados
videoSampleAccess | propriedade |
videoSampleAccess:Boolean
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Para conexões RTMFP, especifica se os assinantes ponto a ponto neste NetStream têm autorização para capturar o fluxo contínuo de vídeo. Quando FALSE, as tentativas de o assinante capturar os fluxos contínuos mostra erros de permissão.
Nota: Essa propriedade não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Implementação
public function get videoSampleAccess():Boolean
public function set videoSampleAccess(value:Boolean):void
Elementos da API relacionados
videoStreamSettings | propriedade |
videoStreamSettings:VideoStreamSettings
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11/ConnectAddin, AIR 3 |
Especifica as propriedades de compactação do fluxo Para obter mais informações, consulte VideoStreamSettings
. Quando nenhuma câmera é anexada ao seu sistema, nulo é retornado.
Implementação
public function get videoStreamSettings():VideoStreamSettings
public function set videoStreamSettings(value:VideoStreamSettings):void
Elementos da API relacionados
NetStream | () | Construtor |
public function NetStream(connection:NetConnection, peerID:String = "connectToFMS")
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Cria um fluxo que você pode usar para reproduzir arquivos de mídia e enviar dados por um objeto NetConnection.
É considerado inválido não tratar um evento netStatus
de um objeto NetStream. Para evitar erros, registre um ouvinte para o netStatus
depois de criar um objeto NetStream e antes de chamar o método play()
dele.
connection:NetConnection — Um objeto NetConnection.
| |
peerID:String (default = "connectToFMS ") — Este parâmetro opcional está disponível em Flash Player 10 e depois, para o uso com conexões RTMFP. (Se o valor da propriedade NetConnection.protocol não for "rtmfp" , este parâmetro é ignorado.) Use um dos seguintes valores:
Na maioria dos casos, uma Se você incluir este parâmetro na sua instrução ao construtor, mas enviar um valor |
Lança
ArgumentError — A ocorrência de NetConnection não está conectada.
|
Elementos da API relacionados
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"
Exemplo ( Como usar este exemplo )
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
) em uma instância remota do Flash Media Server especificada no comando connect()
:
var my_video:Video = new Video(); addChild(my_video); var my_nc:NetConnection = new NetConnection(); my_nc.connect("rtmp://www.yourfmsserver.com/someappname"); var my_ns:NetStream = new NetStream(my_nc, NetStream.CONNECT_TO_FMS); my_video.attachNetStream(my_ns); my_ns.play(videoURL);
appendBytes | () | método |
public function appendBytes(bytes:ByteArray):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Transmite uma ByteArray para um NetStream para executar uma reprodução. Chame este método em um NetStream no "Modo de Geração de Dados". Para colocar um NetStream no Modo de Geração de Dados, invoque NetStream.play(null)
em um NetStream criado em um NetConnection conectado a null
. InvocarappendBytes()
em um NetStream que não está no Modo de Geração de Dados é um erro e origina uma exceção.
Nota: Esse método não é suportado em vídeos H.264 no AIR 3.0 para iOS.
O analisador de bytes entende um arquivo FLV com um cabeçalho. Depois que o cabeçalho é analisado, appendBytes()
espera que todas as futuras chamadas sejam continuações do mesmo arquivo verdadeiro ou virtual. Outro cabeçalho não é esperado a menos que appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN)
seja invocado.
Um objeto NetStream tem dois buffers: o FIFO de appendBytes()
para o NetStream, e o buffer de reprodução. O FIFO é o buffer de reconstituição da marca parcial FLV e contém não mais do que uma marca FLV incompleta. As chamadas de NetStream.seek()
esvaziam os dois buffers. Depois de uma chamada deseek()
chame appendBytesAction()
para reiniciar a escala de tempo começando da marca de data/hora da próxima mensagem anexada.
Cada chamada de appendBytes()
adiciona bytes no FIFO até a marca FLV ficar completa. Quando uma marca FLV estiver completa, ela ser moverá para o buffer de reprodução. Uma chamada de appendBytes()
pode gravar várias marcas FLV. Os primeiros bytes completam uma marca FLV existente (que se move para o buffer de reprodução). As marcas FLV completas movem para o buffer de reprodução. Os bytes restantes não forma uma marca FLV completa para ir para o FIFO. Os bytes no FIFO ou são completados por uma chamada de appendBytes()
ou esvaziados por uma chamada de appendBytesAction()
com o argumento RESET_SEEK
ou RESET_BEGIN
.
Nota: o analisador de bytes podem não ser capaz de decodificar completamente uma chamada de appendBytes()
até que uma chamada subsequente de appendBytes()
seja feita.
Parâmetros
bytes:ByteArray |
Elementos da API relacionados
appendBytesAction | () | método |
public function appendBytesAction(netStreamAppendBytesAction:String):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Indica uma descontinuidade de escala de tempo, limpa o FIFO e instrui o analisador de bytes a esperar o cabeçalho do arquivo ou o início de uma marca FLV.
Nota: Esse método não é suportado em vídeos H.264 no AIR 3.0 para iOS.
As chamadas de NetStream.seek()
esvaziam os buffers do NetStream. O analisador de bytes permanece no modo de esvaziamento até você chamar appendBytesAction()
e enviar o argumento RESET_BEGIN
ou RESET_SEEK
. Capture o evento "NetStream.Seek.Notify"
para chamar appendBytesAction()
depois de uma busca. Um novo cabeçalho de arquivo poderia suportar listas de reprodução ou efetuar busca sem invocar NetStream.seek()
.
Você também pode chamar esse método para reiniciar o contador de bytes para a chamada de retorno onSeekPoint()
).
Parâmetros
netStreamAppendBytesAction:String |
Elementos da API relacionados
attach | () | método |
public function attach(connection:NetConnection):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Anexa um fluxo contínuo a um novo objeto NetConnection. Chame este método para anexar um NetStream a um novo objeto NetConnection depois que uma conexão cair e ser reconectada. Flash Player e AIR continuam o fluxo do ponto de reprodução de quando a conexão foi perdida. Você também pode usar este método para implementar o equilíbrio de carga.
Este método necessita a versão 3.5.3 do Flash Media Server ou posterior.
Para usar este método para implementar a reconexão de fluxo, consulte a documentação do Flash Media Server 3.5.3.
Para usar este método para implementar o equilíbrio de carga, faça o seguinte:
- Anexe uma fluxo contínuo conectado a um objeto NetConnection em outro servidor.
- Depois que o fluxo contínuo é anexado com êxito à nova conexão, chame
NetConnection.close()
na conexão anterior para prevenir vazamentos de dados. - Chame
NetStream.play2()
e defina o valor deNetStreamPlayOptions.transition
como RESUME. Defina o resto das propriedades NetStreamPlayOptions aos mesmos valores que você usou quando chamou originalmenteNetStream.play()
ouNetStream.play2()
para iniciar o fluxo contínuo.
Parâmetros
connection:NetConnection |
Elementos da API relacionados
attachAudio | () | método |
public function attachAudio(microphone:Microphone):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9 |
Anexa um fluxo de áudio a um objeto NetStream a partir de um objeto Microphone transmitido como a origem. Esse método apenas está disponível ao publicador do fluxo especificado.
Use este método com o Flash Media Server para enviar o áudio ao vivo ao servidor. Chame este método antes ou depois de chamar o método publish()
.
Defina a propriedade Microphone.rate
para corresponde à taxa do dispositivo de captura de som. Chame setSilenceLevel()
para definir o limiar do nível de silêncio. Para controlar as propriedades de som (volume e repercussão) do fluxo contínuo de áudio, use a propriedade 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")
Para ouvir áudio, chame o método NetStream.play()
e chame DisplayObjectContainer.addChild()
para rotear o áudio para um objeto na lista de exibição.
Parâmetros
microphone:Microphone — A origem do fluxo de áudio a ser transmitido.
|
Elementos da API relacionados
attachCamera | () | método |
public function attachCamera(theCamera:Camera, snapshotMilliseconds:int = -1):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9 |
Inicia a captura do vídeo a partir de uma câmera ou para a captura se theCamera
estiver definido como null
. Esse método apenas está disponível ao publicador do fluxo especificado.
Esse método é destinado para uso com o Flash Media Server; para obter mais informações, consulte a descrição da classe.
Depois de anexar a fonte de vídeo, chame NetStream.publish()
para iniciar a transmissão. Os assinantes que quiserem exibir o vídeo deverão chamar os métodos NetStream.play()
e Video.attachCamera()
para exibir o vídeo no palco.
Você pode usar snapshotMilliseconds
para enviar um único instantâneo (fornecendo um valor 0) ou uma série de instantâneos (na verdade, uma sequência de lapso temporal), fornecendo um número positivo que adiciona um segmento posterior com o número especificado de milésimos de segundo ao feed de vídeo. O segmento posterior estende o tempo de exibição da mensagem de vídeo. Ao chamar attachCamera()
repetidamente com um valor positivo para snapshotMilliseconds
, a sequência de instantâneos e segmentos posteriores alternados cria uma sequência de lapso temporal. Por exemplo, é possível capturar um quadro por dia e acrescentá-lo a um arquivo de vídeo. Quando um assinante reproduzir o arquivo, cada quadro permanecerá na tela pelo número especificado de milésimos de segundo e, em seguida, o próximo quadro será exibido.
A finalidade do parâmetro instantâneoMilésimosegundos
é diferente daquela do parâmetro fps
que pode ser definido com Camera.setMode()
. Ao especificar instantâneoMilésimosegundos
, você controla o tempo decorrido entre os quadros gravados. Ao especificar fps
usando Camera.setMode()
, você controla o tempo decorrido durante a gravação e a reprodução.
Por exemplo, suponha que você queira tirar um instantâneo a cada 5 minutos até um total de 100 instantâneos. Isso pode ser feito de duas maneiras:
- Você pode emitir um comando
NetStream.attachCamera(myCamera, 500)
100 vezes, uma a cada 5 minutos. Isso leva 500 minutos para gravação, mas o arquivo resultante será reproduzido em 50 segundos (100 quadros com 500 milésimos de segundo entre eles). - Você pode emitir um comando
Camera.setMode()
com um valorfps
de 1/300 (um por 300 segundos ou um a cada 5 minutos) e, em seguida, emitir um comandoNetStream.attachCamera(source)
, permitindo que a câmera capture continuamente por 500 minutos. O arquivo resultante será reproduzido em 500 minutos (a mesma duração de tempo exigida para gravação), com cada quadro exibido por 5 minutos.
Ambas as técnicas capturam os mesmos 500 quadros e ambas as abordagens são úteis; a abordagem a ser usada depende principalmente das suas exigências de reprodução. Por exemplo, no segundo caso, você poderia gravar o áudio continuamente. Além disso, ambos os arquivos teriam aproximadamente o mesmo tamanho.
Parâmetros
theCamera:Camera — A origem da transmissão de vídeo. Os valores válidos são um objeto Camera (que inicia a captura do vídeo) e null . Se você transmitir null , o Flash Player interromperá a captura do vídeo e todos os parâmetros adicionais despachados serão ignorados.
| |
snapshotMilliseconds:int (default = -1 ) — Especifica se o fluxo de vídeo é contínuo, um quadro simples ou uma série de quadros simples usados para criar a fotografia de lapso temporal.
|
close | () | método |
public function close():void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Para a reprodução de todos os dados no fluxo, define a propriedade time
como 0 e disponibiliza o fluxo para outro uso. Esse método também exclui a cópia local de um arquivo de vídeo que foi baixado via HTTP. Embora o aplicativo exclua a cópia local do arquivo criado, uma cópia pode persistir no diretório de cache do navegador. Se for necessário impedir completamente o armazenamento em cache ou local do arquivo de vídeo, use o Flash Media Server.
Ao usar o Flash Media Server, esse método é chamado implicitamente quando você chama NetStream.play()
a partir de um fluxo de publicação ou NetStream.publish()
a partir de um fluxo de assinatura. Observe que:
-
Se
close()
for chamado a partir de um fluxo de publicação, o fluxo interromperá a publicação e o publicador poderá usá-lo para outras finalidades. Os assinantes deixam de receber o conteúdo que estava sendo publicado no fluxo, já que a publicação foi interrompida. -
Se
close()
for chamado a partir de um fluxo de inscrição, o fluxo interromperá a reprodução para o assinante, que poderá usá-lo para outras finalidades. Os outros assinantes não serão afetados. -
Usando
flash.net.NetStream.play(false)
, é possível interromper a reprodução de um fluxo de inscrição sem fechá-lo ou alterar o seu tipo.
Elementos da API relacionados
dispose | () | método |
public function dispose():void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 3.0 |
As versões de todos os recursos são mantidas pelo objeto NetStream.
O método dispose()
é semelhante ao método close
. A diferença principal entre os dois métodos é que dispose()
libera a memória usada para exibir o quadro de vídeo atual. Se aquele quadro estiver sendo exibido atualmente na tela, a exibição ficará em em branco. O método close()
não deixa a exibição ficar em branco porque não libera esta memória.
onPeerConnect | () | método |
public function onPeerConnect(subscriber:NetStream):Boolean
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Chamado sempre que um fluxo de publicação de mesmo nível corresponder a um fluxo de assinatura de mesmo nível. Antes de o assinante conectar-se com o editor, chame esse método para permitir que o código ActionScript tenha controle fino de acesso da publicação entre pares de mesmo nível. O seguinte código mostra um exemplo de como criar uma função de retorno de chamada para esse método:
var c:Object = new Object; c.onPeerConnect = function(subscriber:NetStream):Boolean { if (accept) return true; else return false; }; m_netStream.client = c;
Se um editor de mesmo nível não implementar esse método, todos de mesmo nível poderão reproduzir qualquer conteúdo publicado.
Parâmetros
subscriber:NetStream |
Boolean |
pause | () | método |
public function pause():void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Pausa a reprodução de um fluxo de vídeo. Chamar esse método não terá efeito se o vídeo já estiver pausado. Para reiniciar a reprodução depois de pausar um vídeo, chame resume()
. Para alternar entre a pausa e a reprodução (pausando primeiro o vídeo e reiniciando em seguida), chame togglePause()
.
Ao começar com o Flash Player 9.0.115.0, o Flash Player não limpa mais o buffer quando o NetStream.pause()
é chamado. Este comportamento é chamado de "pausa inteligente". Antes do Flash Player 9.0.115.0, o Flash Player aguardava o preenchimento do buffer antes de reiniciar a reprodução, o que normalmente causava um atraso.
Note: para garantir a compatibilidade com versões anteriores, o evento "NetStream.Buffer.Flush"
(consulte a propriedade NetStatusEvent.info
) ainda dispara, embora o servidor não libere o buffer.
Para uma única pausa, a propriedade NetStream.bufferLength
tem um limite de 60 segundos ou duas vezes o valor de NetStream.bufferTime
, que é superior independentemente do valor que seja. Por exemplo, se o bufferTime
for 20 segundos, o Flash Player armazenará em buffer até que o valor de NetStream.bufferLength
seja superior ao valor de 20*2 (40) ou 60, e, neste caso, armazenará em buffer até que bufferLength
seja 60. Se o bufferTime
for de 40 segundos, o Flash Player armazenará em buffer até que o valor de bufferLength
seja superior a 40*2 (80) ou 60, e, neste caso, armazenará até que o valor de bufferLength
seja 80 segundos.
A propriedade bufferLength
também possui um limite absoluto. Se qualquer chamada para pause()
fizer com que o valor de bufferLength
aumente para mais de 600 segundos ou o valor de bufferTime
* 2, sendo superior independentemente de qual seja, o Flash Player esvaziará o buffer e redefinirá bufferLength
para 0. Por exemplo, se bufferTime
for 120 seconds, o Flash Player esvaziará o buffer se o valor de bufferLength
atingir 600 segundos. Se bufferTime
for 360 segundos, o Flash Player esvaziará o buffer se bufferLength
atingir 720 segundos.
Dica: você pode usar NetStream.pause()
em código para armazenar os dados em buffer enquanto os visualizadores observam um comercial, por exemplo, e depois soltam o pause no início do vídeo principal.
Elementos da API relacionados
play | () | método |
public function play(... arguments):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Reproduz um arquivo de mídia a partir de um diretório local ou de um servidor web; executa um arquivo de mídia ou um fluxo ao vivo a partir do Flash Media Server. Envia um objetoNetStatusEvent
para reportar mensagens de status e de erro.
Para obter mais informações sobre codecs e formatos de arquivos suportados, consulte o seguinte:
- documentação do Flash Midia Server
- Exploring Flash Player support for high-definition H.264 video and AAC audio
- documentos de especificação aberta FLV/F4V
Workflow para reproduzir um arquivo ou um fluxo contínuo ao vivo
- Criar um objeto Video que exibe o vídeo a chamada
addChild()
para adicioná-lo ao palco. Crie um objeto NetConnection object e chame
NetConnection.connect()
.Para reproduzir um arquivo de um diretório local ou servidor web, envie null.
Para reproduzir um arquivo gravado ou um fluxo contínuo ao vivo a partir do Flash Media Server, envie o URI de um aplicativo Flash Media Server.
- Chamar o método
addEventListener()
do objeto NetConnection para escutar o eventonetStatus
(NetStatusEvent.NET_STATUS
). - No
"NetConnection.Connect.Success"
, crie um objeto NetStream e envie o objeto NetConnection para o construtor. - Chamar o método
attachNetStream()
do objeto Viceo e passar o objeto NetStream. Chame o método
play()
do objeto NetStream.Para exibir um fluxo contínuo ao vivo, envie o nome do fluxo contínuo despachado para o método
NetStream.publish()
.Para reproduzir um arquivo gravado, envie o nome do arquivo.
Observação: Como prática recomendada, sempre adicione o objeto Video ao palco, em seguida, anexe o NetStream a ele e chame o método play()
do objeto NetStream.
Ativam o Modo de Geração de Dados
Chame play(null)
para habilitar o "Modo de Geração de Dados". Neste modo, invoque appendBytes()
para enviar dados ao NetStream. Use o Modo de Geração de Dados para executar o fluxo do conteúdo sobre HTTP do Módulo de Origem de Fluxo Contínuo Dinâmico HTTP do Adobe em um Servidor HTTP Apache. Diferentemente do carregamento progressivo, o Fluxo Contínuo Dinâmico HTTP permite aos clientes buscar rapidamente qualquer ponto em um arquivo. A Estrutura de Mídia de Origem Aberta (OSMF) suporta o Fluxo Contínuo Dinâmico HTTP para os fluxos de voz sobre dados (vod) e ao vivo. Para exemplos de como o uso Modo de Geração de Dados de NetStream, carregue o OSMF origem. Para obter mais informações sobre o Escorrimento Dinâmico HTTP, ver HTTP Escorrimento Dinâmico.
Se você usar este método sem o Flash Media Server, haverá considerações de segurança. Um arquivo na caixa de proteção local confiável ou local com rede pode carregar e reproduzir um arquivo de vídeo a partir da caixa de proteção remota, mas não pode acessar os dados do arquivo remoto sem permissão explícita no formato de um arquivo de diretivas de URL. Além disso, você pode impedir o arquivo SWF em execução no Flash Player de usar esse método configurando o parâmetro allowNetworking
das tags object
e embed
na página HTML com o conteúdo SWF. Para obter mais informações relacionadas à segurança, consulte o tópico do Centro dos desenvolvedores do Flash Player Security.
Parâmetros
... arguments — Jogo um arquivo local
O local de um arquivo de mídia. O argumento pode ser uma string, uma propriedade Jogo um arquivo de Flash Media Server
É possível reproduzir os formatos de arquivo descritos na tabela a seguir. A sintaxe pode ser diferente, dependendo do formato de arquivo.
Ativam o Modo de Geração de Dados
Ativar "o Modo de Geração de Dados", passam o valor Considerações especiais para vídeos H.264 no AIR 3.0 para iOS Para vídeos H.264, as APIs do iOS para a reprodução de vídeo aceitam somente um URL como arquivo ou fluxo. Não é possível transmitir em um buffer de dados de vídeo H264 para ser decodificado. Dependendo da origem do vídeo, transmita o argumento apropriado a
|
Eventos
status: — Despachado ao tentar reproduzir o conteúdo criptografado com DRM (gerenciamento digital dos direitos). O valor da propriedade code é "DRM.encryptedFLV" .
|
Lança
SecurityError — Arquivos SWF locais não confiáveis não podem se comunicar com a Internet. Você pode conciliar essa restrição reclassificando o arquivo SWF como local com rede ou confiável.
| |
ArgumentError — Pelo menos um parâmetro deve ser especificado.
| |
Error — O objeto NetStream é inválido. Isso pode ser devido a um NetConnection com falha.
|
Elementos da API relacionados
Exemplo ( Como usar este exemplo )
play()
deve especificar uma extensão de nome de arquivo.
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 | () | método |
public function play2(param:NetStreamPlayOptions):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Alterna perfeitamente entre arquivos com diversas taxas de bits e permite que um NetStream retome quando uma conexão é perdida e reconectada.
Esse método é uma versão aprimorada de NetStream.play()
. Da mesma forma que o método play()
, o play2()
inicia a reprodução de arquivo de mídia ou enfileira arquivos de mídia para criar uma lista de reprodução. Quando é usado com o Flash Media Server, ele pode também solicitar ao servidor que passe para um outro arquivo de mídia. A transição ocorre diretamente no aplicativo cliente. Os seguintes recursos usam a alteração de fluxo play2()
:
Fluxo dinâmico
O fluxo dinâmico (com suporte no Flash Media Server 3.5 e posteriores) permite que você forneça um fluxo codificado em diversas taxas de bits. Como a mudança de condições de rede de um espectador, eles recebem o bitrate que fornece a melhor experiência de visualização. Use a classe NetStreamInfo
para monitorar condições de rede e alternar fluxos com base nos dados. Você também pode alternar fluxos para clientes com recursos diferentes. Para obter mais informações, consulte "Dynamic streaming" no "Adobe Flash Media Server Developer’s Guide".
A Adobe criou uma classe ActionScript personalizada chamada DynamicStream que estende a classe NetStream. Você pode usar a classe DynamicStream para implementar um fluxo contínuo dinâmico em um aplicativo, e não gravar um código próprio para detectar condições de rede. Mesmo que você opte por gravar o código de fluxo contínuo dinâmico, use a classe DynamicStream para ver uma implementação em funcionamento. Faça download da classe e da documentação de classe na página ferramentas e downloads do Flash Media Server.
Reconexão de fluxo
A reconexão de fluxo (com suporte no Flash Media Server 3.5.3 e posteriores) permite que os usuários vivenciem a mídia ininterrupta, mesmo quando perdem a conexão. A mídia usa o buffer para reproduzir enquanto a sua lógica ActionScript se reconecta ao Flash Media Server. Depois da reconexão, chame NetStream.attach()
para usar o mesmo objeto NetStream com o novo NetConnection. Use APIs NetStream.attach()
, NetStreamPlayTransitions. RESUME
e NetStreamPlayTrasitions. APPEND_AND_WAIT
para reconectar um fluxo. Para obter mais informações, consulte a documentação do Flash Media Server 3.5.3.
Parâmetros
param:NetStreamPlayOptions |
Elementos da API relacionados
preloadEmbeddedData | () | método |
public function preloadEmbeddedData(param:NetStreamPlayOptions):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.5, Flash Lite 4 |
Extrai os metadados DRM de um arquivo de mídia armazenado localmente.
Use preloadEmbeddedMetaData()
como a primeira etapa no download e no armazenamento em cache dos comprovantes do DRM necessários à reprodução off-line. Quando metadados do DRM incorporados são detectados em um arquivo de mídia, um objeto DRMContentData é passado para a função onDRMContentData
do cliente NetStream. Esse objeto DRMContentData contém as informações necessárias à obtenção do comprovante obrigatório para reproduzir o conteúdo. Passe DRMContentDataObject para o método loadVoucher()
de DRMManager a fim de baixar o comprovante.
Entre as etapas de pré-carregamento de um comprovante de DRM:
-
Crie um novo objeto NetStream para pré-carregar os metadados.
- Atribua uma função de retorno de chamada à propriedade
onDRMContentData
de NetStreamclient
. - Crie um novo objeto NetStreamPlayOptions e defina a propriedade
streamName
como a string da URL do arquivo de vídeo local. - Chame
preloadEmbeddedMetadata()
, passando o objeto NetStreamPlayOptions. - Em resposta ao retorno de chamada
onDRMContentData
, chame o métodoloadVoucher()
de DRMManager, passando o objeto DRMContentData. Caso a propriedadeauthenticationMethod
do objeto DRMContentData tenha o valoruserNameAndPassWord
, você deverá autenticar o usuário no servidor de direitos da mídia antes de carregar o voucher. - Feche o NetStream usado para pré-carregar.
Observação: Se você usar o mesmo objeto NetStream tanto para pré-carregar metadados quanto para reproduzir conteúdo, precisará aguardar a chamada onPlayStatus
gerada pela operação de pré-carregamento antes de iniciar a reprodução.
Os comprovantes baixados são armazenados em um cache local. A reprodução de conteúdo on-line também baixa e armazena comprovantes em cache. Quando um arquivo de conteúdo protegido por DRM é exibido, um comprovante armazenado em cache é recuperado no armazenamento local automaticamente. Use o DRMManager para gerenciar o cache do comprovante.
Observações: não há suporte para o pré-carregamento de metadados do DRM por meio das conexões HTTP, HTTPS ou RTMP. Você só pode pré-carregar metadados de arquivos no sistema de arquivos.
Parâmetros
param:NetStreamPlayOptions — NetStreamPlayOptions que descreve as opções a serem usadas durante o processamento do arquivo de conteúdo.
|
Elementos da API relacionados
publish | () | método |
public function publish(name:String = null, type:String = null):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9 |
Envia fluxo contínuo de áudio, vídeo e mensagens de texto de um cliente para o Flash Media Server, opcionalmente gravando o fluxo contínuo durante a transmissão. Este método despacha um objeto de NetStatusEvent com informações sobre o fluxo contínuo. Antes de chamar NetStream.publish()
, capture o evento "NetConnection.Connect.Success"
para verificar se o aplicativo se conectou com sucesso ao Flash Media Server.
Enquanto publica, você pode gravar arquivos em formato FLV ou F4V. Caso grave um arquivo em formato F4V, você deverá usar uma ferramenta niveladora para editar ou reproduzir o arquivo em outro aplicativo. Para baixar a ferramenta, visite www.adobe.com/go/fms_tools_br.
Nota: não use este método para reproduzir um fluxo contínuo. Par reproduzir um fluxo, chame o método NetStream.play()
.
Workflow para publicar um fluxo contínuo
- Crie um objeto NetConnection object e chame
NetConnection.connect()
. - Chame
NetConnection.addEventListener()
para ouvir eventos listen for NetStatusEvent. - No evento
"NetConnection.Connect.Success"
, crie um objeto NetStream e envie o objeto NetConnection para o construtor. - Para capturar o áudio e o vídeo, chame o método
NetStream.attachAudio()
e o métodoNetStream.attachCamera()
. - Para publicar um fluxo, chame o método
NetStream.publish()
. Também é possível gravar os dados à medida que você os publica, para que os usuários possam reproduzi-los posteriormente.
Nota: um NetStream pode publicar ou reproduzir um fluxo, mas não pode fazer as duas coisas. Para publicar um fluxo contínuo e exibir o playback a partir do servidor, crie dois objetos NetStream. Você pode enviar vários objeto NetStream em um objeto NetConnection.
Quando o Flash Media Server grava um fluxo contínuo, ele cria um arquivo. Por padrão, o servidor cria um diretório com o nome da instância do aplicativo despachado para NetConnection.connect()
e armazena o arquivo no diretório. Por exemplo, o seguinte código se conecta à instância padrão do ao aplicativo "lectureseries" e registra um fluxo contínuo chamado "lecture". O arquivo "lecture.flv" é registrado em 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"); } }
O exemplo a seguir conecta a uma sessão "monday" do mesmo aplicativo. O arquivo "lecture.flv" é registrado em directory/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"); } }
Parâmetros
name:String (default = null ) — Uma string que identifica o fluxo. Os clientes que se inscreverem nesse fluxo contínuo deverão transmitir esse nome quando chamarem NetStream.play() . Não insira "/" após o nome do fluxo. Por exemplo, não use o nome de fluxo "bolero/" .
Você pode gravar arquivos nos formatos descritos na tabela a seguir (não é possível usar
| |||||||||||||
type:String (default = null ) — Uma string que especifica como publicar o fluxo. Os valores válidos são "record ", "append ", "appendWithGap " e "live ". O valor padrão é "live ".
|
Elementos da API relacionados
Exemplo ( Como usar este exemplo )
Para executar este exemplo, você precisa conectar uma câmera ao seu computador. Você também precisa adicionar um componente de Botão e um componente de Rótulo à Biblioteca.
O aplicativo tem um botão que publica um fluxo (envia-o ao Flash Media Server) só depois que o aplicativo se conectar ao servidor com sucesso. O aplicativo repete o fluxo do servidor só depois que a corrente é publicada com sucesso. O NetStatusEvent
retorna um objeto informações
com uma propriedade code
que especifica estes casos. A função netStatusHandler
processa estes eventos para as classes NetConnection e 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 | () | método |
public function receiveAudio(flag:Boolean):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Especifica se o áudio de entrada é reproduzido no fluxo. Esse método fica disponível somente para clientes inscritos no fluxo especificado. Não está disponível ao publicador do fluxo. Chame este método antes ou depois de chamar o método NetStream.play()
. Por exemplo, anexe este método a um botão para permitir aos usuários silenciar e não silenciar o áudio. Use este método somente em fluxos unicast reproduzidos a partir do Flash Media Server. Este método não funciona em fluxos RTMFP multicast ou quando o método NetStream.appendBytes()
é usado.
Parâmetros
flag:Boolean — Especifica se o áudio de entrada é reproduzido no fluxo (true ) ou não (false ). O valor padrão é true . Se o fluxo especificado contiver somente dados de áudio, NetStream.time deixará de ser incrementado quando você passar falso .
|
receiveVideo | () | método |
public function receiveVideo(flag:Boolean):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Especifica se o vídeo recebido é reproduzido no fluxo. Esse método fica disponível somente para clientes inscritos no fluxo especificado. Não está disponível ao publicador do fluxo. Chame este método antes ou depois de chamar o método NetStream.play()
. Por exemplo, anexe este método a um botão para permitir aos usuários mostrar e ocultar o vídeo. Use este método somente em fluxos unicast reproduzidos a partir do Flash Media Server. Este método não funciona em fluxos RTMFP multicast nem quando o método NetStream.appendBytes()
é usado.
Parâmetros
flag:Boolean — Especifica se o vídeo recebido é reproduzido neste fluxo (true ) ou não (false ). O valor padrão é true . Se o fluxo especificado contiver somente dados de vídeo, NetStream.time deixará de ser incrementado quando você passar false .
|
receiveVideoFPS | () | método |
public function receiveVideoFPS(FPS:Number):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Especifica a taxa de quadros do vídeo recebido. Esse método fica disponível somente para clientes inscritos no fluxo especificado. Não está disponível ao publicador do fluxo. Chame este método antes ou depois de chamar o método NetStream.play()
. Por exemplo, chame este método para permitir aos usuários definir a taxa de quadros do vídeo. Para determinar a taxa de quadros atual, use NetStream.currentFPS
. Para parar de receber vídeo, passe 0
.
Quando você passa um valor ao parâmetro FPS para limitar a taxa de quadros do vídeo, o Flash Media Server tenta reduzir a taxa de quadros, ao mesmo tempo que preserva a integridade do vídeo. Entre cada dois quadros-chave, o servidor envia o número mínimo de quadros necessário para satisfazer a taxa desejada. Observe que os Quadros I (ou quadros intermediários) devem ser despachados contíguamente. Caso contrário, o vídeo é corrompido. Portanto, o número desejado de quadros é despachado imediatamente e de modo contíguo de acordo com um quadro-chave. Como os quadros não são distribuídos de maneira uniforme, o movimento parece mais suave em segmentos pontuados por paradas.
Use este método somente em fluxos unicast reproduzidos a partir do Flash Media Server. Este método não funciona em fluxos RTMFP multicast ou quando o método NetStream.appendBytes()
é usado.
Parâmetros
FPS:Number — Especifica a taxa de quadros por segundos com a qual o vídeo recebido será reproduzido.
|
resetDRMVouchers | () | método |
public static function resetDRMVouchers():void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 11.8, Flash Lite 4 |
Em aplicativos AIR, isso exclui todos os dados do comprovante do gerenciamento de direitos digitais (DRM) armazenados localmente. Em aplicativos baseados no navegador, isso só está disponível nos erros 3322 e se comportam conforme o painel Ajustes de reprodução de conteúdo protegido.
O aplicativo deve baixar novamente todos os comprovantes obrigatórios no servidor dos direitos de mídia para que o usuário possa acessar o conteúdo protegido. Chamar essa função é equivalente a chamar a função resetDRMVouchers()
do objeto DRMManager.
Lança
IOError — O comprovante não pode ser excluído.
|
Elementos da API relacionados
Exemplo ( Como usar este exemplo )
NetStream.resetDRMVouchers();
resume | () | método |
public function resume():void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Reinicia a reprodução de um fluxo de vídeo pausado. Se o vídeo já estiver em reprodução, chamar esse método não terá efeito.
Elementos da API relacionados
seek | () | método |
public function seek(offset:Number):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Busca o quadro-chave (também chamado de quadro em I na indústria de vídeo) mais próximo à localização especificada. O quadro-chave é inserido em um deslocamento, em segundos, a partir do início do fluxo.
Os fluxos de vídeo são geralmente codificados com dois tipos de quadros: quadros-chave (ou quadros em I) e quadros em P. Um quadro-chave contém uma imagem inteira, enquanto um quadro em P é um quadro intermediário que fornece informações de vídeo adicionais entre os quadros-chave. Em geral, um fluxo de vídeo tem um quadro-chave a cada 10 a 50 quadros.
O Flash Media Server tem vários tipos de comportamento de buscam: busca avançada e busca inteligente.
Busca avançada
A busca avançada é ativada por padrão. Para desativar a busca avançada, no Flash Media Server, defina o elemento EnhancedSeek
no arquivo de configuração Application.xml
para false
.
Se a busca avançada estiver ativada, o servidor gerará um novo quadro-chave em offset
com base no quadro-chave anterior e em quaisquer quadros em P. Entretanto, gerar quadros-chave criauma alta carga de processamento no servidor e poderá haver distorção no quadro-chave gerado. Se o codec de vídeo for On2, o quadro-chave antes do ponto de busca e todos os quadros em P entre esse quadro-chave e o ponto de busca serão despachados ao cliente.
Se a busca avançada estiver desativada, o servidor inicia o fluxo do quadro-chave mais próximo. Por exemplo, suponha que um vídeo tenha quadros-chaves em 0 segundos e 10 segundos. Uma busca de 4 segundos faz que a reprodução inicie em 4 segundos usando o quadro- chave em 0 segundos. O vídeo permanece congelado até atingir o próximo quadro-chave em 10 segundos. Para ter uma experiência de busca melhor, é necessário reduzir o intervalo de quadros-chave. No modo de busca normal, não é possível iniciar o vídeo em um ponto entre os quadros-chave.
Busca inteligente
Para ativar a busca inteligente, defina NetStream.inBufferSeek
como true
.
A busca inteligente permite que o Flash Player busque dentro de um buffer anterior e um buffer posterior existentes. Quando a busca inteligente é desativada, cada vez que seek()
é chamado Flash Player limpa o buffer e solicita dados do servidor. Para obter mais informações, consulte NetStream.inBufferSeek
.
Busca no Modo de Geração de Dados
Quando você invoca seek()
em um NetStream em Modo de Geração de Dados, todos os transmitidos a appendBytes()
são descartados (não armazenados no buffer, acumulados no FIFO de mensagem parcial ou analisados para os pontos de busca) até que você invoque appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN)
ouappendBytesActi
para reiniciar o analisador. Para informações sobre o Modo de Geração de Dados, ver NetStream.play()
.
Parâmetros
offset:Number — O valor de tempo aproximado, em segundos, para mover para um arquivo de vídeo. Com o Flash Media Server, se <EnhancedSeek> estiver definido como true no arquivo de configuração Application.xml (o que ocorre por padrão), o servidor gerará um quadro-chave em offset .
|
Elementos da API relacionados
send | () | método |
public function send(handlerName:String, ... arguments):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9 |
Envia uma mensagem em um fluxo publicado a todos os clientes assinantes. Esse método apenas está disponível ao publicador do fluxo especificado. Este método está disponível apenas para a utilização com o Flash Media Server. Para processar e responder a essa mensagem, crie um manipulador no objeto NetStream
; por exemplo, ns.HandlerName
.
O Flash Player ou o AIR não serializa métodos ou seus dados, variáveis de protótipo de objetos ou variáveis não enumeráveis. Para objetos de exibição, o Flash Player ou o AIR serializa o caminho, mas nenhum dos dados.
Você pode chamar o método send()
para adicionar quadros-chave de dados a um fluxo ao vivo despachado ao Flash Media Server. Um quadro-chave de dados é uma mensagem que um publicador adiciona a um fluxo ao vivo. Quadros-chave de dados são geralmente usados para adicionar metadados a um fluxo ao vivo antes de os dados serem capturados para esse fluxo a partir de uma câmera ou microfone. Um publicador pode adicionar um quadro-chave de dados a qualquer momento enquanto o fluxo ao vivo estiver sendo publicado. O quadro-chave de dados será salvo na memória do servidor pelo tempo em que o publicador estiver conectado ao servidor.
Os clientes que estiverem inscritos no fluxo ao vivo antes da adição de um quadro-chave de dados receberão esse quadro-chave assim que ele foi adicionado. Os clientes que se inscreverem no fluxo ao vivo após a adição do quadro-chave de dados receberão esse quadro-chave na ocasião da assinatura.
Para adicionar um quadro-chave de metadados a um fluxo ao vivo despachado ao Flash Media Server, use @setDataFrame
como nome do manipulador, seguido de dois argumentos adicionais, por exemplo:
var ns:NetStream = new NetStream(nc); ns.send("@setDataFrame", "onMetaData", metaData);
O argumento @setDataFrame
refere-se a um manipulador especial incorporado ao Flash Media Server. O argumento onMetaData
corresponde ao nome de uma função de retorno de chamada no seu aplicativo cliente que monitora o evento onMetaData
e recupera os metadados. O terceiro item, metaData
, é uma instância de Object
ou Array
com propriedades que definem os valores de metadados.
Use @clearDataFrame
para limpar um quadro-chave de metadados que já foi definido no fluxo:
ns.send("@clearDataFrame", "onMetaData");
Parâmetros
handlerName:String — A mensagem a ser enviada; também o nome do manipulador ActionScript que receberá essa mensagem. O nome do manipulador pode ter profundidade de apenas um nível (ou seja, não pode estar no formato pai/filho) e é relativo ao objeto de fluxo. Não use um termo reservado para um nomes de manipulador. Por exemplo, usar "close " como nome de manipulador faz o método falhar. Com o Flash Media Server, use @setDataFrame para adicionar um quadro-chave de metadados a um fluxo ao vivo ou @clearDataFrame para remover um quadro-chave.
| |
... arguments — Argumentos opcionais que podem ser de qualquer tipo. Eles são serializados e despachados pela conexão, e o manipulador de recebimento os recebe na mesma ordem. Se um parâmetro for um objeto circular (por exemplo, uma lista vinculada circular), o serializador manipulará as referências corretamente. Com o Flash Media Server, se @setDataFrame for o primeiro argumento, use onMetaData como segundo argumento e, para o terceiro, transmita uma ocorrência de Object ou Array que tenha os metadados definidos como propriedades. Consulte Flash Media Server Developer Guide para obter uma lista de nomes de propriedade sugeridos. Com @clearDataFrame como primeiro argumento, use onMetaData como o segundo argumento, se um terceiro.
|
Elementos da API relacionados
Exemplo ( Como usar este exemplo )
NetStream
. Um é usado para publicar um fluxo ao vivo no servidor, enquanto o outro se inscreve no fluxo.
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
. O manipulador de eventos onMetaData
não é registrado com addEventListener()
, em vez disso é uma função de retorno de chamada denominada onMetaData
. Por exemplo:
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 | () | método |
public function setDRMAuthenticationCredentials(userName:String, password:String, type:String):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Lite 4 |
Define as credenciais de autenticação DRM necessárias para visualização do conteúdo
O método setDRMAuthenticationCredentials()
fornece credenciais compatíveis com aquelas conhecidas e aceitas pelo fornecedor de conteúdo ou servidor proxy. Essas credenciais são as mesmas usadas pelo usuário ao obter a permissão de visualização do conteúdo.
Parâmetros
userName:String — Uma credencial de nome de usuário válida.
| |
password:String — A credencial de senha correspondente ao nome de usuário fornecido.
| |
type:String — Uma string que especifica qual tipo de credenciais de autenticação são fornecidos. Os valores válidos são "drm" e "proxy" . O valor padrão é "drm" .
|
Elementos da API relacionados
step | () | método |
public function step(frames:int):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
As etapas avançam ou voltam o número especificado de quadros, relativo ao quadro atualmente exibido. Especifique um número positivo para avançar e um número negativo para voltar. Invoque este método para criar a funcionalidade avanço rápido preciso ou retrocesso rápido preciso.
Nota: Esse método não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Este método está disponível só quando o dado está correndo de Flash Media Server 3.5.3 ou mais alto e quando NetStream.inBufferSeek
é true
. Também, o quadro de destino deve estar no buffer. Por exemplo, se o quadro atualmente exibido for o quadro número 120 e você especificar um valor de 1.000, o método falhará se o quadro número 1.120 não estiver no buffer.
Este método é para ser usado com os métodos pause()
ou togglePause()
. Se você avançar 10 quadros para a frente ou para trás durante a reprodução sem fazer uma pausa, não poderá notar os passos ou eles parecerão um pulso aleatório. Igualmente, quando você chama pause()
ou togglePause
o áudio é suprimido.
Se a chamada de NetStream.step()
for bem sucedida, um NetStatusEvent será despachado com "NetStream.Step.Notify" como o valor da propriedade code
dos objetos de informações.
Parâmetros
frames:int |
Elementos da API relacionados
togglePause | () | método |
public function togglePause():void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Pausa ou reinicia a reprodução de um fluxo. Quando esse método for chamado pela primeira vez, ele irá pausar a reprodução, reiniciando-a na próxima vez. Esse método pode ser usado para permitir que os usuários pausem ou reiniciem a reprodução pressionando um único botão.
Elementos da API relacionados
asyncError | Evento |
flash.events.AsyncErrorEvent
propriedade AsyncErrorEvent.type =
flash.events.AsyncErrorEvent.ASYNC_ERROR
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Despachado quando uma exceção é lançada assincronamente – ou seja, a partir do código assíncrono nativo. Esse evento é despachado quando um servidor chama um método no cliente que não está definido.
A constanteAsyncErrorEvent.ASYNC_ERROR
define o valor da propriedade type
de um objeto de evento asyncError
.
Esse evento tem as seguintes propriedades:
Propriedade | Valor |
---|---|
bubbles | false |
cancelable | false ; não há comportamento padrão a ser cancelado. |
currentTarget | O objeto que está processando ativamente o objeto Event com um ouvinte de evento. |
target | O objeto que está enviando o evento. |
error | O erro que disparou o evento. |
Elementos da API relacionados
drmAuthenticate | Evento |
flash.events.DRMAuthenticateEvent
propriedade DRMAuthenticateEvent.type =
flash.events.DRMAuthenticateEvent.DRM_AUTHENTICATE
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Lite 4 |
Despachado quando um objeto NetStream tenta executar um conteúdo criptografado de gerenciamento digital dos direitos (DRM) que necessita de uma credencial de usuário antes de sua execução.
Nota: Esse evento não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Use o método setDRMAuthenticationCredentials()
do objeto NetStream para autenticar o usuário. Se a autenticação do usuário falhar, o aplicativo tentará a autenticação novamente e enviará um novo evento DRMAuthenticateEvent para o objeto NetStream.
DRMAuthenticateEvent.DRM_AUTHENTICATE
define o valor da propriedade type
de um objeto DRMAuthenticateEvent.
Esse evento tem as seguintes propriedades:
Propriedade | Valor |
---|---|
authenticationType | Indica se as credenciais fornecidas são para autenticação pelo Flash Media Rights Management Server (FMRMS) ou um servidor proxy. |
bubbles | false |
cancelable | false não há comportamento padrão a ser cancelado. |
cabeçalho | O cabeçalho do arquivo de conteúdo criptografado fornecido pelo servidor. |
netstream | O objeto NetStream que iniciou esse evento. |
passwordPrompt | Uma solicitação para a credencial de senha, fornecida pelo servidor. |
target | O objeto NetStream. |
urlPrompt | Uma solicitação para um URL a ser exibido, fornecido pelo servidor. |
usernamePrompt | Uma solicitação para a credencial de nome do usuário, fornecida pelo servidor. |
Elementos da API relacionados
drmError | Evento |
flash.events.DRMErrorEvent
propriedade DRMErrorEvent.type =
flash.events.DRMErrorEvent.DRM_ERROR
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 10.1, Flash Lite 4 |
Despachado quando um objeto NetStream encontra um erro relacionado ao DRM ao tentar executar o arquivo criptografado de gerenciamento digital dos direitos (DRM). Por exemplo, um objeto DRMErrorEvent é despachado quando a autorização do usuário falha. Talvez seja porque o usuário não adquiriu os direitos de visualização do conteúdo ou porque o fornecedor do conteúdo não oferece suporte ao aplicativo de visualização.
Nota: Esse evento não é suportado em vídeos H.264 no AIR 3.0 para iOS.
A constanteDRMErrorEvent.DRM_ERROR
define o valor da propriedade type
de um objeto de evento drmError
.
Esse evento tem as seguintes propriedades:
Propriedade | Valor |
---|---|
bubbles | false |
cancelable | false ; não há comportamento padrão a ser cancelado. |
errorID | Um código de erro numérico atribuído ao problema. |
subErrorID | Um código de erro que indica informações mais detalhadas sobre o problema subjacente. |
target | O objeto NetStream. |
Elementos da API relacionados
drmStatus | Evento |
flash.events.DRMStatusEvent
propriedade DRMStatusEvent.type =
flash.events.DRMStatusEvent.DRM_STATUS
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 10.1, Flash Lite 4 |
Despachado quando o conteúdo DRM (digital rights management - gerenciamento digital dos direitos) criptografado inicia a execução (quando o usuário for autenticado e autorizado a executar o conteúdo).
Nota: Esse evento não é suportado em vídeos H.264 no AIR 3.0 para iOS.
O objeto de DRMStatusEvent contém informações relacionadas ao voucher, como se o conteúdo está disponível off-line ou quando o voucher vence e os usuários não podem exibir mais o conteúdo.
A constanteDRMStatusEvent.DRM_STATUS
define o valor propriedade type
de um objeto de evento drmStatus
.
Esse evento tem as seguintes propriedades:
Propriedade | Valor |
---|---|
bubbles | false |
cancelable | false ; não há comportamento padrão a ser cancelado. |
detail | A string que explica o contexto do evento de status. |
isAnonymous | Indica se o conteúdo, protegido pela criptografia do DRM, está disponível sem precisar que o usuário forneça as credenciais de autenticação. |
isAvailableOffline | Indica se o conteúdo, protegido pela criptografia do DRM, está disponível offline. |
offlineLeasePeriod | O número de dias remanescentes em que o conteúdo pode ser exibido offline. |
diretrizes | Um objeto personalizado do evento de status DRM. |
target | O objeto NetStream. |
voucherEndDate | A data absoluta em que o voucher vence e o conteúdo não pode mais ser exibido pelos usuários |
contentData | DRMContentData de conteúdo |
comprovante | O objeto DRMVoucher do conteúdo. |
isLocal | Indica se o conteúdo é armazenado no sistema de arquivos local |
Elementos da API relacionados
ioError | Evento |
flash.events.IOErrorEvent
propriedade IOErrorEvent.type =
flash.events.IOErrorEvent.IO_ERROR
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Despachado quando ocorre um erro de entrada ou saída que resulta na falha de uma operação de rede.
Define o valor da propriedadetype
de um objeto de evento ioError
.
Esse evento tem as seguintes propriedades:
Propriedade | Valor |
---|---|
bubbles | false |
cancelable | false ; não há comportamento padrão a ser cancelado. |
currentTarget | O objeto que está processando ativamente o objeto Event com um ouvinte de evento. |
errorID | Um número de referência associado ao erro específico (somente AIR). |
target | O objeto de rede que está recebendo o erro de entrada/saída. |
text | Texto a ser exibido como uma mensagem de erro. |
mediaTypeData | Evento |
flash.events.NetDataEvent
propriedade NetDataEvent.type =
flash.events.NetDataEvent
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.3, AIR 2.7 |
Despachado ao reproduzir conteúdo de vídeo e quando certos tipos de mensagens são processados.
Um NetDataEvent é despachado para as seguintes mensagens:
- onCuePoint
- onImageData
- onMetaData
- onPlayStatus (para código NetStream.Play.Complete)
- onTextData
- onXMPData
Observação: este evento não é despachado pelo conteúdo em execução no Flash Player no navegador do sistema operacional de tablet Android ou Blackberry ou por conteúdo em execução no AIR no iOS.
netStatus | Evento |
flash.events.NetStatusEvent
propriedade NetStatusEvent.type =
flash.events.NetStatusEvent.NET_STATUS
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Despachado quando um objeto NetStream está relatando seu status ou uma condição de erro. O evento netStatus
contém uma propriedade info
, que é um objeto de informações contendo informações específicas sobre esse evento; por exemplo, se uma tentativa de conexão foi bem-sucedida ou se falhou.
type
de um objeto de evento netStatus
.
Esse evento tem as seguintes propriedades:
Propriedade | Valor |
---|---|
bubbles | false |
cancelable | false ; não há comportamento padrão a ser cancelado. |
currentTarget | O objeto que está processando ativamente o objeto Event com um ouvinte de evento. |
info | Um objeto com propriedades que descrevem o status ou condição de erro do objeto. |
target | O objeto NetConnection ou o NetStream reportando o respectivo status. |
Elementos da API relacionados
onCuePoint | Evento |
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Estabelece um ouvinte de resposta quando se chega a um ponto de sinalização incorporado durante a reprodução de um arquivo de vídeo. Você pode usar o ouvinte para ativar ações no código quando o vídeo atingir um ponto de sinalização específico, o que permite sincronizar outras ações do aplicativo com eventos de reprodução de vídeo. Para obter informações sobre formatos de arquivo de vídeo apoiados pelo Servidor de Flash Media, visite www.adobe.com/go/learn_fms_fileformats_br .
Nota: Esse evento não é suportado em vídeos H.264 no AIR 3.0 para iOS.
onCuePoint
é, na verdade, uma propriedade do objeto NetStream.client
. A propriedade está listada na seção Eventos porque responde a um evento de dados durante a transmissão de mídia, usando o Flash Media Server ou durante a reprodução do arquivo FLV. Para obter mais informações, consulte a descrição da classe NetStream. Você não pode usar o método addEventListener()
, ou qualquer outro método EventDispatcher, para ouvir ou processar onCuePoint
como evento. Defina uma função de retorno de chamada e anexe-a a um dos seguintes objetos:
- O objeto ao qual a propriedade
client
de uma ocorrência de NetStream faz referência. - Uma ocorrência de uma subclasse NetStream. NetStream é uma classe selada; ou seja, propriedades ou métodos não podem ser adicionados a um objeto NetStream em tempo de execução. Crie uma subclasse do NetStream e defina seu manipulador de eventos na subclasse. Também é possível tornar a subclasse dinâmica e adicionar a função de controlador de eventos a uma instância da subclasse.
O ouvinte de evento associado é acionado depois de uma chamada para o método NetStream.play()
, mas antes do avanço do indicador de reprodução do vídeo.
Você pode incorporar os seguintes tipos de pontos de sinalização em um arquivo vídeo:
- Um ponto de sinalização de navegação especifica um quadro-chave no arquivo de vídeo e a propriedade
time
desse ponto de sinalização corresponde a esse quadro-chave exato. Pontos de sinalização de navegação costumam ser usados como marcadores ou pontos de entrada para permitir que os usuários naveguem pelo arquivo de vídeo. - Um ponto de sinalização de evento especifica uma hora. A hora pode ou pode não equivaler a um quadro chave específico. Um ponto de sinalização de evento geralmente representa um momento no vídeo quando ocorre algo que poderia ser usado para acionar outros eventos do aplicativo.
O objeto de evento onCuePoint
tem as seguintes propriedades:
Propriedade | Descrição |
---|---|
name | O nome dado ao ponto de sinalização quando ele foi incorporado ao arquivo de vídeo. |
parameters | Uma matriz de associação das strings de nome e par de valores especificada para este ponto de sinalização. Qualquer string válida pode ser usada para o nome ou o valor do parâmetro. |
time | O tempo em segundos no qual o ponto de sinalização ocorreu no arquivo de vídeo durante a reprodução. |
tipo | O tipo de ponto de sinalização que foi atingido, seja de navegação ou evento. |
Você pode definir pontos de sinalização em um arquivo de vídeo quando codificar esse arquivo pela primeira vez ou quando importar um videoclipe na ferramenta de autoria do Flash usando o Assistente de importação de vídeo.
O evento onMetaData
também recupera informações sobre os pontos de sinalização em um arquivo de vídeo. Entretanto, o evento onMetaData
obtém informações sobre todos os pontos de sinalização antes que o vídeo comece a ser reproduzido. O evento onCuePoint
recebe informações sobre um único ponto de sinalização no momento especificado para esse ponto de sinalização durante a reprodução.
Em geral, para que o seu código responda a um ponto de sinalização específico no momento em que ele ocorrer, use o evento onCuePoint
para acionar uma ação no código.
Você pode usar a lista de pontos de sinalização fornecida ao evento onMetaData
para permitir que o usuário inicie a reprodução do vídeo em pontos predefinidos no fluxo de vídeo. Transmita o valor da propriedade time
do ponto de sinalização ao método NetStream.seek()
para reproduzir o vídeo a partir desse ponto de sinalização.
Exemplo ( Como usar este exemplo )
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); }
Elementos da API relacionados
onDRMContentData | Evento |
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.5, Flash Lite 4 |
Estabelece um ouvinte para responder quando o AIR extrai metadados de conteúdo DRM incorporados a um arquivo de mídia.
Nota: Esse evento não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Um objeto DRMContentData contém as informações necessárias à obtenção de um comprovante obrigatório para reproduzir um arquivo de mídia protegido por DRM. Use a classe DRMManager para baixar o comprovante com essas informações.
onDRMContentData
é uma propriedade do objeto NetStream.client
. Esta propriedade não está listada na seção Eventos porque responde a um evento de dados durante o pré-carregamento de dados incorporados de um arquivo de mídia local. Para obter mais informações, consulte a descrição da classe NetStream. Você não pode usar o método addEventListener()
, ou qualquer outro método EventDispatcher, para ouvir ou processar onDRMContentData
como evento. Em vez disso, você deve definir uma única função de retorno de chamada e anexá-la diretamente a um dos seguintes objetos:
- O objeto ao qual a propriedade
client
de uma ocorrência de NetStream faz referência. - Uma ocorrência de uma subclasse NetStream. NetStream é uma classe selada; ou seja, propriedades ou métodos não podem ser adicionados a um objeto NetStream em tempo de execução. Entretanto, você pode criar uma subclasse de NetStream e definir o seu manipulador de eventos na subclasse ou torná-la dinâmica e adicionar a função do manipulador de eventos a uma ocorrência dessa subclasse.
Elementos da API relacionados
onImageData | Evento |
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9.0.115.0, Flash Lite 4 |
Estabelece um ouvinte de resposta quando o Flash Player recebe dados de imagem como uma matriz de bytes incorporada em um arquivo de mídia em reprodução. Os dados de imagem podem produzir conteúdo em JPEG, PNG ou GIF. Utilize o método flash.display.Loader.loadBytes()
para carregar a matriz de bytes em um objeto de exibição.
Nota: Esse evento não é suportado em vídeos H.264 no AIR 3.0 para iOS.
onImageData
é, na verdade, uma propriedade do objeto NetStream.client
. A propriedade está listada na seção Eventos porque responde a um evento de dados durante a transmissão de mídia, usando o Flash Media Server, ou durante a reprodução do arquivo FLV. Para obter mais informações, consulte a descrição da classe NetStream. Você não pode usar o método addEventListener()
, ou qualquer outro método EventDispatcher, para ouvir ou processar onImageData
como evento. Define uma única função de retorno de chamada e anexa-a diretamente a um dos seguintes objetos:
- O objeto ao qual a propriedade
client
de uma ocorrência de NetStream faz referência. - Uma ocorrência de uma subclasse NetStream. NetStream é uma classe selada; ou seja, propriedades ou métodos não podem ser adicionados a um objeto NetStream em tempo de execução. Crie uma subclasse do NetStream e defina seu manipulador de eventos na subclasse. Também é possível tornar a subclasse dinâmica e adicionar a função de controlador de eventos a uma instância da subclasse.
O ouvinte de evento associado é acionado depois de uma chamada para o método NetStream.play()
, mas antes do avanço do indicador de reprodução do vídeo.
O objeto de evento onImageData contém os dados de evento como uma matriz de bytes enviada por meio de um canal de dados AMF0.
Exemplo ( Como usar este exemplo )
Netstream.client
para manipular as funções de retorno de chamada de onTextData
e onImageData
. A função onImageDataHandler()
usa o objeto de evento onImageData imageData
para armazenar a matriz de bytes. A função onTextDataHandler()
usa o objeto de evento onTextData textData
para armazenar partes dos dados de texto (cada parte dos dados é uma propriedade do objeto textData
).
É necessário substituir um local real de arquivos de mídia por metadados de texto ou de imagem do local "yourURL"
no código.
Você também pode manipular dados de texto e de imagem usando uma classe personalizada. Consulte o artigo Handling metadata and cue points in Flash video (Controle de metadados e pontos de sinalização no vídeo do Flash) para obter mais informações e exemplos.
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]); } } } }
Elementos da API relacionados
onMetaData | Evento |
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Estabelece um ouvinte de resposta quando o Flash Player recebe informações descritivas incorporadas ao vídeo em reprodução. Para obter informações sobre formatos de arquivo de vídeo apoiados pelo Servidor de Flash Media, visite www.adobe.com/go/learn_fms_fileformats_br .
onTextData
é, na verdade, uma propriedade do objeto NetStream.client
. A propriedade está listada na seção Eventos porque responde a um evento de dados durante a transmissão de mídia, usando o Flash Media Server, ou durante a reprodução do arquivo FLV. Para obter mais informações, consulte a descrição da classe e da propriedade NetStream.client
. Você não pode usar o método addEventListener()
, ou qualquer outro método EventDispatcher, para ouvir ou processar onMetaData
como evento. Define uma única função de retorno de chamada e anexa-a diretamente a um dos seguintes objetos:
- O objeto ao qual a propriedade
client
de uma ocorrência de NetStream faz referência. - Uma ocorrência de uma subclasse NetStream. NetStream é uma classe selada; ou seja, propriedades ou métodos não podem ser adicionados a um objeto NetStream em tempo de execução. Você pode criar uma subclasse de NetStream e definir o seu manipulador de eventos na subclasse. Também é possível tornar a subclasse dinâmica e adicionar a função de controlador de eventos a uma instância da subclasse.
O utilitário Flash Video Exporter (versão 1.1 ou posterior) incorpora informações sobre duração, data de criação e taxas de dados de um vídeo, entre outras, ao próprio arquivo de vídeo. Diferentes codificadores de vídeo incorporam diferentes conjuntos de metadados.
O ouvinte de evento associado é acionado depois de uma chamada para o método NetStream.play()
, mas antes do avanço do indicador de reprodução do vídeo.
Em muitos casos, o valor de duração incorporado em metadados de fluxos se aproxima da duração real, mas não é exato. Em outras palavras, nem sempre ele corresponde ao valor da propriedade NetStream.time
quando o indicador de reprodução está no final do fluxo de vídeo.
O objeto de evento passado para o manipulador de eventos onMetaData contém uma propriedade para cada parte dos dados.
Exemplo ( Como usar este exemplo )
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); }
Elementos da API relacionados
onPlayStatus | Evento |
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Estabelece um ouvinte de resposta quando um objeto NetStream reproduziu um fluxo na íntegra. O objeto de evento associado fornece informações além do que é retornado pelo evento netStatus
. Você pode usar a propriedade para ativar ações no código quando um objeto NetStream alternar de um fluxo para outro em uma lista de reprodução (conforme indicação do objeto informações NetStream.Play.Switch
) ou quando um objeto NetStream tiver sido reproduzido até o final (conforme indicação do objeto de informações NetStream.Play.Complete
).
onPlayStaus
é, na verdade, uma propriedade do objeto NetStream.client
. A propriedade está listada na seção Eventos porque responde a um evento de dados durante a transmissão de mídia, usando o Flash Media Server, ou durante a reprodução do arquivo FLV. Para obter mais informações, consulte a descrição da classe NetStream. Você não pode usar o método addEventListener()
, ou qualquer outro método EventDispatcher, para ouvir ou processar onPlayStatus
como evento. Defina uma função de retorno de chamada e anexe-a a um dos seguintes objetos:
- O objeto ao qual a propriedade
client
de uma ocorrência de NetStream faz referência. - Uma ocorrência de uma subclasse NetStream. NetStream é uma classe selada; ou seja, propriedades ou métodos não podem ser adicionados a um objeto NetStream em tempo de execução. Crie uma subclasse do NetStream e defina seu manipulador de eventos na subclasse. Também é possível tornar a subclasse dinâmica e adicionar a função de controlador de eventos a uma instância da subclasse.
Esse evento pode retornar um objeto de informações com as seguintes propriedades:
Propriedade code | Propriedade level | Significado |
---|---|---|
NetStream.Play.Switch | "status" | O assinante está alternando de um fluxo para outro em uma lista de reprodução. |
NetStream.Play.Complete | "status" | A reprodução foi concluída. |
NetStream.Play.TransitionComplete | "status" | O assinante está passando para um novo fluxo, como resultado de uma alternância de taxa de bits do fluxo |
Elementos da API relacionados
onSeekPoint | Evento |
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2, Flash Lite 4 |
Invocado sincronicamente de appendBytes()
quando o analisador de anexação de bytes encontra um ponto passível de busca (por exemplo, um quadro-chave de vídeo). Use este evento para construir uma tabela de pontos de busca. O byteCount
equivale ao byteCount
no primeiro byte da mensagem analisável deste ponto de busca, e é redefinido em zero como descrito em cima. Pra realizar uma busca, no evento NetStream.Seek.Notify
, localize os bytes que iniciam em um ponto passível de busca e chame appendBytes (bytes)
. Se o argumento bytes
for uma ByteArray
composta de bytes que iniciam no ponto passível de busca, o vídeo será reproduzido neste ponto de busca.
Observação: As chamadas a appendBytes()
de dentro deste retorno de chamada não são ignoradas.
Nota: Esse evento não é suportado em vídeos H.264 no AIR 3.0 para iOS.
A propriedade onSeekPoint
é uma propriedade do objeto NetStream.client
. A propriedade é enumerada na seção Eventos porque responde a dados que entram para o método appendBytes()
. Para obter mais informações, consulte a descrição da classe e da propriedade NetStream.client
. Você não pode usar o método addEventListener()
ou qualquer outro método EventDispatcher para ouvir ou processar onSeekPOint
como um evento. Para usar onSeekPoint
, defina uma função de retorno de chamada e anexe-a a um dos seguintes objetos:
- O objeto ao qual a propriedade
client
de uma ocorrência de NetStream faz referência. - Uma ocorrência de uma subclasse NetStream. NetStream é uma classe selada; ou seja, propriedades ou métodos não podem ser adicionados a um objeto NetStream em tempo de execução. Contudo, você pode criar uma subclasse do NetStream e definir seu manipulador de eventos na subclasse. Também é possível tornar a subclasse dinâmica e adicionar a função de controlador de eventos a uma instância da subclasse.
Elementos da API relacionados
onTextData | Evento |
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9.0.115.0, Flash Lite 4 |
Estabelece um ouvinte de resposta quando o Flash Player recebe dados de texto incorporados em um arquivo de mídia em reprodução. Os dados de texto estão no formato UTF-8 e podem conter informações sobre a formatação baseada na especificação de texto com tempo 3GP.
Nota: Esse evento não é suportado em vídeos H.264 no AIR 3.0 para iOS.
onTextData
é, na verdade, uma propriedade do objeto NetStream.client
. A propriedade está listada na seção Eventos porque responde a um evento de dados durante a transmissão de mídia, usando o Flash Media Server, ou durante a reprodução do arquivo FLV. Para obter mais informações, consulte a descrição da classe NetStream. Você não pode usar o método addEventListener()
, ou qualquer outro método EventDispatcher, para ouvir ou processar onTextData
como evento. Defina uma função de retorno de chamada e anexe-a a um dos seguintes objetos:
- O objeto ao qual a propriedade
client
de uma ocorrência de NetStream faz referência. - Uma ocorrência de uma subclasse NetStream. NetStream é uma classe selada; ou seja, propriedades ou métodos não podem ser adicionados a um objeto NetStream em tempo de execução. Crie uma subclasse do NetStream e defina seu manipulador de eventos na subclasse. Também é possível tornar a subclasse dinâmica e adicionar a função de controlador de eventos a uma instância da subclasse.
O ouvinte de evento associado é acionado depois de uma chamada para o método NetStream.play()
, mas antes do avanço do indicador de reprodução do vídeo.
O evento onTextData contém uma propriedade para cada parte dos dados de texto.
Exemplo ( Como usar este exemplo )
Netstream.client
para manipular as funções de retorno de chamada de onTextData
e onImageData
. A função onImageDataHandler()
usa o objeto de evento onImageData imageData
para armazenar a matriz de bytes. A função onTextDataHandler()
usa o objeto de evento onTextData textData
para armazenar partes dos dados de texto (cada parte dos dados é uma propriedade do objeto textData
).
É necessário substituir um local real de arquivos de mídia por metadados de texto ou de imagem do local "yourURL"
no código.
Você também pode manipular dados de texto e de imagem usando uma classe personalizada. Consulte o artigo Handling metadata and cue points in Flash video (Controle de metadados e pontos de sinalização no vídeo do Flash) para obter mais informações e exemplos.
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]); } } } }
Elementos da API relacionados
onXMPData | Evento |
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Estabelece um ouvinte para responder quando o Flash Player recebe informações específicas do Adobe Extensible Metadata Platform (XMP) incorporadas ao vídeo que está sendo reproduzido. Para obter informações sobre formatos de arquivo de vídeo apoiados pelo Servidor de Flash Media, visite www.adobe.com/go/learn_fms_fileformats_br .
Nota: Esse evento não é suportado em vídeos H.264 no AIR 3.0 para iOS.
onXMPData
é, na verdade, uma propriedade do objeto NetStream.client
. A propriedade está listada na seção Eventos porque responde a um evento de dados durante a transmissão de mídia, usando o Flash Media Server, ou durante a reprodução do arquivo FLV. Para obter mais informações, consulte a descrição da classe e da propriedade NetStream.client
. Você não pode usar o método addEventListener()
, ou qualquer outro método EventDispatcher, para ouvir ou processar onMetaData
como evento. Defina uma função de retorno de chamada e anexe-a a um dos seguintes objetos:
- O objeto ao qual a propriedade
client
de uma ocorrência de NetStream faz referência. - Uma ocorrência de uma subclasse NetStream. NetStream é uma classe selada; ou seja, propriedades ou métodos não podem ser adicionados a um objeto NetStream em tempo de execução. Contudo, você pode criar uma subclasse do NetStream e definir seu manipulador de eventos na subclasse. Também é possível tornar a subclasse dinâmica e adicionar a função de controlador de eventos a uma instância da subclasse.
O ouvinte de evento associado é acionado depois de uma chamada para o método NetStream.play()
, mas antes do avanço do indicador de reprodução do vídeo.
O objeto transmitido para a função de manipulação de evento onXMPData()
tem uma propriedade data
, que é uma string. A string é gerada de uma caixa UUID de nível superior. (O UUID de 128 bits da caixa de nível superior é BE7ACFCB-97A9-42E8-9C71-999491E3AFAC
.) Essa caixa UUID de nível superior contém exatamente um documento XML representado como uma string UTF-8 terminada por caractere nulo.
Elementos da API relacionados
status | Evento |
flash.events.StatusEvent
propriedade StatusEvent.type =
flash.events.StatusEvent.STATUS
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 1.0, Flash Lite 4 |
Despachado quando o aplicativo tenta executar o conteúdo criptografado com gerenciamento digital dos direitos (DRM), invocando o método NetStream.play()
. O valor da propriedade do código de status será "DRM.encryptedFLV"
.
Nota: Esse evento não é suportado em vídeos H.264 no AIR 3.0 para iOS.
Define o valor da propriedadetype
de um objeto de evento status
.
Esse evento tem as seguintes propriedades:
Propriedade | Valor |
---|---|
bubbles | false |
cancelable | false ; não há comportamento padrão a ser cancelado. |
code | Uma descrição do status do objeto. |
currentTarget | O objeto que está processando ativamente o objeto Event com um ouvinte de evento. |
nível | A categoria da mensagem, como "status" , "warning" ou "error" . |
target | O objeto que está reportando o status. |
Elementos da API relacionados
CONNECT_TO_FMS | Constante |
public static const CONNECT_TO_FMS:String = "connectToFMS"
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Um objeto estático usado como um parâmetro para o construtor de uma ocorrência de NetStream. É o valor padrão do segundo parâmetro do construtor de NetStream; não é usado pelo aplicativo para a reprodução progressiva de mídia. Quando usado, esse parâmetro faz com que o construtor estabeleça uma conexão com uma ocorrência do Flash Media Server.
DIRECT_CONNECTIONS | Constante |
public static const DIRECT_CONNECTIONS:String = "directConnections"
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Cria uma conexão ponto a ponto com o editor. Transmita essa string do segundo parâmetro (opcional) para o construtor de uma ocorrência de NetStream. Com essa string, um aplicativo pode criar uma conexão NetStream para fins de publicação de áudio e vídeo para clientes.
Nesse exemplo, o código que cria os objetos Video e NetStream e chama os métodos Video.attachNetStream()
e NetStream.play()
é inserido em uma função de manipulador. O manipulador apenas será chamado se uma tentativa de conexão com o objeto NetConnection for bem-sucedida; ou seja, quando o evento netStatus
retorna um objeto info
com uma propriedade code
que indica êxito. Convém aguardar uma conexão bem-sucedida antes de chamar 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
é usado para configurar a largura e a altura de a instância de 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; }
Wed Jun 13 2018, 11:10 AM Z