zoukankan      html  css  js  c++  java
  • [ActionScript 3.0] 结合FMS实现简单视频录制

    首先在本机上安装Flash Media Server,简称FMS,在测试过程中window防火墙开启可能有影响,可先关闭防火墙,FMS安装好后检查相关服务有没有启动,若没有,可启动任务管理器,点击服务,将Flash Media Server(FMS)   Flash Media

    Administration Server  FMSHttpd 手动启动,一切就绪后,把以下as类作为文档类,就可测试了。

      1 package 
      2 {
      3     import flash.display.Sprite;
      4     import flash.events.NetStatusEvent;
      5     import flash.events.StatusEvent;
      6     import flash.media.Camera;
      7     import flash.media.Microphone;
      8     import flash.media.Video;
      9     import flash.net.NetConnection;
     10     import flash.net.NetStream;
     11 
     12     /**
     13       * ...
     14       * @author FrostYen
     15       */
     16     public class Main extends Sprite
     17     {
     18         private var netConn:NetConnection;
     19         private var netStream:NetStream;
     20         private var camera:Camera;
     21         private var video:Video;
     22         private var rtmp:String;
     23         private var microphpne:Microphone;
     24         public function Main()
     25         {
     26             init();
     27         }
     28 
     29         private function init():void
     30         {
     31             //初始化一个网络连接 
     32             netConn = new NetConnection  ;
     33             //为这个连接添加事件,这个事件有返回连接状态 
     34             netConn.addEventListener(NetStatusEvent.NET_STATUS,onNetStatus);
     35             //这是连接的地址,其实就是在你FMS的安装目录里,Applications下新建一个yan的文件夹,录制的视频会保存在这个yan文件夹下自动生成的streams/_definst_文件夹下,
     36             rtmp = "rtmp://127.0.0.1/yan/";
     37             //开始连接
     38             netConn.connect(rtmp);
     39             //获取系统的microphone    ;
     40             microphpne = Microphone.getMicrophone();
     41             microphpne.setLoopBack(true);
     42             //获取系统的摄像头;
     43             camera = Camera.getCamera();
     44             if ((camera == null))
     45             {
     46                 trace("未检测到摄像头");
     47             }
     48             else
     49             {
     50 
     51                 //设定宽,高,以及帧频
     52                 camera.setMode(240,180,24);
     53                 //设定画面质量 
     54                 //cam.setQuality(0,90);
     55                 video = new Video  ;
     56                 video.attachCamera(camera);
     57                 this.addChild(video);
     58                 camera.addEventListener(StatusEvent.STATUS,onCameraStatus);
     59             }
     60         }
     61         //重要说明: 当引用或者创建Camera和Microphone对象时,Flash Player 将显示“隐私”对话框,用户可从中选择是允许还是拒绝访问摄像头和麦克风。 请确保应用程序窗口大小至少为 215 x 138 像素,这是显示对话框所需的最小尺寸。
     62         private function onCameraStatus(e:StatusEvent):void
     63         {
     64 
     65             //status:StatusEvent — 在摄像头报告其状态时调度。 如果 code 属性的值为“Camera.Muted”,则表示用户拒绝 SWF 文件访问其摄像头。 如果 code 属性的值为“Camera.Unmuted”,则表示用户允许 SWF 文件访问其摄像头。
     66             switch (e.code)
     67             {
     68                 case "Camera.Unmuted" ://Camera access was allowed
     69 
     70                     break;
     71                 case "Camera.Muted" ://Camera access was denied
     72 
     73                     break;
     74             }
     75         }
     76 
     77         private function onNetStatus(e:NetStatusEvent):void
     78         {
     79             //trace(e.info.code);
     80             switch (e.info.code)
     81             {
     82                 case "NetConnection.Connect.Success" :
     83                     trace("链接成功");
     84                     if ((netStream != null))
     85                     {
     86                         netStream.close();
     87                     }
     88                     //建立一个流,为以后的录制传输数据
     89                     netStream = new NetStream(netConn);
     90                     camera.setQuality(163854,100);
     91                     //设置视频质量;
     92                     netStream.attachCamera(camera);
     93                     //录制视频      ;
     94                     netStream.attachAudio(microphpne);
     95                     //录制声音      ;
     96                     //netStream.publish("videoName","live");//直播
     97                     //netStream.publish("videoName","append");//追加性录制
     98                     netStream.publish("videoName","record");
     99                     //覆盖性录制;
    100                     break;
    101                 case "NetConnection.Connect.Rejected" :
    102                     trace("没有权限");
    103                     break;
    104                 default :
    105                     trace("连接服务器失败");
    106             }
    107         }
    108 
    109     }
    110 
    111 }
  • 相关阅读:
    其它 Surface 重装系统 win10
    电商 商品数据分析 市场洞察 导出数据后 横线对比 python实现2
    电商 商品数据分析 市场洞察 导出数据后 横线对比 python实现
    电商 商品数据分析 市场洞察 导出数据后 横线对比
    Python excel转换为json
    关于四舍五入
    MBProgressHUD 显示后,为何不能点击屏幕其他地方
    使用容器挂载NFS
    luogu P1128 [HNOI2001]求正整数 dp 高精度
    EC R 86 D Multiple Testcases 构造 贪心 二分
  • 原文地址:https://www.cnblogs.com/frost-yen/p/4519481.html
Copyright © 2011-2022 走看看