Как мне прикрепить камеру к Spark.components.VideoDisplay - PullRequest
4 голосов
/ 14 ноября 2010

Я использую Flash Builder и создал проект Flex для Spark-приложения, который будет транслировать видео с локальной камеры.Если я использую mx.controls.VideoDisplay;нет проблем, так как у него есть метод attachCamera(camera).Но у компонента Spark VideoDisplay этот метод отсутствует.Я знаю, что могу использовать элементы управления mx внутри приложения Spark, но я хочу знать:

  • В чем реальная разница между spark.components.VideoDisplay и mx.controls.VideoDisplay?
  • Как мне прикрепитьКамера для spark.components.VideoDisplay?
  • Есть ли какие-либо преимущества, если я пойду с искрой (поскольку она новее для библиотеки mx)?

спасибо.

EDIT : в документации упоминается: « Начиная с Flex 4.0, Adobe рекомендует использовать класс spark.components.VideoPlayer в качестве альтернативы этому классу. (Mx.controls.VideoDisplay) «

Ответы [ 5 ]

14 голосов
/ 22 января 2011

Вот особенности, чтобы заставить это работать:

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); 
}
4 голосов
/ 15 ноября 2010

Сразу ответ, что вы не можете прикрепить камеру к Spark VideoDisplay. Сожалею. Я тоже пытался это сделать, но мне пришлось использовать mx VideoDisplay по умолчанию, и в этом нет ничего плохого :)

Spark новее, и я предпочитаю использовать его всегда, когда это возможно, но в этом случае вам просто нужно использовать элемент управления MX. Это случается.

2 голосов
/ 15 мая 2012

Искал решение для этого и нашел ниже

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);

спасибо

2 голосов
/ 12 января 2011

Я пытался подключить камеру к videoDisplay.videoObject - но videoObject всегда был нулевым, что выдает ошибку.

Для решения этой проблемы я создал фиктивный объект DynamicStreamingVideoObject и передал его в качестве источника

_cam = new DynamicStreamingVideoSource();

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

затем в обработчике creationComplete приложения я сделал это

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

это решило проблему.

0 голосов
/ 21 мая 2016

Укороченный обходной путь:

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

В этом случае на объект Video можно ссылаться как camVideoDisplay.videoObject, например ::

camVideoDisplay.videoObject.attachCamera( .. );
...