我有一个在 Android air 应用程序中播放的视频文件。我正在尝试使用 bitmapData.Draw(video)
捕获帧,但它仅适用于 .flv 视频。
视频在本地播放 - 没有互联网或服务器。
一旦我将视频更改为 .mp4,它就会在舞台上播放,但在调用 draw 函数后有一个空白的 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;
最佳答案
更新:
似乎没有办法通过 ActionScript 在 android 设备上的位图中绘制 h.264 视频。
我测试了这个 demo ( sources ) 与 this h.264 编码的视频文件(它是 origin )在移动 FlashPlayer 11.1 和 AIR 3.5 应用程序中的 mp4 容器中使用相同的代码并且它们都失败了。我在所有渲染模式(直接、cpu 和 gpu)中都有黑色矩形。
可能的解决方法是编写 native 扩展制作屏幕截图(我找到了 this 一个,但据报道可能会使您的应用程序崩溃,但来源可能会有所帮助)并按已知矩形裁剪视频。这不是一个漂亮的解决方案,但我现在看不到其他变体。
关于actionscript-3 - 从播放 h.264 (mp4) 视频的视频显示器中捕获位图数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14512956/