FMS 3 中文帮助文档2Word文档格式.docx
- 文档编号:16690317
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:52
- 大小:215.25KB
FMS 3 中文帮助文档2Word文档格式.docx
《FMS 3 中文帮助文档2Word文档格式.docx》由会员分享,可在线阅读,更多相关《FMS 3 中文帮助文档2Word文档格式.docx(52页珍藏版)》请在冰豆网上搜索。
编写客户端代码
在客户端代码里面,你需要检查特别连接的code并处理他们,只有在客户端接受到NetConnection.Connect.Success后才能创建实况流或者播放已经编码的流。
的那个客户端接受到NetConnection.Connect.AppShutDown,所有的从服务器到客户端或者从客户端到服务器的流被关闭。
在那种情况下,关闭和服务器的连接。
注释:
查看SimpleConnectManagesample,SimpleConnectManage.as,使用ActionScript3.0.写的。
1,创建一个NetConnect对象并且调用connect()方法来连接到服务器。
2,编写netStatus时间处理函数,在这里面,要检查特别的connection的code,并且对每个code进行处理。
publicfunctionnetStatusHandler(event:
NetStatusEvent):
void
{
trace("
connectedis:
"
+nc.connected);
event.info.level:
+event.info.level);
event.info.code:
+event.info.code);
switch(event.info.code)
{
case"
NetConnection.Connect.Success"
:
Congratulations!
you'
reconnected"
);
//createlivestreams
//playrecordedstreams
break;
NetConnection.Connect.Rejected"
trace("
Oops!
theconnectionwasrejected"
//trytoconnectagain
NetConnection.Connect.Failed"
Theservermaybedownorunreachable"
//displayamessagefortheuser
NetConnection.Connect.AppShutDown"
Theapplicationisshuttingdown"
//thismethoddisconnectsallstreamobjects
nc.close();
NetConnection.Connect.Closed"
Theconnectionwasclosedsuccessfully-goodbye"
//displayareconnectbutton
}
运行代码
这些说明可以应用月任何的actionscript3.0的范例,即便在这个向导里面没有flash用户界面。
Actionscript3.0的代码的提供是为例方便你。
1.检查客户端的代码来查看连接到哪一个应用程序:
nc.connect("
rtmp:
//localhost/HelloServer"
2.在服务器上创建一个应用程序实例的路径来注册应用程序,例如RootInstall/applications/HelloServer
3,可选,或者,要使用一个你已经注册过的应用程序,改变connect中的URI:
//localhost/MyApplication"
4,在AdobeFlexBuilder或者有FlexBuilder插件的Eclipse里面,创建一个名叫SimpleConnectManage的actionscript项目(选择文件>
新建>
actionscript项目然后根据向导一步一步的做)。
5向项目中添加SimpleConnectManage的范例文件
6.选择run>
debug,在debug窗口中,在project项目中输入SimpleConnectManage,在Applicationfile中输入SimpleConnectManage.as,点击debug。
7.关闭打开的空的应用程序的窗口,返回FlexBuilderorEclipse.,检查控制台窗口的消息。
如果连接成功的话,你应开看到如下的输出:
true
status
NetConnection.Connect.Success
reconnected
[SWF]C:
\samples\SimpleConnectManage\bin\SimpleConnectManage-debug.swf-2,377bytesafterdecompression
3.3编码的流
3.3.1播放编码的流
AdobeFlashMediaServer一个最流行的用处就是将存储在服务器上的编码好的视频和音频以流的方式传输到很多客户端。
要播放编码的流,传入一个编码好的文件的URI给NetStream.Play()方法,如下
ns.play("
bikes"
这行制定了你在通过NetConnection.connect()连接到的应用程序上的一个较bikes.flv的编码好的流。
简单的来说,play()方法有四个参数,语法如下:
publicfunctionplay(name:
Object[,start:
Number[,len:
Number[,reset:
Object]]]):
void
name
编码好文件的名字
start
播放的开始点之前的时间,以秒为单位
len
要播放的长度,以秒为单位
reset
是否清除在播放列表里面之前播放过的视频
这些参数在actionscript3.0语言和组件参考中的NetStream.play()中有详细描述。
3.3.2捕捉视频的简单影像
这个特征是你可以得到给定视频,包括音频的很小一段的简单影像,用作显示的目的。
Flashplayer客户端被允许从被Client.audioSampleAccess和Client.videoSampleAccess属性制定的流中得到数据,查看actionscript3.0语言和组件参考。
要得到数据,调用在客户端调用BitmapData.draw()和SoundMputeSpectrum(),查看actionscript3.0编程中的捕获声音输入。
在播放器里面播放的流可以通过使用累计的下载或者RTMP流来处理
3.3.3处理流中的元数据
一个编码好媒体文件拥有通过服务器或其他工具编码进的元数据。
FlashVideoExporterutility(version1.1orlater)是一个可以挖掘处理视频的长度,帧率和其他视频自身信息的工具。
其他的视频编码器挖掘不同的元数据集,或者你可以明确的添加你自己的元数据(查看向实况流添加元数据)。
NetStream对象在客户端播放流,当流遇到原属据时就会发出onMetaData事件。
要读取元数据,你必须处理这个事件并且提取出包含元数据的info对象。
例如,如果一个文件被FlashVideoExporter,编码,info对象包含这些属性
长度
视频的长度
宽度
视频的宽度
高度
视频的高度
帧率
视屏被编码的帧率
在《向实况视屏中添加元数据》中有一个列表的属性名,Adobe建议用户在从客户端传到服务器的实况视频流中添加元数据。
3.4视频播放范例
如果你已经创建了一个可以连续下载视频的Flash视频播放的界面,你可能使用了FLVPlayback组件来设计你的视频播放器的界面。
这个指南使用不同的技术,用Actionscript3.0在舞台添加一个Video对象。
这个指南里面使用了Streams范例,Streams.as,在sampleZIP文件里面。
要在Flash里面使用FLVPlayBack组件,查看AdobeCreativeSuite3VideoWorkshop,"
CreatingaVideoApplicationwithComponents"
和TheHTMLtutorial,"
在Flash里面运行范例
要运行范例的最简单的方法就是在你的即是服务器,又是客户端的电脑上安装应用程序。
1.在客户端的sample目录里面放置Streams.as文件
2.在服务器端创建一个目录来注册应用程序:
RootInstall/applications/Streams。
3.将Stream范例文件夹(包括Stream.fla)复制到Streams应用程序的目录下,你英豪又一个包含thevideofile,bikes.flv:
文件的名叫streams/_definst_的文件夹。
4.(可选)要在不同的电脑上运行范例,打开Streams.as然后编辑如下一行代码,在里面加上你的服务器上的应用程序实例的URI。
//localhost/Streams"
查看《连接到服务器》可以得到构造URL的细节。
5.在FlashCs3里面,打开复制到FlashMediaServerapplications的Streams.fla文件。
6.选择控制>
测试音影片。
没有声音的视频就会播放,输出面板输出如下内容。
你可以看到随着流的播放和连接状态的改变而看到输出的变化。
NetStream.play()的调用引发了onMetaData事件的发生,元数据就会在控制台窗口输出如下
metadata:
duration=30width=292height=292framerate=30
在Flex里面运行范例
1.在FlexBuilder或者安装了FlexBuilder插件的Eclipse里面打开Stremes.as
2.选择Run>
Debug,在Project里面选择Stremes,在Application里面选择Stremes.as。
3.点击Debug。
一个视频播放的应用程序的窗口打开。
点击FLexBuilder的窗口来看输出信息,完整的信息如下:
NetStream.Play.Reset
NetStream.Play.Start
\samples\Streams\bin\Streams-debug.swf-3,387bytesafterdecompression
NetStream.Buffer.Full
NetStream.Play.Stop
Thestreamhasfinishedplaying
NetStream.Buffer.Flush
handlingplaystatushere
NetStream.Buffer.Empty
编写一个主客户端的类
用Actionscript3.0来看Stremes范例,Stremes.as
1.创建一个Acrionscrip3.0的类。
导入NetConnection,NetStreme类和其他你需要的类:
package{
importflash.display.Sprite;
import.NetConnection;
importflash.events.NetStatusEvent;
import.NetStream;
importflash.media.Video;
...
}
2.创建一个新Stremes类,在里面申明你需要的变量。
publicclassStreamsextendsSprite
varnc:
NetConnection;
varstream:
NetStream;
varplayStream:
varvideo:
Video;
3.定义Stremes类的构造函数,创建一个NetConnection对象,并且为它添加事件侦听器,然后将它连接到服务器。
publicfunctionStreams()
nc=newNetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);
nc.connect("
4.创建你的netStatusHandler函数(它会处理NetConnection和NetStreme发出的事件)
privatefunctionnetStatusHandler(event:
connectStream(nc);
//createPlayList(nc);
//insteadyoucanalsocallcreatePlayList()here
NetStream.Play.Stop"
Thestreamhasfinishedplaying"
NetStream.Play.StreamNotFound"
Theservercouldnotfindthestreamyouspecified"
NetStream.Publish.BadName"
Thestreamnameisalreadyused"
要知道完整的可用的事件的code的列表,在Actionscript3.0语言和组件参考中查看NetStatusEvent.info
1创建NetStreme对象,并且注册一个netStatus侦听器
privatefunctionconnectStream(nc:
NetConnection):
void{
stream=newNetStream(nc);
stream.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);
stream.client=newCustomClient();
...
注意你要设置client属性为一个CustomClient类的实例。
CustomClient类是一个定义一些特别的事件处理的需要你自己写的独立的类。
2.创建一个Video对象然后将它和流绑定
video=newVideo();
video.attachNetStream(stream);
这里我们用Actionscript3.0创建了一个Video对象,你也可以通过拖动一个Video原件到舞台上来创建它。
在Actionscript3.0里面,使用Video.attachNetStreme(),而不是actionscript2.0里面的Video.attachVideo()将Video对象和流绑定。
3.调用NetStreme.Play来播放流并且通过addChild来将它添加到舞台:
stream.play("
0);
addChild(video);
如果你拖动一个Video原件到舞台上的话你就不需要调用addChild()方法。
传递给NetStreme.play方法的流的URI和你传递给NetConnection.connect()的URI相关。
编写一个客户端事件处理类
你也需要编写一个CustomClient类,这个来包括了onMetaData和onPlatStatus事件的处理器。
在你调用NetStreme.play()的时候你必须处理这些事件,但是你不能使用addEventListener()方法来注册这些事件的处理器。
1.在你的主的客户端的类中,在NetStreme.client属性中关联到一个新的类
stream.client=newCustomClient();
2.创建一个客户端的类:
classCustomClient{
3.编写一个名为onMetaData()的函数来处理onMetaData事件:
publicfunctiononMetaData(info:
Object):
duration="
+info.duration+"
width="
+info.width+
height="
+info.height+"
framerate="
+info.framerate);
4.编写一个名为onPlayStatus()的函数来处理onPlayStatus事件:
publicfunctiononPlayStatus(info:
handlingplaystatushere"
在播放视频之前进行检查
在播放前使用FLVCheck工具来检查一个编码好的视频是否有错误。
视频文件中的错误会阻碍视频的正常播放。
查看AdobeFlashMediaServer配置和管理向导以获得更多信息。
3.4错误处理
3.4.1关于错误处理
在你创建视频应用程序的时候,学习管理连接和流的艺术是非常重要的。
再网络环境里面,一个连接的尝试可能会应为很多原因而失败:
1.在服务器和客户端的任何一段的网络瘫痪。
2.尝试连接到服务器的URI不正确。
3.服务器瘫痪或者繁忙。
4.已经到达最大连接数或最大带宽。
如果一个连接被成功的建立,你可以创建一个NetStream对象和视频流。
然而,流可能会发生错误。
你会需要在显示器上显示当前的帧频,关心缓冲变空的信息,下载的范例视频和发生错
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FMS 中文帮助文档2 中文 帮助 文档
![提示](https://static.bdocx.com/images/bang_tan.gif)