2009-07-31 4 views
2

Je suis en train d'obtenir un bitmap/instantané d'un flux vidéo Wowza jouant sur mon client, comme ceci:Comment puis-je spécifier un fichier de politique crossdomain pour permettre à Flash de récupérer un bitmap à partir d'un flux vidéo RTMP (Wowza)?

var bitmapData:BitmapData = new BitmapData(view.videoPlayerComponent.width, view.videoPlayerComponent.height); 
bitmapData.draw(view.videoPlayerComponent); 

Quand je fais cela, je reçois ce message d'erreur:

SecurityError: Erreur # 2123: Violation du sandbox de sécurité: BitmapData.draw: http://localhost:51150/Resources/WRemoteWebCam.swf ne peut pas accéder à rtmp: //localhost/videochat/smithkl42._default/. Aucun fichier de stratégie accordé accès.

Je suppose que l'erreur provient de ne pas être en mesure de localiser le fichier crossdomain.xml approprié. Je ne suis pas tout à fait sûr où il cherche, et un sniff Wireshark n'a pas été concluante, donc je l'ai essayé de placer un dans chacun des endroits suivants:

http://localhost/crossdomain.xml
http://localhost:1935/crossdomain.xml
http://localhost:51150/crossdomain.xml

je peux récupérer le fichier avec succès de chacun de ces trois emplacements. (Je suis assez sûr que le dernier n'aurait aucun effet, puisque c'est juste l'emplacement du site Web qui héberge la page qui héberge le fichier .swf, mais au hasard ...)

Ceux-ci sont le contenu du fichier qu'il est l'accaparement dans chaque cas:

<cross-domain-policy> 
    <allow-access-from domain="*" to-ports="*" /> 
</cross-domain-policy> 

Et il est encore jeter ce même message d'erreur.

J'ai aussi suivi les instructions du Wowza forums, pour allumer StreamVideoSampleAccess dans le [installer] \ conf [appname] \ Application.xml, sans joie:

<Client> 
    <IdleFrequency>-1</IdleFrequency> 
    <Access> 
     <StreamReadAccess>*</StreamReadAccess> 
     <StreamWriteAccess>*</StreamWriteAccess> 
     <StreamAudioSampleAccess>*</StreamAudioSampleAccess> 
     <StreamVideoSampleAccess>*</StreamVideoSampleAccess> 
     <SharedObjectReadAccess>*</SharedObjectReadAccess> 
     <SharedObjectWriteAccess>*</SharedObjectWriteAccess> 
    </Access> 
</Client> 

Toute pensée?

Répondre

1

Ce n'est pas un problème crossdomain.xml: Voici le relevant Adobe documentation. Je pense que this post peut aussi être utile.

+0

Merci pour le pointeur. En fait, j'utilise wowza plutôt que FMS, mais supposément Wowza a le même peu de sécurité. Mais j'ai suivi les instructions dans this post, en vain. Modification de la question pour inclure ce peu d'information. –

+0

Je l'ai compris. Votre réponse faisait partie de la solution; l'autre bit déclenchant mon problème était que j'essayais d'attraper un bitmap sur un flux inexistant. J'ai jeté un try/catch un peu plus intelligent, et nous sommes prêts à partir. Merci. –

1

J'utilise Wowza aussi, j'ai eu le même problème que vous, ici ce que je faisais:

  1. changé la configuration Application.xml, ajouté * pour le client> Accès> ...

  2. charger un fichier crossdomain.xml, voici le morceau de code que j'utilise pour charger des fichiers http ou en streaming:

      var url:String = this.vVideos.selectedItem.url; 
          var protocol:String = URLUtil.getProtocol(url).toLowerCase(); 
          var crossDomainXmlUrl:String; 
    
          if (protocol == 'rtmp' || protocol == 'rtmpt') 
          { 
           crossDomainXmlUrl = 'http://' + URLUtil.getServerName(url) + ':1935/crossdomain.xml'; 
          } 
          else 
          { 
           crossDomainXmlUrl = 'http://' + URLUtil.getServerName(url) + '/crossdomain.xml'; 
          } 
    
          Security.loadPolicyFile(crossDomainXmlUrl); 
    
          this.videoMedia.source = url; 
          this.videoMedia.visible = true; 
    
          setTimeout(this.play,1000); 
    

eBuildy, spécialistes Adobe Flex

Questions connexes