基于Flex的flv简易播放器

最近在项目中要用到flv播放器,由于flex自带的VideoDisplay组件不是很好用,就自己简单实现了一个,界面不是很美观,但功能都有了,正可谓麻雀虽小五脏俱全。下面是播放器的代码,还不会用flash做flv播放器的朋友,可以参考参考。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" 
                 xmlns:local="*" creationComplete="init()">
<mx:Script>
    <![CDATA[
        private function init():void
        {
            player.source = "http://web.qqvideo.tc.qq.com/3/5KjbHbPKnDF.flv";
        }
    ]]>
</mx:Script>
    <mx:VBox width="100%">
        <local:Player id="player" autoPlay="true"/>
    </mx:VBox>
</mx:Application>

由于用的是网络上的视频,加载速度可能有点慢~

播放器组件 (Player.mxml) 代码如下:
(更多…)

Posted in Flex. Tags: , . 没有评论 »

开源FLV播放器FX Video中的Bug

FX Video是一个开源的基于Flex的flv播放器,不知道有没有人用过,它扩展自Flex中的标准组件VideoDisplay,即支持HTTP,又支持RTMP。最近在做公司的一个项目时用到了,发现它在用RTMP协议播放时,有几个Bug。
1. 还未设置其source属性时,进度条就已经加载了一段。
2. 基于RTMP协议播放时,本来应该是可以随时拖拽进度条的,它却不能。
3. 基于RTMP协议播放时,它不能通过点击进度条上的位置来播放影片的对应时刻。
通过分析其源代码,我找到了相应的解决方案。
1. 修改component.player.controls包下的FXProgressSlider类,将其私有属性_progress的默认值改为0.0001(只要是一个很小的数就行了,但不能是0,原值是20)。
2. 修改component.player.controls包下的FXSlider类,将其原方法:

private function get boundMax():Number
{
    return Math.max(thumb.width/2, bound.width - thumb.width/2) ;
}

改为:

private function get boundMax():Number
{
    return Math.max(thumb.width/2, this.unscaledWidth - thumb.width/2) ;
}

改完后,可以拖拽了,但是如果将进度条直接拖拽到最后时,界面会立即卡在拖拽前的那一帧上,很不友好,可以将原方法:
(更多…)

Posted in Flex. Tags: , , , . 没有评论 »