我正在尝试使用 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);
}
}}
最佳答案
我不太了解 flex,但我使用了一个名为 StrobeMediaPlayback 的 OSMF 播放器并将其嵌入到 html 页面中。有一个 javascript 桥,您可以使用 actionscript 中的 ExternalInterface.call() 函数(在播放器代码中)调用它。
所以我编写了一个 javascript 函数来调整 swf 的大小(可以使用 jquery 轻松完成)并在视频必须缩放时从 actionScript 调用它。
看看这是否对您有帮助。
关于apache-flex - 如何在 ActionScript 3/Flex 中缩放 OSMF 播放器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2635178/