2010-07-06 5 views
1

J'ai un problème avec le flash, que je ne connais pas vraiment. Je base ce code sur ce qui est arrivé avec le serveur multimédia wowza dans l'exemple du chat vidéo, mais à la différence de cet exemple, le flash ne me demande pas si j'autorise ou non la caméra vidéo.Flash Webcam Permissions

Ci-dessous mon actionscript:

import flash.events.MouseEvent; 
import flash.events.NetStatusEvent; 
import flash.media.Camera; 
import flash.media.Microphone; 
import flash.media.Video; 
import flash.net.NetConnection; 
import flash.net.NetStream; 
import flash.system.Security; 
import flash.system.SecurityPanel; 
import flash.display.Sprite; 
import flash.text.TextField; 
import flash.events.StatusEvent; 

public class QandA extends Sprite { 
    Security.LOCAL_TRUSTED; 

    private var nc:NetConnection = null; 
    private var camera:Camera; 
    private var microphone:Microphone; 
    private var nsPublish:NetStream = null;      
    private var nsPlay:NetStream = null; 
    private var videoCamera:Video; 
    public var prompt:TextField; 

    public function QandA():void { 
     stage.align = "TL"; 
     stage.scaleMode = "noScale"; 
     videoCamera = new Video(160,120); 
     addChild(videoCamera); 
     camera = Camera.getCamera(); 
     microphone = Microphone.getMicrophone(); 
     if (camera.muted) { 
      trace("Camera Muted"); 
      Security.showSettings(SecurityPanel.CAMERA); 
      camera.addEventListener(StatusEvent.STATUS, statusHandler); 
     } else { 
      startCamera(); 
     } 

    } 

    private function statusHandler(e:StatusEvent):void { 
     if (e.code == "Camera.Unmuted") { 
      trace("Camera Unmuted"); 
      startCamera(); 
      camera.removeEventListener(StatusEvent.STATUS, statusHandler); 
     } else { 
      trace("StatusEvent: " + e.code + " " + e.toString()); 
     } 
    } 

    private function startCamera():void { 
     // here are all the quality and performance settings that we suggest 
     camera.setMode(160, 120, 12, false); 
     camera.setQuality(0, 75); 
     camera.setKeyFrameInterval(24); 
     microphone.rate = 11; 
     microphone.setSilenceLevel(0); 

     nc = new NetConnection(); 
     nc.connect("rtmp://localhost/live/"); 

     // get status information from the NetConnection object 
     nc.addEventListener(NetStatusEvent.NET_STATUS, ncOnStatus); 
    } 

    private function nsPublishOnStatus(infoObject:NetStatusEvent):void 
    { 
     trace("nsPublish: "+infoObject.info.code+" ("+infoObject.info.description+")"); 
    } 

    private function ncOnStatus(infoObject:NetStatusEvent):void 
    { 
     trace("nc: "+infoObject.info.code+" ("+infoObject.info.description+")"); 
     nsPublish = new NetStream(nc); 
     nsPublish.addEventListener(NetStatusEvent.NET_STATUS, nsPublishOnStatus); 
     nsPublish.bufferTime = 0; 
     nsPublish.publish("testing"); 
     // attach the camera and microphone to the server 
     nsPublish.attachCamera(camera); 
     nsPublish.attachAudio(microphone); 
    } 
} 

Je suis assez confiant, il est quelque chose de simple; comme j'ai vu ce code dans/sur d'innombrables sites lors de la discussion comment publier sur un serveur en direct.

Toute aide serait grandement appréciée, j'ai essayé d'utiliser ce code sur un serveur web pour voir s'il s'agissait simplement de paramètres de sécurité locaux, mais ce n'était pas le cas.

journaux que je reçois lors du débogage de l'application dans Flash CS5:

Tentative de lancement et se connecter à l'aide du joueur URL D: \ développement \ qanda \ qandaHost.swf
[SWF] D: \ développement \ qanda \ qandaHost.swf - 3583 octets après décompression
Caméra Muted
nc: NetConnection.Connect.Success
nsPublish: NetStream.Publish.Start

+0

Hmm, j'ai été en mesure d'obtenir la connexion et en cours d'exécution, mais je ne vois pas la webcam dans le swf qui est exporté. C'est juste un écran blanc. Toutefois, si je passe au serveur de streaming vidéo en direct, je peux en fait voir les informations de la webcam. Quelque chose ne va pas avec mon interface. – Scott

Répondre

1

Je ne Fixation de la (Connexion établie.) (tests de publication.) caméra à la vidéo, donc je ne pouvais pas voir moi-même - même si la vidéo était en fait en streaming.

private function startCamera():void { 
    trace("Attempting to start camera"); 
    // here are all the quality and performance settings that we suggest 
    camera.setMode(160, 120, 12, false); 
    camera.setQuality(0, 75); 
    camera.setKeyFrameInterval(24); 
    videoCamera.attachCamera(camera); 
    microphone.rate = 11; 
    microphone.setSilenceLevel(0); 
} 
2

Ci-dessous est faux:

Security.showSettings(SecurityPanel.**CAMERA**); 

Vous devriez écrire:

Security.showSettings(SecurityPanel.**PRIVACY**);