一段获取视频的简易方法

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
//////////////////////////////////////////////////////////////////////////////// 
// 
// Copyright (C) 2007 royllik. 
//通用视频组件,有local和remote两种状态,这里的代码不需要修改 
// 
//////////////////////////////////////////////////////////////////////////////// 
--> 
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" 
styleName="opaquePanel" layout="absolute" 
title="{thisTitle}" 
horizontalScrollPolicy="off" verticalScrollPolicy="off"> 

<mx:Script> 
<![CDATA[ 
import flash.external.ExternalInterface; 
import mx.controls.Alert; 
import mx.core.UIComponent; 
import mx.managers.PopUpManager;
import flash.media.*; 
import avchat.chatRoom.utils.ModelLocator; 
import avchat.chatRoom.ui.event.CustomEvent; 
private var model:ModelLocator = ModelLocator.getInstance(); 


[Bindable] 
public var thisTitle:String;

public var reciveStream:String; 

private var camera:Camera; 
    private var mic:Microphone; 
    private var outns:NetStream; 
private var inns:NetStream; 
    

    private var video:Video; 
    private var videoHolder:UIComponent; 
    
    
    protected override function createChildren():void { 
super.createChildren();
this.titleBar.addEventListener(MouseEvent.MOUSE_DOWN, onDown); 
this.titleBar.addEventListener(MouseEvent.MOUSE_UP, onUp); 


    private function onDown(evt:Event):void 
this.startDrag(); 
private function onUp( evt:Event ):void 
this.stopDrag(); 
    

    //断开流媒体连接,并删除videoHolder 
    public function stopAv():void 
    { 
    if(outns) 
    {   
    //outns.pause(); 
    outns.close(); 
    //Alert.show("关闭了" + outns); 
    } 
    if(inns) 
    {    
    //inns.pause(); 
    inns.close(); 
    //Alert.show("关闭了" + inns); 
    } 
    if(video)  
    video.clear(); 
    this.removeAllChildren(); 
    
    //this.removeChild(videoHolder); 
    thisTitle = ""; 
    } 
    
    
    //设置麦克风 
private function setmic():void 
    {   
    mic.gain = 70; 
mic.rate = 11; 
mic.setUseEchoSuppression(true); 
mic.setSilenceLevel(5, 1000); 
//mic.setLoopBack(false); 
   
    } 
    
    //设置摄像头 
    private function setCam():void 
    { 
    camera.setKeyFrameInterval(30); 
    camera.setMode(320, 240, 25, true); 
camera.setQuality(0,85); 
//camera.setLoopback(true); 
    } 
    
    //推送自己的流媒体 
    public function publishAV(recordorlive:String, width:int, height:int):void 
    {   
    //发送视频,视频的名字是 发送人的ID+_+当前ROOM的名字 
    var streamName:String = model.myself.userId + "_" + model.currentRoom; 
    //trace("streamName:" + streamName); 
    if(outns) 
    outns.close(); 
    outns = new NetStream(model.fmsserver.nc); 
    outns.client = this; 
    //outns.checkPolicyFile = true; 
    if (Camera.names.length > 0){ 
camera = Camera.getCamera(); 
    } 
    //trace(camera); 
    if (camera == null) 
    { 
    mic = Microphone.getMicrophone(); 
    setmic(); 
    
    outns.attachAudio(mic); 
    //这里要以后要根据要求,决定是否录制 
    //Alert.show("streamName:"+ streamName); 
    outns.publish(streamName, recordorlive); 
  
    } 
    else 
    { 
    mic = Microphone.getMicrophone(); 
    setmic(); 
    setCam(); 
    outns.attachAudio(mic); 
    outns.attachCamera(camera); 
    //这里 要以后要根据要求,决定是否录制 
    outns.publish(streamName, recordorlive); 
    //Alert.show("streamName:"+ streamName); 
    
    } 
    //Alert.show("自己发送" + streamName); 
    videoHolder = new UIComponent(); 
videoHolder.setActualSize(width,height); 
video = new Video(width, height); 
    video.attachCamera(camera); 
    videoHolder.addChild(video); 
    this.addChild(videoHolder); 

    } 
    //接收视频,视频的名字是 发送人的ID+_+当前ROOM的名字 
    public function reciveAV(width:int,height:int):void 
    { 
    //trace(this.reciveStream); 
    //var reciveStream:String = thisUserId + "_" + model.currentRoom; 
    //Alert.show("reciveStream: "+reciveStream); 
    if(inns) inns.close(); 
    inns = new NetStream(model.fmsserver.nc); 
    //inns.checkPolicyFile = true; 
    inns.play(reciveStream); 
    //Alert.show("收到了" + reciveStream); 
    inns.client = this; 
    videoHolder = new UIComponent(); 
    videoHolder.setActualSize(width,height); 
    video = new Video(width, height); 
    video.attachNetStream(inns); 
    videoHolder.addChild(video); 
this.addChild(videoHolder); 
    } 


]]> 
</mx:Script> 
</mx:Panel> 
posted @ 2010-01-17 14:42  与时俱进  阅读(573)  评论(0编辑  收藏  举报
友情链接:同里老宅院民居客栈