我有一个视频文件,我在Android Air应用程序中播放。我正在尝试使用bitmapData.Draw(video)
捕获一个帧,但它仅适用于.flv视频。
视频在本地播放 - 没有互联网或服务器。
一旦我将视频更改为.mp4,它就会在舞台上播放,但在调用绘制函数后会有一个空白的bitmapData。我没有说任何错误。
如何从播放的.mp4视频中捕获帧?
注意 -
这是一个视频组件,而不是StageVideo
,因为我知道StageVideo
是不可能的。
网络流初始化。我还添加了checkPolicyFile = true
- 它没有帮助。
my_nc.connect(null);
my_nc.client = this;
_ns = new NetStream(my_nc);
_ns.client = this;
_ns.useHardwareDecoder = true;
_ns.checkPolicyFile = true;
答案 0 :(得分:4)
UPD: 似乎无法通过ActionScript在Android设备上的位图中绘制h.264视频。 我在移动FlashPlayer 11.1的mp4容器和具有相同功能的AIR 3.5应用程序中使用demo h.264编码的视频文件(它是sources)对此this(origin)进行了测试代码,他们都失败了。我在所有渲染模式中都有黑色矩形(直接,cpu和gpu)。
可能的解决方法是编写本机扩展程序制作屏幕截图(我发现this一个,但报告可能会导致应用程序崩溃,但来源可能会有所帮助)并按已知矩形裁剪视频。这不是一个漂亮的解决方案,但我现在还没有看到其他变种。
答案 1 :(得分:0)
我曾经遇到类似的事情。 你有没有尝试将Video comp放在一个空精灵中并从中绘制。 即来自视频的父母,而不是直接。
答案 2 :(得分:0)
尝试this link显示的概念。
它建议如何绘制视频像素的容器( graphicsData 对象)。
myBitmap.bitmapData = GraphicsBitmapFill(vidContainer.graphics.readGraphicsData()[0]).bitmapData;