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

本博推荐文章快速导航: Sql Server2005 Transact-SQL 新兵器学习MCAD学习 代码阅读总结 ASP.NET状态管理 DB(数据库)WAPWinFormFlex,Fms

aierong原创技术随笔

.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中拖动控件,界面如下:

具体代码如下:
<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.运行程序

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

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

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

收藏与分享

收藏到QQ书签  添加到百度搜藏 添加到雅虎收藏   

RSS订阅我 什么是RSS?

      
         
      
      

东莞.net俱乐部

 欢迎您的加入

时间: 2024-10-08 17:08:05

Fms3和Flex打造在线视频录制和回放的相关文章

Fms3和Flex打造在线多人视频会议和视频聊天(附原代码)

Flex,Fms3系列文章导航 Flex,Fms3相关文章索引 本篇是视频聊天,会议开发实例系列文章的第3篇,该系列所有文章链接如下: http://www.cnblogs.com/aierong/archive/2008/12/30/Flex.html#sp 1.工作原理NetStream.publish方法的应用publish () 方法:将音频流.视频流和文本消息流从客户端发送到 Flash Media Server,并可选择在传输期间录制该流. 此方法仅供指定的流的发布者使用.第1个参数

IOS开发之小实例--创建一个简单的用于视频录制和回放的应用程序

前言:还是看了一下国外的入门IOS文章:<Create a Simple App for Video Recording and Playback>,主要涉及视频录制和回放的功能的基本实现. iOS的API用于记录和播放视频的对刚入门IOS的新人有点混乱,因为有几个可用的选项.如果你只是想打一个视频,你可以用MediaPlayer的框架,它可以让我们发挥我们的设备本地存储的视频,或从远程位置.但是,如果你需要高级功能,如媒体资产管理,媒体编辑,跟踪管理,和其他人,你必须使用AVFoundati

centos7在线安装视频录制软件

centos7在线安装视频录制软件: 视频录制软件大全:http://www.linuxprobe.com/screen-recorder-in-linux.html 录制软件1:vokoscreen-2.4.0-1.el7.nux.x86_64.rpm 录制软件2:simplescreenrecorder   https://pkgs.org/download/simplescreenrecorder 桌面组件(依赖包):nux-dextop-release-0-5.el7.nux.noarc

怎么录制手机在线视频 如何录制手机屏幕

在手机中不管是看电视还是看视频,总能看到让我们耳目一新或者很搞笑的片段,遇到这样的情况一般都会怎么做呢?难道下次观看的时候再重新找吗?当然不是,可以通过录制的方式在手机相册中直接查看,而且还可以分享给好友,那怎么录制手机视频内容呢?今天和大家一起来看一看. 方法/步骤:1.首先在手机的设置中看手机是否自带录屏功能,如果有屏幕录制功能,可以直接通过手机自带的录屏功能进行录制,如果没有可以借助录屏工具进行录制: 2.在手机的应用商店搜索可以录屏的工具运行,操作很简单,不需要多教什么,也可以投屏: 3

简单几步打造网络视频直播平台(转)

简单几步打造网络视频直播平台 分类:学以致用 2013-02-04 13:20 阅读(1132)评论(0) 不管是个人玩还是企业用,直播电台总是显得比较高端和神秘,今天我们来看看怎么用简单几步实现基于Flash流媒体服务器的网络视频直接直播平台. 1.服务端准备 常见的免费Flash流媒体服务器有国产的UMS和国际开源的Red5,UMS只有windows平台安装包,而用java开发的Red5更秉承了开源软件一贯兼容特色,可以多平台运行. UMS相对简单,全经典windows程序安装步骤,安装过程

继短视频后,网络自制综艺成在线视频新战场

"你有Freestyle吗?"这句网上广为流传的话出自今年6月刚上线的Hip-hop音乐选秀节目<中国有嘻哈>,这档爱奇艺自制的全新网络综艺,以自身的独特性在遍地开花的网络自制综艺中迅速抢占了一席之地. 2016年网络自制综艺开始进入快速增长期,在种类和数量上网络自制综艺都达到了一个全新的高度.大视频网站对网络自制综艺的不断推陈出新,使网络自制综艺进入井喷期. 网络自制综艺开启在线视频新战争 为了在网络综艺战场上加大自身的取胜砝码,各个视频播放平台不断推出各类不同的网络综艺

Linux 桌面玩家指南:05. 发博客必备的图片处理和视频录制神器

特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之间的内容按照数学公式进行排版,从而导致评论区格式混乱.如果大家的评论中用到了$,但是又不是为了使用数学公式,就请使用\$转义一下,谢谢. 想从头阅读该系列吗?下面是传送门: Linux 桌面玩家指南:01. 玩转 Linux 系统的方法论 [约 1.1 万字,22 张图片] Linux 桌面玩家指南

iOS开发系列--音频播放、录音、视频播放、拍照、视频录制

iOS开发系列--音频播放.录音.视频播放.拍照.视频录制 转载:http://www.cnblogs.com/kenshincui/p/4186022.html#avFoundationCamera --iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操作都提供了多套API.在今天的文章中将会对这些内容进行一一介绍: 音频 音

音频播放、录音、视频播放、拍照、视频录制-b

随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操作都提供了多套API.在今天的文章中将会对这些内容进行一一介绍: 音频 音效 音乐 音频会话 录音 音频队列服务 视频 MPMoviePlayerController MPMoviePlayerViewController AVPlayer 摄像头 UIImagePickerController拍照