[ActionScript 3.0] 结合FMS实现简单视频录制
首先在本机上安装Flash Media Server,简称FMS,在测试过程中window防火墙开启可能有影响,可先关闭防火墙,FMS安装好后检查相关服务有没有启动,若没有,可启动任务管理器,点击服务,将Flash Media Server(FMS) Flash Media
Administration Server FMSHttpd 手动启动,一切就绪后,把以下as类作为文档类,就可测试了。
package
{
import flash.display.Sprite;
import flash.events.NetStatusEvent;
import flash.events.StatusEvent;
import flash.media.Camera;
import flash.media.Microphone;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream; /**
* ...
* @author FrostYen
*/
public class Main extends Sprite
{
private var netConn:NetConnection;
private var netStream:NetStream;
private var camera:Camera;
private var video:Video;
private var rtmp:String;
private var microphpne:Microphone;
public function Main()
{
init();
} private function init():void
{
//初始化一个网络连接
netConn = new NetConnection ;
//为这个连接添加事件,这个事件有返回连接状态
netConn.addEventListener(NetStatusEvent.NET_STATUS,onNetStatus);
//这是连接的地址,其实就是在你FMS的安装目录里,Applications下新建一个yan的文件夹,录制的视频会保存在这个yan文件夹下自动生成的streams/_definst_文件夹下,
rtmp = "rtmp://127.0.0.1/yan/";
//开始连接
netConn.connect(rtmp);
//获取系统的microphone ;
microphpne = Microphone.getMicrophone();
microphpne.setLoopBack(true);
//获取系统的摄像头;
camera = Camera.getCamera();
if ((camera == null))
{
trace("未检测到摄像头");
}
else
{ //设定宽,高,以及帧频
camera.setMode(240,180,24);
//设定画面质量
//cam.setQuality(0,90);
video = new Video ;
video.attachCamera(camera);
this.addChild(video);
camera.addEventListener(StatusEvent.STATUS,onCameraStatus);
}
}
//重要说明: 当引用或者创建Camera和Microphone对象时,Flash Player 将显示“隐私”对话框,用户可从中选择是允许还是拒绝访问摄像头和麦克风。 请确保应用程序窗口大小至少为 215 x 138 像素,这是显示对话框所需的最小尺寸。
private function onCameraStatus(e:StatusEvent):void
{ //status:StatusEvent — 在摄像头报告其状态时调度。 如果 code 属性的值为“Camera.Muted”,则表示用户拒绝 SWF 文件访问其摄像头。 如果 code 属性的值为“Camera.Unmuted”,则表示用户允许 SWF 文件访问其摄像头。
switch (e.code)
{
case "Camera.Unmuted" ://Camera access was allowed break;
case "Camera.Muted" ://Camera access was denied break;
}
} private function onNetStatus(e:NetStatusEvent):void
{
//trace(e.info.code);
switch (e.info.code)
{
case "NetConnection.Connect.Success" :
trace("链接成功");
if ((netStream != null))
{
netStream.close();
}
//建立一个流,为以后的录制传输数据
netStream = new NetStream(netConn);
camera.setQuality(163854,100);
//设置视频质量;
netStream.attachCamera(camera);
//录制视频 ;
netStream.attachAudio(microphpne);
//录制声音 ;
//netStream.publish("videoName","live");//直播
//netStream.publish("videoName","append");//追加性录制
netStream.publish("videoName","record");
//覆盖性录制;
break;
case "NetConnection.Connect.Rejected" :
trace("没有权限");
break;
default :
trace("连接服务器失败");
}
} } }
[ActionScript 3.0] 结合FMS实现简单视频录制的更多相关文章
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
--iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制, ...
- iOS开发----音频播放、录音、视频播放、拍照、视频录制
随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操 ...
- 音频播放、录音、视频播放、拍照、视频录制-b
随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操 ...
- iOS音频播放、录音、视频播放、拍照、视频录制
随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操 ...
- Flash+fms视频录制在项目中的实际应用
Flash+fms视频录制在项目中的实际应用 前言:以下只是记录本人在项目中的应用,而flash+fms视频录制有多种实现方式,具体可根据实际情况而定! 1:古人云:工欲善其事,必先利其器,首先安装f ...
- ActionScript 3.0 API 中的 Video 类
注:这个类在Flash流媒体开发中使用的很频繁,在此记录一下它的使用方法. 包 flash.media 类 public class Video 继承 Video DisplayObject Ev ...
- ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调
近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0,现把学习结果分享一下,希望对新手有帮助. 目录 ActionScript 3.0简介 Hello ...
- [转]ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调
本文转自:http://www.cnblogs.com/artwl/p/3396330.html 近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0, ...
- 嵌入式Linux下MP4视频录制库MP4V2移植和简单介绍
**************************************************************************************************** ...
随机推荐
- FreeSWITCH 启用多域(多租户)的配置
如果将FreeSWITCH用于云端, 支持大规模并发呼叫, 就要用到 多域/多租户 技术了, FreeSWITCH 本身可以直接支持. 每个域可以单独, 拥有相同的分机号也互相打不通, 各自线路, I ...
- jmeter 读取mysql数据库
业务背景 当我们用jmeter进行压测,或者造数据的时候,我们可能希望每次请求的参数都是随机的.如果从一个文件里读取,很难达到要求.jmeter提供了一套读取数据库的组件,能满足部分要求.但性能不好, ...
- Oracle表格字段采用sequence进行自增长时,采用Dbutils进行insert或update数据时的处理技巧
// 定义插入记录的方法 public Teacher insert(String name, String gender, Double score) { // 获得连接 Connection co ...
- [c++] How many bytes do pointers take up?
How many bytes do pointers take up? on 16 bit systems take up 2 bytes on 32 bit systems take up 4 by ...
- code2039 骑马修栏杆
欧拉通路: find_circuit(结点i){ 当结点i有邻居时 选择任意一个邻居j: 删除边(i,j)或者做访问标记: find_circuit(结点j): 输出或存储节点i: } 本题注意点的编 ...
- date_default_timezone_set()
date_default_timezone_set("Asia/Shanghai");
- Spring查询方法的注入 为查询的方法注入某个实例
//这里是客户端的代码 当调用CreatePersonDao这个抽象方法或者虚方法的时候由配置文件返回指定的实例 为查询的方法注入某个实例 start static void Main(string[ ...
- MemoryUsage:监测java虚拟机内存使用
通过MemoryUsage可以查看Java 虚拟机的内存池的内存使用情况.MemoryUsage类有四个值(均以字节为单位): ===Init=== java虚拟机在启动的时候向操作系统请求的初始内存 ...
- 实践作业4:Web测试实践(小组作业)每日任务记录3
会议时间:2017年12月23日 会议地点:东九教学楼自习区 主 持 人:王晨懿 参会人员:王晨懿.余晨晨.郑锦波.杨潇.侯欢.汪元 记 录 人:王晨懿 会议议题:小组作业第二阶段 下面是今天 ...
- 如何让两个div并排显示
正常情况下两个div都是上下排版的,那么怎么让它们并排显示呢? 方法一:都左浮动float:left; 方法二:一个左浮动,一个右浮动 方法三:给两个div都设置display:inline属性,但两 ...