关于flex3+fms3.5 录制音视频流时的声音问题


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.messaging.errors.NoChannelAvailableError;

private var nc:NetConnection;
private var ns:NetStream;
private var rtmpNow:String;
private var msg:Boolean;
private var metaSniffer:Object;
private var dur:Number;
private var cam:Camera;
private var mic:Microphone;
private var vid1:Video;

private function startup():void{
//初始化一个网络连接
// 1...
nc=new NetConnection();
//为这个连接添加事件,这个事件有返回连接状态
nc.addEventListener(NetStatusEvent.NET_STATUS,checkConnect);
//这是连接的地址其实就是在你FMS的安装目录里,Applications下新建一个vid2的文件夹,这个文件夹可以看成是你的工程名了
//至于后面的recordings是你录制视频时存放视频的文件夹
rtmpNow="rtmp://localhost/test";

// 2...
//开始连接
nc.connect(rtmpNow);

//获取系统的microphone
mic=Microphone.getMicrophone();
mic.setLoopBack(true);

//获取系统的摄像头
cam=Camera.getCamera();
//设定宽,高,以及帧
cam.setMode (240,180,24);
//设定画面质量
cam.setQuality (0,90);

//让videoDisplay加载摄像头
vid.attachCamera(cam);
msgError.text="initnize";
}

private function checkConnect(event:NetStatusEvent):void{
//根据连接返回的状态信息判断是滞连接成功
msg=(event.info.code=="NetConnection.Connect.Success");
msgError.text=event.info.code;
if(msg){
//如果成功,就利用些连接建立一个流,为以后的录制传输数据
// 3...
ns=new NetStream(nc);
msgError.text="establish netStream";
}
}

private function startRecord(e:Event):void{
if(ns){
msgError.text="start record";

// 4...
//开始录制时要加载micphone和摄像头
ns.attachAudio(mic);
ns.attachCamera(cam);

// 5...
//这里是关键,从这里开始,就开始录制了,input.text是录制的视频文件的名称
ns.publish(input.text, "record");
}
}

private function stop(event:Event):void{
//和JAVA里类似,流类的东西一定要记得关闭
ns.play(false);
ns.close();
msgError.text="stop";
}

]]>
</mx:Script>

<mx:VBox id="myVb" creationComplete="startup();">
<mx:VideoDisplay id="vid" width="400" height="300" />
<mx:Button label="record" id="btn" click="startRecord(event);" />
<mx:Button label="play" id="stopbtn" click="stop(event);" />
<mx:TextInput id="input" />
<mx:TextArea id="msgError" backgroundColor="red" />
</mx:VBox>
</mx:Application>


我这代码是什么回事,录视频的时候总是录不了声音,只能录视频?

还发现一个问题是:
当我把Microphone.getMicrophone(); 写到一个方法里,再在creationComplete执行的函数里调用该封装的函数,运行该mxml的时候flash player无论如何都没法播放麦克风的声音。

flex 3.0.2
flex sdk 3.2
flash player 10
fms 3.5
(我的代码要复杂很多,这里是结合javaeye的某兄的代码简化进行测试)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值