在Flash Player中播放ByteArray的FLV

时间:2009-10-12 09:27:31

标签: flex flash actionscript-3 video flv

我有一个存储在ByteArray对象中的Flash视频文件(FLV),想要播放此视频。有没有办法实现它?也许使用Alchemy?

谢谢!

5 个答案:

答案 0 :(得分:7)

现在有一种更好的方式来播放使用NetStream.appendBytes()存储在ByteArray中的视频。

以下是使用中的示例:http://www.bytearray.org/?p=1689

答案 1 :(得分:0)

Loader + MovieClip技巧可能是唯一的方法,see this

对于限制:对于rtmfp2p,2分钟限制是正常的,因为无论如何分配更大的字节数组是不可行的。

假设播放指标(播放头/当前帧)可用,平滑过渡不应该是一个问题 - 开始播放第二个swf with mute / visible = false直到时间轴同步,然后翻转视频和声音 - 这非常有用对于netstream / play()来说还不错,对于普通swf还不太确定。

另一个问题是确切地确定flv数据导入swf的方式以及如何在as3中在运行时构造正确的swf。到目前为止,mxmlc / swfmill还不能直接为我嵌入FLV(已经有一段时间了,事情可能已经发生了变化),只有普通闪存AS3才能用视频创建带字节码的swf。应该是可能的。

在一个相关的说明 - 一个问题是它是否值得的麻烦 - 如果一个人建立一个像这样的p2p VOD成功的网站,Adobe也可能只是切断线(黑客攻击像没有swf动画片剪辑要从bytearrays加载的嵌入视频......)。

答案 2 :(得分:-1)

我不确定这是否可行,因为我不知道Flash如何编码SWF嵌入式视频,但也许您可以将flv bytearray转换为swf,并在时间轴中嵌入flv并使用该bytearray来显示它使用Loader.loadBytes ...

答案 3 :(得分:-2)

我不会问为什么ByteArray?您的问题的答案是肯定的,但最终结果将会缓慢 - 当视频更大且编解码器复杂时更慢。您必须读取帧并将它们作为BitmapData放入Bitmap并编写自己的播放器。最好的方法是使用Alchemy - 然后它工作得更快但也很慢:)你也可以使用Haxe。

声音非常相似。最好的起点是adobe labs。 最后 - 记住flv是用硬件解码的 - 你的代码只使用处理器。现在问问自己是否真的需要这个功能?

答案 4 :(得分:-4)

我认为“为什么ByteArray”实际上是问题......它是如何实现的? :)

有很多方法......一个由康格拉德给出......但是他说它会慢一些......事实上,我认为它会比你想象的要慢得多......所以这里另一个:

将ByteArray传递给服务器并从那里加载flv ......有几个选项:

  • 远程服务器:将它加载到远程服务器(可能是分发你的swf的服务器)...仍然留下问题,为什么你不首先从那里分发flv ......
  • 本地服务器:
    1. 安装:只需安装一个很小的本地应用程序来完成那个,也就是说,你可以在那里推送bytearray,然后通过合适的协议(HTTP,RTMP)检索它......
    2. 浏览器嵌入:与安装相同,但你可以简单地创建一个Java Applet来完成这项工作...... signed允许java applet绑定端口(是的,这是用户的额外点击,但是它尽可能地舒适)这是你必须要做的,其余部分与安装的服务器完全一样......

在这两种情况下,您可能会遇到跨域政策问题(可能仅在发送时,因为我认为您可以跨域加载视频),您需要正确响应FlashPlayer的策略文件请求(您可以找到吨)那些东西)...你可以通过建立一个LocalConnection桥来绕过发送限制,如C#的this one ...

祝你好运......;)


编辑:啊好的,现在我明白了...实际上,已经有了very similar question ...我记得在p2p功能发布后不久就对一些adobe家伙进行了简短采访宣布... adobe对此非常害羞......实际上我花了好几周的时间才发现flash player 10正式发布之后的p2p(之前没有时间去打扰)...

实际上,我认为这是故意制作的......在采访中,很明显,adobe并没有试图推开视频流媒体网站......最重要的两个可能是youtube和谷歌视频.. youtube是主要的原因之一,为什么flash播放器在第一时间变得如此受欢迎...而且它由谷歌拥有,谷歌视频......允许轻松创建一个p2p媒体平台会让google失去很多...你不需要很多服务器......“只是”好的软件,但这是可以承受的......而且我认为,adobe不想惹恼谷歌......一些原因:

  • 他们是搜索引擎
  • 他们需要谷歌允许索引基于闪存的网站
  • 谷歌是n倍大
  • google真的想要占据RIA市场的一大块......他们有GWT,Chrome,V8native client ...

所以我觉得adobe并没有那么大的兴趣这么做......这几乎有点像谷歌宣布他们的支付系统(它是GPay左右吗?),这是PayPal的直接并发... eBay是谷歌最重要的收入来源之一......实际上我再也没有听过任何关于它的信息......

很多决策都是政治性的,当涉及到大公司......我认为,不让闪存玩家的p2p过于强大的决定就是其中之一...