6

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

谢谢!

4

5 回答 5

7

现在有一种更好的方式来播放您存储在ByteArrayusing中的视频NetStream.appendBytes()

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

于 2011-07-22T22:50:08.283 回答
0

Loader+MovieClip 技巧可能是唯一的方法,看这个

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

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

另一个问题是准确地弄清楚 flv 数据导入 swf 的方式以及如何在运行时在 as3 中构造正确的 swf。到目前为止,mxmlc/swfmill 无法为我直接嵌入 FLV(已经有一段时间了,事情可能已经改变),只有普通的 flash AS3 能够创建带有视频的 bytearray-loadable swf。不过应该是可以的。

在相关的说明中-一个问题是,这一切是否值得麻烦-如果要建立一个像这样的以 p2p VOD 为特色的成功网站,Adobe 还不如切线(破解诸如没有带有嵌入式视频的 swf 电影剪辑之类的东西从字节数组加载...)。

于 2010-09-17T16:56:49.333 回答
-1

我不确定这是否可行,因为我不知道 Flash 如何对 SWF 嵌入视频进行编码,但也许您可以将该 flv 字节数组转换为将 flv 嵌入时间线的 swf,并使用该字节数组通过 Loader 显示它。加载字节...

于 2009-10-12T16:56:58.647 回答
-2

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

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

于 2009-10-12T10:13:21.743 回答
-4

我认为“为什么是 ByteArray”实际上是个问题……它是如何到达那里的?:)

有很多方法……康拉德给出了一种方法……但正如他所说,它会很慢……事实上,我认为它会比你想象的要慢得多……所以这里有另一种:

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

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

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

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


编辑:啊,好吧,现在我明白了……实际上,已经有一个非常相似的问题……我记得在宣布 p2p 功能后不久,我对某个 adobe 人进行了简短的采访…… adobe 对此非常害羞。 ..实际上flash player 10正式发布后我花了好几个星期才找到p2p(之前真的没有时间去打扰)...

实际上,我认为这是故意的……在采访中,已经明确表示,adobe 并没有试图推开视频流媒体网站……最重要的两个可能是 youtube 和 google video……youtube 是主要原因之一,为什么 Flash 播放器首先变得如此受欢迎......它归谷歌所有,因为谷歌视频......允许轻松创建 p2p 媒体平台会让谷歌很生气......你不知道不需要很多服务器......“只是”好的软件,但这是负担得起的......我认为,adobe不想惹恼谷歌......一些原因:

  • 他们是搜索引擎
  • 他们需要谷歌来允许索引基于闪存的网站
  • 谷歌是 n 倍
  • google 真的想在 RIA 市场上占有一席之地……他们有GWT、chrome、V8本地客户端……

所以我想 adobe 并没有那么大的兴趣这样做......这有点像谷歌宣布他们的支付系统(是 GPay 还是这样?),这是 PayPal 的直接并发...... eBay 是谷歌最重要的收入来源之一......实际上我再也没有听说过它......

许多决定都是政治性的,当涉及到大公司时......我认为,不让 Flash Player 的 p2p 过于强大的决定就是其中之一......


于 2009-10-12T12:32:38.867 回答