我有一个存储在ByteArray对象中的Flash视频文件(FLV),想要播放此视频。有没有办法实现它?也许使用Alchemy?
谢谢!
答案 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 ......有几个选项:
在这两种情况下,您可能会遇到跨域政策问题(可能仅在发送时,因为我认为您可以跨域加载视频),您需要正确响应FlashPlayer的策略文件请求(您可以找到吨)那些东西)...你可以通过建立一个LocalConnection桥来绕过发送限制,如C#的this one ...
祝你好运......;)
编辑:啊好的,现在我明白了...实际上,已经有了very similar question ...我记得在p2p功能发布后不久就对一些adobe家伙进行了简短采访宣布... adobe对此非常害羞......实际上我花了好几周的时间才发现flash player 10正式发布之后的p2p(之前没有时间去打扰)...
实际上,我认为这是故意制作的......在采访中,很明显,adobe并没有试图推开视频流媒体网站......最重要的两个可能是youtube和谷歌视频.. youtube是主要的原因之一,为什么flash播放器在第一时间变得如此受欢迎...而且它由谷歌拥有,谷歌视频......允许轻松创建一个p2p媒体平台会让google失去很多...你不需要很多服务器......“只是”好的软件,但这是可以承受的......而且我认为,adobe不想惹恼谷歌......一些原因:
所以我觉得adobe并没有那么大的兴趣这么做......这几乎有点像谷歌宣布他们的支付系统(它是GPay左右吗?),这是PayPal的直接并发... eBay是谷歌最重要的收入来源之一......实际上我再也没有听过任何关于它的信息......
很多决策都是政治性的,当涉及到大公司......我认为,不让闪存玩家的p2p过于强大的决定就是其中之一...