zoukankan      html  css  js  c++  java
  • 关于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的某兄的代码简化进行测试)
  • 相关阅读:
    【Silverlight】Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps
    Visual Studio 2010在简洁中强调团队合作
    【Silverlight】Bing Maps学习系列(九):自定义功能导航条(Custom NavigationBar)
    Flash OBJECT 和 EMBED 标签
    SWFObject 的原站提供的使用说明
    一篇清楚阐述 JAvaScript 传递数据 到 Flash 的文章
    Flare 的 Edge边上加 Label
    借助 SWFObject 实现利用JavaScript嵌入 Flash
    3种基本的Flash/Javascript通信方式 (转)
    passing data from HTML to Flash
  • 原文地址:https://www.cnblogs.com/top5/p/1649981.html
Copyright © 2011-2022 走看看