FMS3系列(三):创建基于FMS的流媒体播放程序,看山寨帮的山寨传奇【转】
本文主要介绍怎么去创建基于FMS的流媒体播放程序,Flash客户端通过网络加载FMS服务器上的视频流文件(.flv,.mp4等),实现视频流的播放。
?????要实现媒体流文件的播放是非常简单的,只要在FMS服务器上提供好流媒体文件,Flash客户端通过NetConnection连接到FMS服务器,然后通过NetStream加载就OK。关于怎么连接FMS在本系列的前两篇已有详细介绍,首先得在fms上建立好服务器应用并部署好媒体文件,如下图示:
??????????
?
?
?????下面是在Flash中开发的流媒体文件播放示例程序:
?????OK,我们已经实现了流媒体文件的播放,下面我们来扩展程序的功能,为前面的视频播放程序加上播放、暂停、停止以及重新播放等功能。这时可以在界面上放置几个按扭来驱动这些功能,添加按扭代码如下(当然也可以直接拖拽Botton组件):
?
import?flash.display.*;
?2
import?flash.events.*;
?3
import?flash.net.*;
?4
import?fl.controls.*;
?5
?6
var?nc:NetConnection?=?new?NetConnection();
?7
var?ns:NetStream;
?8
var?video:Video;
?9
10
var?btnPlay:Button=new?Button();
11
btnPlay.x=10;
12
btnPlay.y=250;
13
btnPlay.width=50;
14
btnPlay.label="播放";
15
btnPlay.addEventListener(MouseEvent.CLICK,onPlayHandler);
16
addChild(btnPlay);
17
18
var?btnPause:Button=new?Button();
19
btnPause.x=80;
20
btnPause.y=250;
21
btnPause.width=50;
22
btnPause.label="暂停";
23
btnPause.addEventListener(MouseEvent.CLICK,onPauseHandler);
24
addChild(btnPause);
25
26
var?btnStop:Button=new?Button();
27
btnStop.x=150;
28
btnStop.y=250;
29
btnStop.width=50;
30
btnStop.label="停止";
31
btnStop.addEventListener(MouseEvent.CLICK,onStopHandler);
32
addChild(btnStop);
33
34
var?btnReplay:Button=new?Button();
35
btnReplay.x=220;
36
btnReplay.y=250;
37
btnReplay.width=80;
38
btnReplay.label="重新播放";
39
btnReplay.addEventListener(MouseEvent.CLICK,onReplayHandler);
40
addChild(btnReplay);
41
42
nc.connect("rtmp://192.168.1.103/PlayStreams");
43
nc.addEventListener(NetStatusEvent.NET_STATUS,onStatusHandler);
44
45
function?onStatusHandler(evt:NetStatusEvent):void
46
{
47
????trace(evt.info.code);
48
????if(evt.info.code=="NetConnection.Connect.Success")
49
????
{
50
????????playStream();
51
????}
52
}
53
54
function?playStream():void
55
{
56
????ns=new?NetStream(nc);
57
????ns.addEventListener(NetStatusEvent.NET_STATUS,onStatusHandler);
58
????ns.client=new?CustomClient();
59
????video=new?Video();
60
????video.attachNetStream(ns);
61
????ns.play("2009031302",0);
62
????addChild(video);
63
}
64
65
function?onPlayHandler(evt:MouseEvent):void
66
{
67
????ns.resume();
68
}
69
70
function?onPauseHandler(evt:MouseEvent):void
71
{
72
????ns.pause();
73
}
74
75
function?onStopHandler(evt:MouseEvent):void
76
{
77
????ns.close();
78
}
79
80
function?onReplayHandler(evt:MouseEvent):void
81
{
82
????ns.close();
83
????playStream();
84
}
85
86
?
?????如果在Flex环境下开发,更方便实现,详细本文就不做介绍了,核心代码和Flash里开发是一样的。

????