FMS3 系列(三):创建基于FMS的流媒体播放程序,看山寨帮的山寨传奇
本文主要介绍怎么去创建基于FMS的流媒体播放程序,Flash客户端通过网络加载FMS服务器上的视频流文件(.flv,.mp4等),实现视频流的播放。
要实现媒体流文件的播放是非常简单的,只要在FMS服务器上提供好流媒体文件,Flash客户端通过NetConnection连接到 FMS服务器,然后通过NetStream加载就OK。关于怎么连接FMS在本系列的前两篇已有详细介绍,首先得在fms上建立好服务器应用并部署好媒体文件,如下图示:
下面是在Flash中开发的流媒体文件播放示例程序:
import flash.display.*; import flash.events.*; import flash.net.*; var nc:NetConnection = new NetConnection(); var ns:NetStream; var video:Video; nc.connect("rtmp://localhost/PlayStreams"); nc.addEventListener(NetStatusEvent.NET_STATUS,onStatusHandler); function onStatusHandler(evt:NetStatusEvent):void { trace(evt.info.code); if(evt.info.code=="NetConnection.Connect.Success") { ns=new NetStream(nc); ns.addEventListener(NetStatusEvent.NET_STATUS,onStatusHandler); ns.client=new CustomClient(); video=new Video(); video.attachNetStream(ns); ns.play("2009031301",0); addChild(video); } }
var btnPlay:Button=new Button(); btnPlay.x=10; btnPlay.y=250; btnPlay.width=50; btnPlay.label="播放"; btnPlay.addEventListener(MouseEvent.CLICK,onPlayHandler); addChild(btnPlay); var btnPause:Button=new Button();btnPause.x=80;btnPause.y=250;btnPause.width=50;btnPause.label="暂停";btnPause.addEventListener(MouseEvent.CLICK,onPauseHandler);addChild(btnPause); var btnStop:Button=new Button(); btnStop.x=150; btnStop.y=250; btnStop.width=50; btnStop.label="停止"; btnStop.addEventListener(MouseEvent.CLICK,onStopHandler); addChild(btnStop); var btnReplay:Button=new Button(); btnReplay.x=220; btnReplay.y=250; btnReplay.width=80; btnReplay.label="重新播放"; btnReplay.addEventListener(MouseEvent.CLICK,onReplayHandler); addChild(btnReplay); function onPlayHandler(evt:MouseEvent):void {} function onPauseHandler(evt:MouseEvent):void {} function onStopHandler(evt:MouseEvent):void {} function onReplayHandler(evt:MouseEvent):void {}
function playStream():void { ns=new NetStream(nc); ns.addEventListener(NetStatusEvent.NET_STATUS,onStatusHandler); ns.client=new CustomClient(); video=new Video(); video.attachNetStream(ns); ns.play("2009031302",0); addChild(video); }
function onPlayHandler(evt:MouseEvent):void { ns.resume(); } function onPauseHandler(evt:MouseEvent):void { ns.pause(); } function onStopHandler(evt:MouseEvent):void { ns.close(); } function onReplayHandler(evt:MouseEvent):void { ns.close(); playStream(); }
import flash.display.*;import flash.events.*; import flash.net.*; import fl.controls.*; var nc:NetConnection = new NetConnection(); var ns:NetStream; var video:Video; var btnPlay:Button=new Button();btnPlay.x=10;btnPlay.y=250;btnPlay.width=50;btnPlay.label="播放";btnPlay.addEventListener(MouseEvent.CLICK,onPlayHandler);addChild(btnPlay);var btnPause:Button=new Button();btnPause.x=80;btnPause.y=250;btnPause.width=50;btnPause.label="暂停";btnPause.addEventListener(MouseEvent.CLICK,onPauseHandler);addChild(btnPause);var btnStop:Button=new Button();btnStop.x=150;btnStop.y=250;btnStop.width=50;btnStop.label="停止";btnStop.addEventListener(MouseEvent.CLICK,onStopHandler);addChild(btnStop);var btnReplay:Button=new Button();btnReplay.x=220;btnReplay.y=250;btnReplay.width=80;btnReplay.label="重新播放";btnReplay.addEventListener(MouseEvent.CLICK,onReplayHandler);addChild(btnReplay);nc.connect("rtmp://192.168.1.103/PlayStreams");nc.addEventListener(NetStatusEvent.NET_STATUS,onStatusHandler);function onStatusHandler(evt:NetStatusEvent):void{ trace(evt.info.code); if(evt.info.code=="NetConnection.Connect.Success") { playStream(); }}function playStream():void{ ns=new NetStream(nc); ns.addEventListener(NetStatusEvent.NET_STATUS,onStatusHandler); ns.client=new CustomClient(); video=new Video(); video.attachNetStream(ns); ns.play("2009031302",0); addChild(video);}function onPlayHandler(evt:MouseEvent):void{ ns.resume();}function onPauseHandler(evt:MouseEvent):void{ ns.pause();}function onStopHandler(evt:MouseEvent):void{ ns.close();}function onReplayHandler(evt:MouseEvent):void{ ns.close(); playStream();}