2008-10-13 68 views
3

是否可以在编译时嵌入swf中的数据(使用[Embed]元标签)播放视频?将二进制视频数据嵌入到swf文件中

由Flash CS3等提供的“导入Video->嵌入”功能是不能接受的,因为它有许多严重的限制(包括声音的同步问题,帧的最大数量,以及其他警告)

I” m感兴趣的是能够将swf中的flv视频数据(以及其他资源)捆绑在一起,这些数据将由AIR应用程序播放。

我不认为这是可以做到的。任何人不同意?

回答

7

只要你的视频是FLV,那么答案是肯定的 - 你可以使用NetStream.appendBytes()发挥嵌入式ByteArray

public class Main extends MovieClip 
{ 
    [Embed(source="sample.flv", mimeType="application/octet-stream")] 
    private var SampleVideo:Class; 

    public function Main():void 
    { 
     var video:Video = new Video(320, 240); 
     addChild(video); 

     var netConnection:NetConnection = new NetConnection(); 
     netConnection.connect(null); 
     var netStream:NetStream = new NetStream(netConnection); 
     netStream.client = {}; 
     video.attachNetStream(netStream); 

     var byteArray:ByteArray = new SampleVideo(); 
     netStream.play(null); 
     netStream.appendBytes(byteArray); 
    } 
} 
2

您可以使用Flash IDE将flv导入swf文件 - 我之前完成了此操作。您可以将它放到MovieClip的时间轴上,就像声音一样,然后将该movieclip放到舞台上播放。在Flash CS3中,执行文件>导入>导入视频并选择flv。选择视频,然后在向导的下一站选择“嵌入.....”,这是一个链接到Adobe Developer center article on embedding flvs into swfs

我自己并没有这样做,但我看不出有什么理由可以从加载的swf的库中访问flv。

仅供参考:看起来这是一个延迟的错误。它看起来不像Adobe当前允许使用嵌入元标记进行嵌入。这里是关于该问题的forum post以及指向bug tracker的链接。

+0

不幸的是这种方法有很多,我不能忍受警告的。最大的问题是声音同步问题,但也有framecount限制和其他misc限制。 我已更新问题。谢谢回答! – aaaidan 2008-10-15 03:23:29

+0

感谢詹姆斯的这些链接,特别是kirupa.com的主题。让我感觉不那么疯狂。 – aaaidan 2009-03-20 22:47:29

1

它可以嵌入视频与Flash IDE中的SWF文件,但它不是一个非常好的选择:

“播放仅限于简单的播放和停止命令,以及视频 帧率必须匹配的主机 电影, 将需要创作的 最低公分数下载 速度的重要考虑因素。“

“嵌入式 视频最大的限制是具有最大 16000帧和音频同步的不能 维持超过两分钟左右的电影。”

这些报价来自this article。这有点旧,但据我所知,关于嵌入视频的说法仍然存在。

+0

这是一个很好的观点。我知道Flash CS3的“导入视频 - >嵌入”功能,但由于这些原因,这不是一个可接受的解决方案。 我正在寻找_另一种方式来嵌入视频。我想象的是像实例化一个`[Embed]`类的类并传递给视频播放器。 – aaaidan 2008-10-15 03:21:42

0

哦,是的,显然你可以使用Embed元标记嵌入二进制数据在瑞士法郎。

[Embed(
    source="local_data_file.flv", 
    mimeType="application/octet-stream") ] 
private static var __FlvClass123:Class; 
protected static var flvData:ByteArray = new __FlvClass123(); 

是否可以播放从ByteArray的嵌入式视频与否不是我不能回答这个阶段拉上......