FMS3技术文档之二.docx

上传人:b****3 文档编号:2171242 上传时间:2022-10-27 格式:DOCX 页数:25 大小:189.71KB
下载 相关 举报
FMS3技术文档之二.docx_第1页
第1页 / 共25页
FMS3技术文档之二.docx_第2页
第2页 / 共25页
FMS3技术文档之二.docx_第3页
第3页 / 共25页
FMS3技术文档之二.docx_第4页
第4页 / 共25页
FMS3技术文档之二.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

FMS3技术文档之二.docx

《FMS3技术文档之二.docx》由会员分享,可在线阅读,更多相关《FMS3技术文档之二.docx(25页珍藏版)》请在冰豆网上搜索。

FMS3技术文档之二.docx

FMS3技术文档之二

录制和播放流媒体

2.1.StreamingandBroadcasting(流和广播)

FMS3可以录制和播放流媒体。

流的性质和广播不一样。

在广播中,发送者发送出一个单个信号。

谁连接到该频道,发送信号都得到相同的流。

这就像丢一个球到水中,在同一个圆心的波浪发出了一个“信号”。

无论身在何处的观众或听众,当波到达他们时,他们得到相同的波浪,像一个电视画面或无线电传输,为其他所有人。

当FMS3发送一个音频和视频的流的时候,它为每个接受者建立一个单独的流。

其“广播”工作,更像一货车车轮上的辐条,每个人都连接获得他或她自己的流。

因此,这里的“广播”的真正意义是streamcasting一种形式-每个人都得到一个单独的流的技术。

如果一个人正在收听,我的应用程序只发送一个流,如果20个人在收听,它会产生20个流。

因为服务器会自动为每个连接的用户建立一个单独的流。

你不需要在你的代码里建立所有的流。

不过,在决定如何设立您的应用程序时,对带宽的考虑,您需要考虑它可能会产生的流数量。

如果你很少在线观看视频,您大概没有看到它的不同。

如果你点击一个视频,要等很久,真正让你等待的是视频文件先下载,然后您的计算机上,播放保存到硬盘驱动器上的视频。

这样的方式,你要等到文件完全下载之后,您才可以观赏。

同样也增加了你的硬盘使用空间。

第二种视频处理的类型叫:

progressivedownload(渐进式下载),它就像一种混合下载和流的视频,同样视频文件会被下载,但是它不用等到全部下载完就可以播放了。

无论如何,文件最后还是会下载到用户的硬盘中,这种处理也不是真正的流。

第三种视频处理类型,如果在你的服务器上有FMS3,可以让视频流从你的服务器。

这章向您展示了怎么样使用FMS3建立和播放流文件FlashVideo(FLV)。

2.2.最简单的项目

开始建立你的工程的时候,用AS3.0建立一个FLV文件最少需要以下的包和类(客户端):

Packages

fl.controls.Button;

fl.controls.TextInput;

flash.display.Sprite;

.NetConnection;

.NetStream;

flash.events.NetStatusEvent;

flash.events.MouseEvent;

flash.events.Event;

.ObjectEncoding;

flash.media.Camera;

flash.media.Microphone;

flash.media.Video;

KeyClasses

NetConnection

NetStream

Camera

Microphone

Video

Button

以上列出的包和类都是使用FMS3录制和播放FLV文件所需要的,在这些包中,最重要的是导入ObjectEncoding包。

FMS2(如果你使用它替换FMS3)要求NetConnection的属性defaultObjectEncoding的AMF默认值改为0,如下:

NetConnection.defaultObjectEncoding=.ObjectEncoding.AMF0;

对于FMS2的用户,如果你在客户端使用AS3.0,你将会在本书中看到这个属性,只好不要注释defaultObjectEncoding这行。

一个更重要的琐事之事,在你取得实际编码之前。

你需要一个叫vid2的服务端目录,这将会是你的FMS应用程序的目录,虽然它不需要一个服务器端(ASC)文件,但是运行你的应用程序是所必须的,当你第一次运行你的应用程序,你会发现在vid2目录下有一些其它的目录。

2.2.1.摄像头和麦克风

录制视频,你将需要一个摄像头和麦克风连接到了你的电脑上。

一些网络摄像头有内置麦克风,许多电脑也有内置麦克风,尤其是笔记本和大多数的Macintosh电脑。

在本章中的例子包含一些的摄像头设置,这些会在第3章中解释说明。

下面一行代码设置摄像头的捕捉宽和高为240X180,帧率为24:

cam.setMode(240,180,24);

设置质量为90:

cam.setQuality(0,90);

对于本章中最简单的应用程序,这些你都需要知道。

但是对于精调你的应用程序时,你需要花更多时间在这些设置和优化你的应用程序的效率上。

2.2.2.用最少的代码来录制FLV文件

对于AS3.0,你可以用最少的配置来建立你的完整的应用程序。

对此,本书中的其它例子了,你将看到如何使用AS3.0,可以简单地来建立任何你所需要的事情。

一开始,你需要建立一个MinRecord.fla文件,添加一个Button和TextInput组件到库中,这样你就可以用这些组件的类名来添加它们到舞台上。

下面的代码片断展示了怎么样建立:

varrecordBtn:

Button=newButton();

另外你还需要导入正确的类:

fl.controls.Button。

最后使用addChild()方法把组件添加到舞台上。

使用实例的x和y属性,你可以把它们放置在舞台的任何地方。

为了显示你的视频,你需要一个Video实例。

Video实例是用来显示你的Camera对像(摄像头可以见到的东西)。

同样,你需要一个Microphone实例来处理你的声音数据,好让它可以被录制。

为了连接和串流声音及视频,你需要一个NetConnection实例和一个NetStream实例。

把它们串在一起,你将需要做以下事件:

∙为捕捉视频和声音建立camera和microphone对像

∙放置一个video实例在舞台

∙用RTMP地址连接到服务器(NetConnection.connect(”rtmp:

//url/app/inst”)),建立一个流,传输视频和声音到媒体服务器(它们将被录制成一个FLV文件)

下面的伪代码说明了,用来传输声音和视频到媒体服务器的相关顺序:

1.建立camera,microphone,andvideo实例

varcam:

Camera=Camera.getCamera();

varmic:

Microphone=Microphone.getMicrophone();

varvid:

Video=newVideo(w,h);

2.设置网络连接和流

varnc:

NetConnection=newNetConnection();

nc.connect(”rtmp:

//www.myFMS

varns:

NetStream=newNetStream(nc);

3.添加摄像头到视频中和摄像头和麦克风添加到网络流中

vid.attachCamera(cam);//Thisissothatyoucanseevideo

ns.attachAudio(mic);//Giveaudioarideonthestream

ns.attachCamera(cam);//Givevideoarideonthestream

4.发布网络流

ns.publish(”FLVname”,”record”);

注意:

当你实例化一个camera和microphone对像时,使用的是get方法,而不是new。

实例化一个camera对像的正确语法如下:

varmyCam:

Camera=Camera.getCamera();

实例化microphone:

varmyMic:

Microphone=Microphone.getMicrophone();

FLV文件最后保存在你的应用程序目录中的streams目录中。

在本例中,FMS服务器的目录排列看起来像这样:

applications->vid2->streams->recordings->flvfiles

在下面,将把它们集合在一起。

大部分实例都声明为私有变量。

一个重要的方法:

checkConect,使用NetStatusEvent来检测连接是否连接成功。

事件侦听器被添加到NetConnection实例nc上:

nc.addEventListener(NetStatusEvent.NET_STATUS,checkConnect);

如果连接成功,然后实例NetStream。

这是重要的:

在整个本书中保持这种做法,使您的应用程序,不会在没有连接到FMS时就尝试创建一个网络流。

准备好后,然后执行下面步骤:

1打开一个新的Flash文件,保存为MinRecord.fla

2打开窗口->属性。

在文档类中输入MinRecord,保存文件

3建立一个新的ActionScript文件,保存为MinRecord.as与MinRecord.fla同一目录

4在MinRecord.as文件中,添加Example2-1中的代码,保存

Example2-1.MinRecord.as

CodeView:

package

{

importfl.controls.Button;

importfl.controls.TextInput;

importflash.display.Sprite;

import.NetConnection;

import.NetStream;

importflash.events.NetStatusEvent;

importflash.events.MouseEvent;

importflash.events.Event;

//import.ObjectEncoding;

importflash.media.Camera;

importflash.media.Microphone;

importflash.media.Video;

publicclassMinRecordextendsSprite

{

privatevarnc:

NetConnection;

privatevarns:

NetStream;

privatevarrtmpNow:

String;

privatevarmsg:

Boolean;

privatevarcam:

Camera;

privatevarmic:

Microphone;

privatevarvid1:

Video;

privatevarrecordBtn:

Button;

privatevarstopBtn:

Button;

privatevartextInput:

TextInput;

//Constructor

functionMinRecord()

{

//NetConnection.defaultObjectEncoding=.ObjectEncoding.AMF0;

nc=newNetConnection();

nc.addEventListener(NetStatusEvent.NET_STATUS,checkConnect);

rtmpNow=”rtmp:

//192.168.0.11/vid2/recordings”;

//rtmpNow=”rtmp:

/vid2″;

nc.connect(rtmpNow);

addMedia();

addUI();

recordBtn.addEventListener(MouseEvent.CLICK,startRecord);

stopBtn.addEventLi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 可爱清新

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1