在Flash Player中播放ByteArray的FLV

问题描述 投票:6回答:5

我有一个存储在ByteArray对象中的flash视频文件(FLV),想播放这个视频。有没有办法实现它?也许使用炼金术?

谢谢!

flex flash actionscript-3 video flv
5个回答
-4
投票

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

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

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

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

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

那么祝你好运吧 ... ;)


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

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

  • 他们是搜索引擎
  • 他们需要谷歌允许索引闪存网站
  • 谷歌是n倍大
  • 谷歌真的试图获得RIA市场的大部分...他们有GWT,铬,V8native client ...

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

许多决策都是政治性的,当涉及到大公司......而且我认为,那些不让flash播放器的p2p过于强大的决定就是其中之一......



7
投票

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

以下是使用它的一个例子:http://www.bytearray.org/?p=1689


0
投票

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

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

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

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

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


-1
投票

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


-2
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.