5

我有一个在 Android air 应用程序中播放的视频文件。我正在尝试使用 捕获帧bitmapData.Draw(video),但它仅适用于 .flv 视频。

视频在本地播放 - 没有互联网或服务器。

一旦我将视频更改为 .mp4,它就会在舞台上播放,但在调用绘图函数后会有一个空白的 bitmapData。我没有说任何错误。

如何从播放的 .mp4 视频中捕获帧?

注意 - 这是一个 Video 组件,而不是一个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;
4

3 回答 3

4

UPD:似乎没有办法通过 ActionScript 在 android 设备上的位图中绘制 h.264 视频。我在移动 FlashPlayer 11.1 和 AIR 3.5 应用程序的 mp4 容器中使用这个h.264 编码的视频文件(它的来源)测试了这个演示),但它们都失败了。我在所有渲染模式(直接、cpu 和 gpu)中都有黑色矩形。

可能的解决方法是编写本机扩展制作屏幕截图(我找到了这个,但据报道可能会使您的应用程序崩溃,但来源可能会有所帮助)并通过已知矩形裁剪视频。这不是一个漂亮的解决方案,但我暂时看不到其他变体。

于 2013-01-31T13:22:42.920 回答
0

我曾经遇到过类似的事情。你有没有试过把视频合成放在一个空的精灵中并从中绘图。即来自视频的父母,而不是直接。

于 2013-01-30T22:30:09.613 回答
0

试试这个链接中显示的概念。

它建议如何绘制视频像素的容器(一个graphicsData对象)。

myBitmap.bitmapData = GraphicsBitmapFill(vidContainer.graphics.readGraphicsData()[0]).bitmapData;
于 2017-02-14T11:13:26.097 回答