Получить случайный (или первый) кадр из видео, используя flex - PullRequest
2 голосов
/ 07 декабря 2011

Я занимаюсь разработкой приложения для записи видео и предварительного просмотра их в виде списка листов.Есть ли способ захватить кадр видео для использования в качестве эскиза в моем списке?Я использую Flex 4.5.

Ответы [ 3 ]

1 голос
/ 09 декабря 2011

С этот ответ :

var frameGrab:BitmapData = new BitmapData(clip.width, clip.height, false, 0);
frameGrab.draw(clip); // the .draw() method will copy the frame from your video.
var frame:Bitmap = new Bitmap(frameGrab);
0 голосов
/ 25 августа 2015

Еще один способ сделать это: подключить прослушиватель событий к видеопотоку (т. Е. NetStream), например:

var vConnection:NetConnection = new NetConnection();
vConnection.connect(null);
var vStream:NetStream = new NetStream(vConnection);
vStream.addEventListener(NetStatusEvent.NET_STATUS, onNetStatusChange);

Затем прослушиватель выглядит так:

protected function onNetStatusChange(event:NetStatusEvent):void
{
    switch(event.info.code)
    {
        case "NetStream.Play.Start": 
        {
            vStream.seek(1); // seek to key frame
            break;
        }
        case "NetStream.Video.DimensionChange":
        {
            // after a dimension change we have a loaded frame
            // do whatever you want here, but keep in mind 
            // that the video needs to be on the display list 
            // if you want to draw it   
            break;
        }
        default: break;
    }
}
0 голосов
/ 09 декабря 2011

то, что я искал, было следующим:

        private function capture(filename:String):void
        {   
            var bitmapData:BitmapData = new BitmapData(videoDisplay.width, videoDisplay.height);            
            bitmapData.draw(videoDisplay,new Matrix());

            var bitmap : Bitmap = new Bitmap(bitmapData);
            var jpg:JPEGEncoder = new JPEGEncoder();
            var ba:ByteArray = jpg.encode(bitmapData);
            var newImage:File = File.desktopDirectory.resolvePath("foldername/"+filename+".jpg");

            fileStream = new FileStream();
            fileStream.open(newImage, FileMode.UPDATE);
            fileStream.writeBytes(ba);
            fileStream.close();


        }

, который вызывается, когда пользователь нажимает на запись ... поэтому я беру фотографию как большой палец!Я надеюсь, что вышеупомянутое поможет и другим, кто ищет что-то подобное ... Большое спасибо!

...