Fms3和Flex打造在线视频录制和回放

时间:2021-09-10 11:56:08
.net,Flex,Fms,视频会议,视频聊天相关开发技术大本营
随笔-122  文章-0  评论-3956 

Fms3和Flex打造在线视频录制和回放

 
Flex,Fms3系列文章导航
  1. Flex,Fms3相关文章索引

本篇是视频聊天,会议开发实例系列文章的第2篇,该系列所有文章链接如下: 
http://www.cnblogs.com/aierong/archive/2008/12/30/Flex.html#sp

1.关于Fms3和Flex的简单应用可以看我上篇
http://www.cnblogs.com/aierong/archive/2009/01/09/flex_fms_chat.html

2.准备工作
在fms安装目录下的application中,新建一个文件夹test_video1,然后启动fms服务器

3.打开Fb3,创建一个项目

4.在主mxml中拖动控件,界面如下:
Fms3和Flex打造在线视频录制和回放

具体代码如下:
<mx:VideoDisplay x="34" y="10" height="200" width="360" id="vd_main"/>
<mx:TextInput x="34" y="224" text="te" width="208" id="txt_filename"/>
<mx:Button x="250" y="224" label="record" id="btn_record"/>
<mx:Button x="327" y="224" label="stop" id="btn_stop"/>
<mx:Button x="250" y="256" label="replay" id="btn_replay"/>
<mx:Label x="34" y="288" text="状态提示:" width="362" id="txt_status"/>

5.导入包和定义变量如下:
import mx.controls.Alert;
 
private var netConnection:NetConnection;
private var netStream:NetStream;
private var appServer:String="rtmp://192.168.0.249/test_video1";
private var camera:Camera;
private var microphone:Microphone;

音频流或视频流的一般工作流程:以下步骤简要介绍了用于发布实时音频和视频的工作流程:

a.创建一个 NetConnection 对象。 
b.使用 NetConnection.connect() 方法连接到服务器上的应用程序实例。 
c.创建一个 NetStream 对象,以便在连接中创建数据流。 
d.使用 NetStream.attachAudio() 方法捕获音频并通过该流进行发送,然后使用 NetStream.attachCamera() 方法捕获并发送视频。 
e.使用 NetStream.publish() 方法为该流指定唯一的名称,然后通过该流将数据发送到服务器,以使其他用户能够收到该数据。 您还可以在发布数据时进行录制,以便用户可以在日后回放该数据。

6.creationComplete="init()",页面初始化代码
private function init():void
{
 netConnection = new NetConnection();
 netConnection.connect(appServer);
 netConnection.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);
 btn_record.addEventListener(MouseEvent.CLICK,recordFLV);
 btn_stop.addEventListener(MouseEvent.CLICK,stopRecord);
 btn_replay.addEventListener(MouseEvent.CLICK,replayFLV);
  
 initMedia();
}

代码比较简单,就是做些初始化工作

7.实现initMedia()
private function  initMedia():void
{
 camera = Camera.getCamera();
 camera.setMode(300,180,15);
 camera.setQuality(0,100);
 vd_main.attachCamera(camera);
 microphone = Microphone.getMicrophone();
}

代码说明:
这段代码实际上是在初始化视频设备和音频设备

Camera 类可从连接到运行 Flash Player 的计算机的摄像头中捕获视频。
重要说明:Flash Player 将显示“隐私”对话框,用户可从中选择是允许还是拒绝访问摄像头。 确保应用程序窗口大小至少为 215 x 138 个像素;这是显示该对话框所需的最小大小。

若要创建或引用 Camera 对象,请使用 getCamera() 方法。

camera.setMode()方法是将摄像头的捕获模式设置为最符合指定要求的本机模式
第1个参数:请求的捕获宽度,以像素为单位。 默认值为 160
第2个参数:请求的捕获高度,以像素为单位。 默认值为 120。 
第3个参数:摄像头捕获数据应使用的请求速率,以每秒帧数为单位。 默认值为 15。

camera.setQuality()方法设置每秒的最大带宽或当前输出视频输入信号所需的画面质量
第1个参数:指定当前输出视频输入信号可以使用的最大带宽,以每秒字节数为单位。 若要指定 Flash Player 视频可以使用所需数量的带宽来保持 quality 的值,请为 bandwidth 传递 0。 默认值为 16384。
第2个参数:个整数,指定所需的画面质量级别,该级别由应用于每一视频帧的压缩量确定。 可接受的值的范围为 1(最低品质,最大压缩)到 100(最高品质,无压缩)。 若要指定画面质量可以根据需要进行变化以避免超出带宽,请将 0 传递给 quality。

vd_main.attachCamera(camera)是指把来自摄像头的视频流显示到该控件

Microphone 类可从连接到运行 Flash Player 的计算机的麦克风中捕获音频
重要说明:Flash Player 将显示“隐私”对话框,用户可从中选择是允许还是拒绝访问麦克风。 请确保应用程序窗口大小至少为 215 x 138 像素,这是显示对话框所需的最小尺寸。

若要创建或引用 Microphone 对象,请使用 Microphone.getMicrophone() 方法。

8.实现netStatusHandler
private function netStatusHandler(evt:NetStatusEvent):void
{
 if ( evt.info.code=="NetConnection.Connect.Success" )
 {
  txt_status.text="fms连接成功";
  netStream = new NetStream(netConnection);
 }
 else
 {
  Alert.show("fms连接失败");
 }
}

9.实现录制按钮事件
private function recordFLV(evt:MouseEvent):void
{
 txt_status.text="开始录制";
 netStream.attachCamera(camera);
 netStream.attachAudio(microphone);
 netStream.publish(txt_filename.text,"record");
}

代码说明:
publish () 方法:将音频流、视频流和文本消息流从客户端发送到 Flash Media Server,并可选择在传输期间录制该流。 此方法仅供指定的流的发布者使用。
第1个参数:标识该流的字符串。
第2个参数:指定如何发布该流的字符串。 有效值为“record”、“append”和“live”。 默认值为“live”。 (这3个参数区别如下:)
如果传递“record”,Flash Player 将发布并录制实时数据,同时将录制的数据保存到名称与传递给 name 参数的值相匹配的新文件中。 该文件保存在服务器上服务器应用程序所在目录的子目录中。 如果该文件存在,则覆盖该文件。
如果传递“append”,Flash Player 将发布并录制实时数据,同时将录制的数据附加到名称与传递给 name 参数的值相匹配的文件中,该文件存储在服务器上包含服务器应用程序的目录的子目录中。如果未找到与 name 参数相匹配的文件,则创建一个文件。 
如果省略此参数或传递“live”,则 Flash Player 将发布实时数据而不进行录制。 如果存在名称与传递给 name 参数的值相匹配的文件,则删除它。

10.停止事件
private function stopRecord(evt:MouseEvent):void
{
 txt_status.text="停止录制";
 netStream.close();
}

11.回放事件
private function replayFLV(evt:MouseEvent):void
{
 txt_status.text="开始回放";
 vd_main.source=appServer+"/"+txt_filename.text;
 vd_main.play();
}

12.运行程序
Fms3和Flex打造在线视频录制和回放

Fms3和Flex打造在线视频录制和回放

13.代码下载
http://files.cnblogs.com/aierong/Video1.rar
您收到代码后,请回到文章下面留言告之一下!要是没收到,我可以再发!

提供代码是为了互相学习,一起探讨!请大家多交流!
1.要是对代码有什么疑问,可以在文章的评论区留言,我会尽我所能答复您!
2.要是您在运行代码的过程中发现bug,或者是您有什么好的建议和意见,也可以在文章的评论区留言给我,我会及时更正!

评论区使用提示:
评论区留言(使用高级评论)是可以贴图片的,要是有难以描述的问题,可以贴图片和文字一起说明
谢谢!

收藏与分享

收藏到QQ书签 Fms3和Flex打造在线视频录制和回放 添加到百度搜藏 Fms3和Flex打造在线视频录制和回放添加到雅虎收藏 Fms3和Flex打造在线视频录制和回放 Fms3和Flex打造在线视频录制和回放 Fms3和Flex打造在线视频录制和回放

RSS订阅我 什么是RSS?

Fms3和Flex打造在线视频录制和回放   Fms3和Flex打造在线视频录制和回放   Fms3和Flex打造在线视频录制和回放
Fms3和Flex打造在线视频录制和回放   Fms3和Flex打造在线视频录制和回放   Fms3和Flex打造在线视频录制和回放   Fms3和Flex打造在线视频录制和回放
Fms3和Flex打造在线视频录制和回放   Fms3和Flex打造在线视频录制和回放   Fms3和Flex打造在线视频录制和回放
Fms3和Flex打造在线视频录制和回放   Fms3和Flex打造在线视频录制和回放   Fms3和Flex打造在线视频录制和回放

东莞.net俱乐部

Fms3和Flex打造在线视频录制和回放 欢迎您的加入

我的系列文章

A.Sql Server2005 Transact-SQL 新兵器学习 
B.MCAD学习
C.代码阅读总结
D.ASP.NET状态管理
E.DB(数据库)
F.WAP
G.WinForm
H.Flex

我的好文推荐

FlexAir开源版-全球免费多人视频聊天室,免费网络远程多人视频会议系统((Flex,Fms3联合开发))<视频聊天,会议开发实例8>
Sql Server2005 Transact-SQL 新兵器学习总结之-总结 
MS SQL数据库备份和恢复存储过程(加强版本) 
sql server中分布式查询随笔(链接服务器(sp_addlinkedserver)和远程登录映射(sp_addlinkedsrvlogin)使用小总结) 
ASP.NET2.0国际化/本地化应用程序的实现总结(多语言,多文化页面的实现) 
WAP开发资料站(最新更新) 
自定义格式字符串随笔 (IFormattable,IFormatProvider,ICustomFormatter三接口的实现) 
Mcad学习笔记之异步编程(AsyncCallback 委托,IAsyncResult接口,BeginInvoke方法,EndInvoke方法的使用小总结) 
Mcad学习笔记之通过反射调用類的方法,屬性,字段,索引器(2種方法) 
Mcad学习笔记之序列化(2进制和Soap序列 化) 
Mcad学习笔记之委托再理解(delegate的构造器,BeginInvoke,EndInvoke,Invoke4个方法的探讨) 
ASP.NET状态管理之一(概括篇) 
Flex,Fms学习笔记

Fms3和Flex打造在线视频录制和回放
希望上面提到的知识对您有所提示,同时欢迎交流和指正 
作者:aierong
出处:http://www.cnblogs.com/aierong
贴子以"现状"提供且没有任何担保,同时也没有授予任何权利!
本文版权归作者所有,欢迎转载!
原创技术文章和心得,转载注明出处!这也是对原创者的尊重!
 
posted @ 2009-01-10 09:27 aierong 阅读(12669) 评论(107) 编辑 收藏
评论列表
 

#101楼 2011-03-15 16:10 *枫 

楼主,为什么只能用一次啊,当录完后可以播放一次,再点击replay后就没反应了,点击record也没反应,怎么回事呢。

#102楼[楼主] 2011-03-23 20:03 aierong 

引用*枫:楼主,为什么只能用一次啊,当录完后可以播放一次,再点击replay后就没反应了,点击record也没反应,怎么回事呢。

我但是测试过,没有这种情况,你是否修改了代码

#103楼 2011-03-28 13:06 wswsn 

您好 楼主 最近我在研究FMS和FLEX做视频聊天 您否发我一份您的完整源码 让我学习学习 万分感谢 87342564@qq.com

#104楼[楼主] 2011-05-17 19:15 aierong 

引用wswsn:您好 楼主 最近我在研究FMS和FLEX做视频聊天 您否发我一份您的完整源码 让我学习学习 万分感谢 87342564@qq.com
每篇文章都留有代码下载地址

#105楼 2011-07-01 15:11 feifeidejunjun 

您好,我正要做这样的功能,我下载了您的代码,不过感觉并没有真正的录制视频,不知道是怎么回事,而且我在服务器端也查过了,没有这个录制下来的东西

#106楼[楼主] 2011-11-16 16:08 aierong 

引用feifeidejunjun:您好,我正要做这样的功能,我下载了您的代码,不过感觉并没有真正的录制视频,不知道是怎么回事,而且我在服务器端也查过了,没有这个录制下来的东西

我当时用的是fms3

#107楼 2014-07-26 14:33 fengma 

楼主,我在点击回放视频完成后画面就是视频最后一帧.如何才能让它放完视频后自动回到实时的自己的视频画面啊?
 
发表评论

昵称:

评论内容:
Fms3和Flex打造在线视频录制和回放 Fms3和Flex打造在线视频录制和回放 Fms3和Flex打造在线视频录制和回放 Fms3和Flex打造在线视频录制和回放 Fms3和Flex打造在线视频录制和回放 Fms3和Flex打造在线视频录制和回放
 

注销 订阅评论

[使用Ctrl+Enter键快速提交]

 
 
 

公告

LOGO

Fms3和Flex打造在线视频录制和回放

俱乐部

东莞.NET俱乐部

我的系列文章

A.Sql Server2005 Transact-SQL 新兵器学习 
B.MCAD学习
C.代码阅读总结
D.ASP.NET状态管理
E.DB(数据库)
F.WAP
G.WinForm
H.Flex,Fms

联系我

给我留言 
发短消息 
E-mail:aierong#126.com

推荐小组

东莞.NET小组 
JSON小组

推荐书籍

Fms3和Flex打造在线视频录制和回放

版权说明

版权归作者所有,欢迎转载!
转载请注明出处!
这也是对原创者的尊重!

计数器

站长统计

昵称:aierong
园龄:10年7个月
粉丝:130
关注:7
 

搜索

 
 

最新随笔

相册

积分与排名

  • 积分 - 646888
  • 排名 - 90

最新评论

阅读排行榜

评论排行榜

推荐排行榜

 
 
Copyright ©2014 aierong