首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

Flex3播放器(版本二)

2012-11-22 
Flex3播放器(版本2)?xml version1.0 encodingutf-8?mx:Application xmlns:mxhttp://www.adobe.

Flex3播放器(版本2)

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="playinit()" width="500" height="400">


??? <mx:Script>
??? <![CDATA[
?????? import mx.events.SliderEvent;
?????? import mx.events.VideoEvent;
?????? import mx.collections.ArrayCollection;
?????? import mx.rpc.events.ResultEvent;
?????? import flash.display.Stage;
?????
?????? private var _video:ArrayCollection;??
?????? private var isplaying:Boolean=false;?????
?????? //private var video_url:String = "C:/video.flv";?????
?????? private var playPosition:Number;?????
?????? private var soundPosition:Number;
?????
?????? private function readXml(event:ResultEvent):void{
?????? _video = event.result.videos.video;
???????????? }??

?????? private function playinit():void{
??????? hs.enabled=false;
?????? }
?????
?????? private function flvplay(event:Event):void{
??????????? var query:String = ExternalInterface.call("window.location.search.substring", 1);
??????????? if(query) {?????
??????????????????? var pos:int = query.indexOf("=");
??????????????????? //Alert.show(String(pos));
??????????????????? if(pos != -1) {
??????????????????????? var value:String = query.substr(pos+1);
???????????????????????? }
??????????????? }
???????????
????? flv_video.source="tef.flv";
?????? //flv_video.source="c:/vedio.flv";
??????? hs.enabled=true;
??????? if(isplaying){
???????? flv_video.pause();
???????? play_btn.label="播放"
??????? }else {
???????? flv_video.play();
???????? play_btn.label="暂停"
??????? }
??????? isplaying = !isplaying;
??????? flv_video.addEventListener(VideoEvent.PLAYHEAD_UPDATE, progressHandler);???????
?????? }?????
?????? private function progressHandler(event:VideoEvent):void{
??????? hs.value=flv_video.playheadTime;
?????? }
?????????
?????? private function thumbPress(event:SliderEvent):void{
??????? flv_video.pause();
?????? }
?????? private function thumbChanges(event:SliderEvent):void{
??????? if(flv_video.playheadTime == -1){
????? hs.value = 0;
????? return;
???? }
??????? playPosition = hs.value;
?????? }?????
?????? private function thumbRelease(event:SliderEvent):void{
??????? flv_video.playheadTime = playPosition;
??????? if(isplaying){
???????? flv_video.play();
??????? }else{
???????? flv_video.pause();
??????? }
?????? }
?????
?????? private function sound_thumbChanges(event:SliderEvent):void{
??????? soundPosition = hs_sound.value;
?????? }????????
?????? private function sound_thumbRelease(event:SliderEvent):void{
??????? flv_video.volume = soundPosition;
?????? }
?????
?????? private function formatTimes(value:int):String{
??????? var result:String = (value % 60).toString();
??????
????????? if (result.length == 1){
????????????? result = Math.floor(value / 60).toString() + ":0" + result;
????????? } else {
????????????? result = Math.floor(value / 60).toString() + ":" + result;
????????? }
????????? return result;
?????? }
?????
??????????? private function display():void
??????????? {??
??????????????? if(fs.selected)??
??????????????? {??
???????????????? stage.fullScreenSourceRect =new Rectangle(flv_video.x,flv_video.y,flv_video.width,flv_video.height);????????????
?????????????????? //stage.displayState="fullScreen";
?????????????????? stage.displayState =StageDisplayState.FULL_SCREEN;
??????????????????? application.width="100%";
??????????????????? application.height="100%"
??????????????? }
??????????????? else
??????????????? {??
??????????????????? //stage.displayState="normal";??
??????????????????? stage.displayState = StageDisplayState.NORMAL;
??????????????? }??
??????????? }
???????????
??? ]]>
??? </mx:Script>
<mx:VideoDisplay?? id="flv_video" x="0" width="100%" height="332" y="0" source="{Application.application.parameters.movie}" autoPlay="false" autoRewind="true" bufferTime="0.5" maintainAspectRatio="true" />
<mx:ApplicationControlBar height="20" width="100%" bottom="53" x="0" horizontalAlign="center">
?? <mx:HSlider id="hs" fillColors="#000099,, #0000ff, #ffffff, #eeeeee" showTrackHighlight="true" minimum="0" maximum="{flv_video.totalTime}" thumbPress="thumbPress(event)" thumbRelease="thumbRelease(event)" change="thumbChanges(event)" width="90%" horizontalCenter="0"/>
</mx:ApplicationControlBar>
<mx:ApplicationControlBar width="100%" height="38" horizontalAlign="center" x="0" bottom="10">
?? <mx:ApplicationControlBar width="123" cornerRadius="15">
??? <mx:Button id="play_btn" click="flvplay(event)" label="播放" cornerRadius="13"/>
??? <mx:Button id="stop_btn" label="停止" cornerRadius="13" click="flv_video.stop();play_btn.label='播放';hs.enabled=false;" />
?? </mx:ApplicationControlBar>
?? <mx:ApplicationControlBar width="94" cornerRadius="15">
??? <mx:Label id="playtime" text="{formatTimes(flv_video.playheadTime)} : {formatTimes(flv_video.totalTime)}" color="#ffffff" width="77"/>
?? </mx:ApplicationControlBar>
?? <mx:ApplicationControlBar cornerRadius="15" width="100">
??? <mx:HSlider id="hs_sound" width="82" minimum="0" maximum="1" thumbRelease="sound_thumbRelease(event)" change="sound_thumbChanges(event)" value="{flv_video.volume}" />
?? </mx:ApplicationControlBar>
?? <mx:ApplicationControlBar color="#EC968F">
??? <mx:CheckBox label="全屏" id="fs" change="display();"/>
?? </mx:ApplicationControlBar>
</mx:ApplicationControlBar>
</mx:Application>

?

<!--

其中播放器播放源文件的路径是默认安装FMS3.0之后在

C:\Program Files\Adobe\Flash Media Server 3\applications\vod\media 之中。调用方式是flv_video.source="rtmp://localhost/vod/vedio.flv";可以通过修改配置文件改变视频存放目录


播放器的代码大多来自网上 只是有几点修改

第一 取得路径 由于安全机制 播放器只能通过服务器地址取值

第二 全屏问题
<param name="allowFullScreen" value="true" />
全屏时播放器大小不变
<mx:VideoDisplay?? id="flv_video" x="0" width="100%" height="90%" y="0" source="{Application.application.parameters.movie}" autoPlay="false" autoRewind="true" bufferTime="0.5" maintainAspectRatio="false" />
width="100%" height="90%"十分重要 这将会与
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="playinit()" width="500" height="400">密切相关


最终解决方法
stage.fullScreenSourceRect =new Rectangle(flv_video.x,flv_video.y,flv_video.width,flv_video.height);
第三 播放flv视频时不留下缓存
http://etoaoo.iteye.com/blog/341345

这个版本中的基本功能都可以实现 但是最后发现一个巨大的问题

可以被嗅探 Replay Media Catcher

这个软件通过记录网络包 并且以相同网络包给FMS服务器发包 骗取服务器的数据 然后自己一段一段组装成流媒体视频 这个漏洞几乎宣布了项目的死刑

不过解决方案很快就出来了

热点排行