我已经看过一些帖子,这些帖子涉及对正在播放的视频帧进行截图。我正在寻找一种向后播放视频的方法,并且通常一次移动一帧。理想情况下,我能够在特定 i 帧之前和之后从 flash 视频中提取帧。
这个问题最重要的是能够提取帧,而无需实际播放视频。我在 SO 上找到的所有解决方案都需要播放视频,然后它们基本上只是将屏幕打印到位图上。
是否可以在动作脚本中提取单个视频帧以使单帧向前和向后前进?
我已经看过一些帖子,这些帖子涉及对正在播放的视频帧进行截图。我正在寻找一种向后播放视频的方法,并且通常一次移动一帧。理想情况下,我能够在特定 i 帧之前和之后从 flash 视频中提取帧。
这个问题最重要的是能够提取帧,而无需实际播放视频。我在 SO 上找到的所有解决方案都需要播放视频,然后它们基本上只是将屏幕打印到位图上。
是否可以在动作脚本中提取单个视频帧以使单帧向前和向后前进?
我不认为有办法,没有先播放内容。但是......您可以顺序地 bitmapdata.draw 每一帧作为流式视频(不一定在显示列表中)播放,直到您有一个大的位图数组来导航。这有两个大问题:
一,很明显,你只能访问已经播放过的帧。这可能会通过您的应用程序中发生的任何其他事情来处理 - 比如说,当视频正在流式传输/被捕获时,用户正在与一些介绍内容进行交互。
另一个可能无法克服的问题是内存问题。您流式传输内容的原因是您不会始终在内存中拥有所有 24 兆(或其他)的 flv。这种情况意味着您必须这样做。话虽如此,取决于帧的大小/数量 - 这可能不是一个大问题。
坦率地说,如果你决定走这条路,你最好将视频分解成 Flash 之外的帧(在后效或 Premier 中),并将它们与 swf 一起嵌入(或单独加载它们)。无论如何,这意味着您可以更好地控制压缩。
也许这有帮助?
您的零件组合令人困惑,但是...
能够捕获帧数组:
bitmapData.draw(video);
无需播放视频:
netStream.pause();
然后向后播放:
netStream.step(-1);
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html
如果您使用关键帧间隔 1(即所有帧都是关键帧)对视频文件进行编码,则向后导航视频是没有问题的。这会增加文件的大小,但让您可以在播放时立即跳转到任何帧。