我正在使用Flash Builder并创建了一个spark-application Flex项目,该项目将从本地摄像头流式传输视频。如果我使用mx.controls.VideoDisplay
;没有问题,因为它有attachCamera(camera)
方法。但Spark的VideoDisplay
组件没有这种方法。我知道我可以在Spark应用程序中使用mx控件,但我想知道:
spark.components.VideoDisplay
和mx.controls.VideoDisplay
之间的真正区别是什么?spark.components.VideoDisplay
?感谢。
编辑:在文档中提到了这一点:“从Flex 4.0开始,Adobe建议您使用spark.components.VideoPlayer类作为此类的替代方法。(mx。 controls.VideoDisplay)“
答案 0 :(得分: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);
}
答案 1 :(得分:4)
直接,答案是你无法将相机连接到Spark VideoDisplay
。抱歉。我也试图让这种情况发生,但我不得不默认使用mx VideoDisplay
并且使用它没有任何问题:)
Spark更新,我更愿意尽可能使用它,但在这种情况下,你只需要使用MX控件。它发生了。
答案 2 :(得分:2)
我尝试将相机附加到videoDisplay.videoObject
- 但视频对象始终为空,这会引发错误。
为了解决这个问题,我创建了一个虚拟的DynamicStreamingVideoObject并将其作为源
传递_cam = new DynamicStreamingVideoSource();
<s:VideoDisplay id="mycam" source="_cam" />
然后,在应用程序的creationComplete处理程序中,我做了这个
var cam:Camera = Camera.getCamera();
mycam.videoObject.attachCamera(cam);
这解决了这个问题。
答案 3 :(得分: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);
感谢
答案 4 :(得分:0)
更短的解决方法:
<s:VideoDisplay id="camVideoDisplay"
source="dummy"
autoPlay="false"
autoDisplayFirstFrame="false"/>
在这种情况下,Video对象可以引用为camVideoDisplay.videoObject
,例如:
camVideoDisplay.videoObject.attachCamera( .. );