PDA

Просмотр полной версии : StageVideo и BitmapData


uglan
14.10.2013, 15:10
Привет!
Есть какой-то способ достать кадр из виде в битмапдате или другом формате пригодном для дальнейшего использования как DisplayObject? На bytearray.org есть инфа (http://www.bytearray.org/?p=2571) по этому поводу всколзь, но я не понял как именно стоит выгонять битмапу из video объекта.

alatar
14.10.2013, 15:53
StageVideo не получится отрисовать в BitmapData. Если в качестве источника видео используется Camera, то можено получить BitmapData из нее. В SimpleStageVideo (https://code.google.com/p/simplestagevideo/source/browse/trunk/SimpleStageVideo/src/org/bytearray/video/SimpleStageVideo.as) описысваемом на bytearray используется переключение между StageVideo и Video (flash.media.Video), который является наследником DisplayObject и, соответственно, может быть отрисован в BitmapData.

uglan
14.10.2013, 15:55
И переключение это происходит при событии SimpleStageVideoToggleEvent.TOGGLE?

Я почему спрашиваю, вот к примеру код (http://code.google.com/p/simplestagevideo/source/browse/trunk/SimpleStageVideo/src/org/bytearray/video/events/SimpleStageVideoToggleEvent.as?r=15) SimpleStageVideoToggleEvent и здесь все возвращаемые значения строковые. А с этим каши не сваришь... Как из этого можно получить объект video?

alatar
14.10.2013, 16:39
Нет, переключение происходит при вызове метода toggle(false).

uglan
14.10.2013, 18:08
Что-то не выходит никак:(
simpleStageVideo.addEventListener(SimpleStageVideoToggleEvent.TOGGLE,onToggle);
stage.addEventListener(MouseEvent.CLICK,onClick)
private function onClick(e:MouseEvent):void{
simpleStageVideo.toggle(true);
}
private function onToggle(o:Object):void{
trace("TOGGLE!");
var underlyingStageVideo:StageVideo = simpleStageVideo.stageVideo;
var underlyingVideo:Video = simpleStageVideo.video;
bmd.draw(underlyingVideo);
}

В таком виде нет результата:( Видео играет, onToggle срабатывает, но кадр из видео в битмапдату не перерисовывается. Что не так?

Добавлено через 49 минут
Получилось достать битмапдату из кадра и в обычном StageVideo из Video. Не понял, почему везде пишут что этого сделать нельзя... :)

alatar
15.10.2013, 01:52
В таком виде нет результата:( Видео играет, onToggle срабатывает, но кадр из видео в битмапдату не перерисовывается. Что не так?
Должно быть simpleStageVideo.toggle(false);

Получилось достать битмапдату из кадра и в обычном StageVideo из Video.
Вы в этой фразе противоречий не видите?

uglan
16.10.2013, 23:41
Да, понял ошибку, но, честно говоря, отличий между StageVideo и Video я не заметил(не ХД), а возможность грабить кадр в моем случае важнее. Спасибо!)

alatar
17.10.2013, 14:54
Отличия у них кардинальные. Video визуализируется флеш-плеером, а StageVideo операционкой. Грубо говоря плеер предоставляет операционной системе область в которую можно отрисовывать декодированное видео и источник видео и больше в этот процесс не вмешивается.