3

Flex 4 のオープン ソース メディア フレームワークを使用して、シンプルなビデオ プレーヤー SWF を作成しようとしています。ユーザーが入力したビデオのサイズに基づいて動的にスケーリングしたいと考えています。Adobe ヘルプ サイトの指示に従っていますが、ビデオが適切に拡大縮小されないようです。サイズによっては、ビデオが Web ページに割り当てられたスペースよりも大きく再生されることもあれば、小さく再生されることもあります。適切に動作させる唯一の方法は、幅と高さをハードコーディングする 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);
    }
}}
4

1 に答える 1

-1

flex についてはよくわかりませんが、StrobeMediaPlayback という OSMF プレーヤーを使用して、html ページに埋め込んでみました。actionscript (プレーヤー コード内) で ExternalInterface.call() 関数を使用して呼び出すことができる JavaScript ブリッジがあります。

そこで、swf のサイズを変更するための JavaScript 関数を作成し (jquery を使用して簡単に実行できます)、ビデオのスケーリングが必要になるたびに actionScript から呼び出しました。

これが役立つかどうかを確認してください。

于 2013-01-23T12:11:47.343 に答える