4

我正在使用 Flash Builder 并创建了一个 spark-application Flex 项目,该项目将从本地摄像机流式传输视频。如果我使用mx.controls.VideoDisplay; 没有问题,因为它有attachCamera(camera)方法。但是 Spark 的VideoDisplay组件没有那个方法。我知道我可以在 Spark 应用程序中使用 mx 控件,但我想知道:

  • spark.components.VideoDisplay和之间的真正区别是什么mx.controls.VideoDisplay
  • 如何将相机连接到spark.components.VideoDisplay
  • 如果我使用 spark 有什么好处(因为它是 mx 库的新版本)?

谢谢。

编辑:在文档中提到:“从 Flex 4.0 开始,Adobe 建议您使用 spark.components.VideoPlayer 类作为此类的替代品。(mx.controls.VideoDisplay)

4

5 回答 5

14

以下是使其工作的具体细节:

import mx.events.FlexEvent;

import org.osmf.net.StreamType;

import spark.components.mediaClasses.DynamicStreamingVideoItem;
import spark.components.mediaClasses.DynamicStreamingVideoSource;

private var _cam:DynamicStreamingVideoSource =  new DynamicStreamingVideoSource();
private var _dynVideoSource:DynamicStreamingVideoSource;

protected function application1_creationCompleteHandler(event:FlexEvent):void
{

    _dynVideoSource=new DynamicStreamingVideoSource();

    var videoItems:Vector.<DynamicStreamingVideoItem>;
    videoItems=new Vector.<DynamicStreamingVideoItem>();
    videoItems[0]=new DynamicStreamingVideoItem();

    _dynVideoSource.host= "";
    _dynVideoSource.streamType=StreamType.LIVE;
    _dynVideoSource.streamItems=videoItems;

    mycam.source=_dynVideoSource;

    var cam:Camera = Camera.getCamera(); //Camera.names[0]);
    cam.setMode(640, 480, 15);
    cam.setQuality(0, 80);
    mycam.videoObject.attachCamera(cam); 
}
于 2011-01-22T09:09:59.593 回答
4

直截了当,答案是您不能将相机连接到 Spark VideoDisplay。对不起。我也试图做到这一点,但我不得不默认使用 mxVideoDisplay并且使用它没有任何问题:)

Spark 较新,我也更喜欢尽可能使用它,但在这种情况下,您只需要使用 MX 控件。它发生了。

于 2010-11-14T22:36:58.187 回答
2

我试图将相机连接到videoDisplay.videoObject- 但 videoObject 始终为空,这会引发错误。

为了解决这个问题,我创建了一个虚拟 DynamicStreamingVideoObject 并将其作为源传递

_cam = new DynamicStreamingVideoSource();

<s:VideoDisplay id="mycam" source="_cam" />

然后,在应用程序的 creationComplete 处理程序中,我这样做了

var cam:Camera = Camera.getCamera();
mycam.videoObject.attachCamera(cam); 

这解决了这个问题。

于 2011-01-11T23:43:36.397 回答
2

一直在寻找解决方案并找到以下内容

var cam:Camera = Camera.getCamera(); 
cam.setMode(320, 240, 15);
cam.setQuality(0, 0);
var myCam:Video = new Video(320,240);
myCam.attachCamera(cam);
myVideo.addChild(myCam);

谢谢

于 2012-05-15T09:54:22.260 回答
0

更短的解决方法:

<s:VideoDisplay id="camVideoDisplay"
                source="dummy"
                autoPlay="false"
                autoDisplayFirstFrame="false"/>

在这种情况下,可以将 Video 对象引用为camVideoDisplay.videoObject,例如:

camVideoDisplay.videoObject.attachCamera( .. );
于 2016-05-21T14:07:33.743 回答