Acesso à mídia carregada como dadosFlash Player 9 e posterior, Adobe AIR 1.0 e posterior Para acessar dados de carga, utilize os métodos BitmapData.draw() e SoundMixer.computeSpectrum(). Por padrão, não é possível obter dados de pixel ou dados de áudio a partir de objetos gráficos ou de áudio renderizados ou reproduzidos por mídia carregada em uma área de segurança diferente. No entanto, é possível utilizar os métodos a seguir para conceder permissões para acessar estes dados nos limites de áreas de segurança:
As seções a seguir fornecem detalhes sobre o acesso a dados de bitmap, som e vídeo. Acesso a dados de bitmapO método draw() de um objeto BitmapData permite desenhar os pixels exibidos atualmente de qualquer objeto de exibição para o objeto BitmapData. Isso pode incluir os pixels de um objeto MovieClip, de um objeto Bitmap ou de qualquer objeto de exibição. As seguintes condições devem ser atendidas para que o método draw() desenhe pixels para o objeto BitmapData:
Se essas condições não forem atendidas, uma exceção SecurityError será lançada. Ao carregar a imagem usando o método load() da classe Loader, você pode especificar um parâmetro context que é um objeto SoundLoaderContext. Se você definir a propriedade checkPolicyFile do objeto LoaderContext como true, o Flash Player verificará se há um arquivo de política de URL no servidor do qual a imagem é carregada. Se houver um arquivo de política e o arquivo permitir que o domínio do arquivo SWF que está sendo carregado, o arquivo terá permissão para acessar os dados no objeto Bitmap. Caso contrário, o acesso será negado. Também é possível especificar uma propriedade checkPolicyFile em uma imagem carregada por meio de uma tag <img> em um campo de texto. Para obter detalhes, consulte Carregamento de arquivos SWF e de imagens usando a tag <img> em um campo de texto Acesso a dados de somAs seguintes APIs do ActionScript 3.0 relacionadas a som têm restrições de segurança:
Todo evento tem dois tipos de caixas de proteção associadas a ele, uma caixa de proteção de conteúdo e uma caixa de proteção do proprietário:
Ao carregar o som usando o método load() da classe Sound, você pode especificar um parâmetro context que é um objeto SoundLoaderContext. Se você definir a propriedade checkPolicyFile do objeto SoundLoaderContext como true, o Flash Player verificará se há um arquivo de política de URL no servidor do qual o som é carregado. Se houver um arquivo de política e o arquivo permitir o domínio do código que está sendo carregado, o código receberá permissão para acessar a propriedade id do objeto Sound. Caso contrário, não terá essa permissão. Além disso, a configuração da propriedade checkPolicyFile pode ativar o método SoundMixer.computeSpectrum() para sons carregados. É possível usar o método SoundMixer.areSoundsInaccessible() para descobrir se uma chamada para o método SoundMixer.stopAll() não parará todos os sons porque a caixa de proteção de um ou mais proprietários de som está inacessível para o chamador. A chamada do método SoundMixer.stopAll() pára esses sons cuja caixa de proteção de proprietário é a mesma que a do chamador de stopAll(). Ela também pára aqueles sons cuja reprodução foi iniciada por arquivos SWF que chamaram o método Security.allowDomain() para permitir acesso pelo domínio do arquivo SWF que está chamando o método stopAll(). Qualquer outro som não é parado e a presença desses sons pode ser revelada chamando o método SoundMixer.areSoundsInaccessible(). A chamada do método computeSpectrum() requer que todo som que esteja sendo reproduzido seja da mesma caixa de proteção que o objeto que está chamando o método ou de uma origem que recebeu permissão para a caixa de proteção do chamador. Caso contrário, uma exceção SecurityError é lançada. Para sons que foram carregados de sons incorporados em uma biblioteca em um arquivo SWF, a permissão será concedida com uma chamada para o método Security.allowDomain() no arquivo SWF carregado. Para sons carregados de origens que não sejam arquivos SWF (originários de arquivos mp3 carregados ou de arquivos de vídeo), um arquivo de política de URL no servidor de origem concede acesso a dados contidos na mídia carregada. Para obter mais informações, consulteControles de autor (desenvolvedor) eControles de site (arquivos de política). Para acessar dados de som a partir de fluxos RTMP, é necessário conceder acesso no servidor. Utilize a propriedade ActionScript de lado do servidor Client.audioSampleAccess para permitir acesso a diretórios específicos no Flash Media Server. Para obter mais informações, consulte a Referência de linguagem do ActionScript de lado do servidor. Acesso a dados de vídeoÉ possível usar o método BitmapData.draw() para capturar os dados de pixels do quadro atual de um vídeo. Há dois tipos diferentes de vídeo:
Para utilizar o método BitmapData.draw() para extrair gráficos de tempo em execução de fluxos RTMP, é necessário conceder acesso no servidor. Utilize a propriedade ActionScript de lado do servidor Client.videoSampleAccess para permitir acesso a diretórios específicos no Flash Media Server. Para obter mais informações, consulte a Referência de linguagem do ActionScript de lado do servidor. Ao chamar o método BitmapData.draw() com vídeo progressivo como o parâmetro source, o chamador de BitmapData.draw() deve estar na mesma caixa de proteção que o arquivo FLV, ou o servidor do arquivo FLV deve ter um arquivo de política que conceda permissão para o domínio do arquivo SWF que está fazendo a chamada. É possível solicitar que o arquivo de política seja baixado configurando a propriedade checkPolicyFile do objeto NetStream como true. |
![]() |