Flex:动态创建视频的预览图像

前端之家收集整理的这篇文章主要介绍了Flex:动态创建视频的预览图像前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用VideoDisplay播放flv,mov和mp4,一切都很好.它们都是通过渐进式下载加载的,并且没有流式传输.我想要做的是抓取一个指定的帧(就像在10秒标记显示的那样),将其转换为位图并使用该位图作为视频的预览图像.我想在运行时这样做,所以我不必为每个要显示的视频创建预览图像.

有什么想法如何做到这一点?我宁愿不通过玩它来伪造它 – 寻找那个特定的框架,然后暂停它,但我可能别无选择?

解决方法

Ryan和James是正确的 – 正确的方法可能是在上传/转码时提取帧.但如果这不是一个选项,你可以选择使用你自己的某种默认/占位符图像(通用或某种方式适合所有尚未捕获其拇指的视频),并使用VideoDisplay的DisplayObject-ness抓取然后将帧上传到您的服务器,例如:
<mx:Script>
    <![CDATA[

        var captured:Boolean;

        private function creationCompleteHandler(event:Event):void
        {
            videoDisplay.source = "http://yourserver/yourvideo.flv";
        }

        private function videoDisplay_playheadUpdate(event:VideoEvent):void
        {
            if (!captured && videoDisplay.playheadTime >= 10)
                capture();
        }

        private function capture():void
        {
            var bmpData:BitmapData = new BitmapData(videoDisplay.width,videoDisplay.height);
            bmpData.draw(videoDisplay);

            captured = true;

            // Now just upload the byte array to your server for the next user
            var loader:URLLoader = new URLLoader();
            loader.dataFormat = URLLoaderDataFormat.BINARY;

            // ... etc.
        }

    ]]>
</mx:Script>

<mx:VideoDisplay id="videoDisplay" playheadUpdate="videoDisplay_playheadUpdate(event)" />

同样,它可能不是最优雅的解决方案,但它确实有效.这样,第一个用户看到通用图像,但此后每个用户都获得生成缩略图. (当然,那时你会上传并正确关联.)有意义吗?

猜你在找的Flex相关文章