如何在ActionScript 3 / Flex中扩展OSMF播放器

时间:2010-04-14 05:59:40

标签: flex actionscript-3 video osmf

我正在尝试使用Flex 4中的开源媒体框架创建一个简单的视频播放器SWF。我想根据用户输入的视频尺寸进行动态缩放。我按照the Adobe help site上的说明操作,但视频似乎没有正确缩放。根据大小,有时视频的播放时间大于网页上分配的空间,有时甚至更小。我能够让它正常工作的唯一方法是通过包含硬编码宽度和高度的SWF元数据标签,但如果我想让播放器动态调整大小,我就不能使用它。我的代码是:

package { 
import flash.display.Sprite;
import flash.events.Event;

import org.osmf.media.MediaElement;
import org.osmf.media.MediaPlayer;
import org.osmf.media.URLResource;
import org.osmf.containers.MediaContainer;
import org.osmf.elements.VideoElement;
import org.osmf.layout.LayoutMetadata;

public class GalleryVideoPlayer extends Sprite { 
    private var videoElement:VideoElement; 
    private var mediaPlayer:MediaPlayer;
    private var mediaContainer:MediaContainer;

    private var flashVars:Object;

    public function GalleryVideoPlayer() {
        if (stage) init();
        else addEventListener(Event.ADDED_TO_STAGE, init);
    }

    private function init(e:Event = null):void {
        removeEventListener(Event.ADDED_TO_STAGE, init);

        flashVars = loaderInfo.parameters;

        mediaPlayer = new MediaPlayer();

        videoElement = new VideoElement(new URLResource(flashVars.file));

        mediaContainer = new MediaContainer();

        var layoutMetadata:LayoutMetadata = new LayoutMetadata();
        layoutMetadata.width = Number(flashVars.width);
        layoutMetadata.height = Number(flashVars.height);

        videoElement.addMetadata(LayoutMetadata.LAYOUT_NAMESPACE, layoutMetadata);

        mediaPlayer.media = videoElement;
        mediaContainer.addMediaElement(videoElement); 

        addChild(mediaContainer);
    }
}}

1 个答案:

答案 0 :(得分:-1)

我对flex不太了解,但我使用了一个名为StrobeMediaPlayback的OSMF播放器并将其嵌入到html页面中。有一个javascript桥,您可以使用actionscript中的ExternalInterface.call()函数调用(在播放器代码中)。

所以我编写了一个javascript函数来调整swf的大小(可以使用jquery轻松完成),并在视频必须缩放时从actionScript调用它。

看看这对你有帮助。