é possível detectar se um filme do flash também contém (joga) o som?

StackOverflow https://stackoverflow.com/questions/43503

  •  09-06-2019
  •  | 
  •  

Pergunta

Existe uma maneira de detectar se um filme do flash contém qualquer som ou reproduzir qualquer música?
Seria bom se isso poderia ser feito dentro de um webbrowser (actionscript a partir de outro objeto em flash, javascript,...) e poderia ser feito antes de o filme do flash começa a tocar.

No entanto, eu tenho minhas dúvidas se isso será possível por completo, de modo que qualquer outro (programável) solução também é apreciado

Foi útil?

Solução

Sim, no lado do servidor, com certeza.Do lado do cliente?Eu não sei.(Eu sou um serverside tipo de cara.)

No lado do servidor, seria necessário analisar o arquivo, leia o cabeçalho e/ou olhar para frames de áudio.(Eu tenho portado um haskel FLV parser Java para fins de indexação-me, e há outros utilitários de análise de lá fora.É possível.)

osflash.org's FLV página tem detalhes sórdidos.Confira o Formato FLV seções do FLV Cabeçalho de tabela.

FIELD       DATA TYPE      EXAMPLE                  DESCRIPTION
 Signature   byte[3]        “FLV”                    Always “FLV”
 Version     uint8          “\x01” (1)               Currently 1 for known FLV files
 Flags       uint8 bitmask  “\x05” (5, audio+video)  Bitmask: 4 is audio, 1 is video
 Offset      uint32-be      “\x00\x00\x00\x09” (9)   Total size of header (always 9 for known FLV files) 

EDITAR:Meu cliente side com Flash é inexistente, mas eu acredito que há um onMetaDataLoad evento que o código poderia pegar.O que pode estar acontecendo um pouco tarde para você, mas talvez seja bom o suficiente?

Outras dicas

Você está perguntando sobre arquivos de vídeo FLV ou Flash "filmes", como em SWF?

Só para esclarecer, uma FLV é o Formato Flash Vídeo (ou qualquer que seja a sigla), a regularidade de um filme do Flash/aplicação/banner seria um SWF.Estes são muito diferentes formatos de arquivo.

Com o ByteArray você pode fazer praticamente o que você quiser.Antes de iniciar a reprodução, você pode analisar os bytes de FLV cabeçalho (use o byteArray.readByte() e consulte as especificações) para determinar para verificar se o áudio bandeira está ativado.Desde o FLV cabeçalho é carregado quase que instantaneamente, isso não deve causar qualquer inconveniente atraso para o usuário.

Com o SWF é muito mais complicada -- tenho certeza de que não há nenhuma maneira fácil de determinar antecipadamente se um swf reproduz áudio em algum lugar.Uma maneira de fazer isso pode ser olhar para os bens com os quais o SWF tem definidas na biblioteca, mas também, em seguida, o swf pode apenas carregar um arquivo de áudio externo (ou, até mesmo, gerar-lo com alguns hacks ou as novas apis do Flash player 10).Se o swf são enviados pelo usuário (ou algo semelhante que está fora de seu controle imediato) eu acho que isso é um risco estrada..

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top