as3绕过策略文件给视频截图
接上篇 http://www.cnblogs.com/DarkMaster/p/5973593.html
这篇同样是在老外博客上找到的,分享给大家,再次感叹老外牛逼啊。
原文地址:http://gamespoweredby.com/blog/2014/11/netstream-playnull-bitmapdata-workaround/
老规矩直接上关键代码
var vidContainer : Sprite = new Sprite(); vidContainer.addChild(myVideo); function enterFrame(e:Event):void{ if ( decoded == netStream.decodedFrames ) return; // Here we skip multiple readings if ( vidContainer.graphics.readGraphicsData().length > 0 ) { myBitmap.bitmapData = GraphicsBitmapFill(vidContainer.graphics.readGraphicsData()[0]).bitmapData; } }
话说这种方式以前很少接触,看了才知道原来还能这么玩。
大概就是视频画面最终也是要绘制到显示对象上的,在显示对象上通过readGraphicsData方法拿到所有绘制对象,里面就必定包含视频画面,然后把里面的bitmapData取出来就可以了,这样不需要拿到视频的策略文件,就可以截图。
题外话:在准备好了所有需要的策略文件之后,通过正常方式仍然没法好好截图,反而得使用这些类似hack的方法才能实现,这么多年了,官方也没修复,Adobe真是哀其不幸怒其不争啊!