Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 在swf文件中嵌入二进制视频数据_Flash_Actionscript 3_Air_Flv_Embedding - Fatal编程技术网

Flash 在swf文件中嵌入二进制视频数据

Flash 在swf文件中嵌入二进制视频数据,flash,actionscript-3,air,flv,embedding,Flash,Actionscript 3,Air,Flv,Embedding,在编译时(使用[Embed]metatag),是否可以播放swf中嵌入的数据中的视频 Flash CS3等提供的“导入视频->嵌入”功能是不可接受的,因为它有许多严重的限制(包括声音同步问题、最大帧数和其他注意事项) 我感兴趣的是能够将flv视频数据捆绑到swf(以及其他资产)中,这些数据将由AIR应用程序播放 我认为这是办不到的。有人不同意吗?您可以使用Flash IDE将flv导入swf文件-我以前已经这样做过。你可以像声音一样把它放到电影剪辑的时间线上,然后把电影剪辑放到舞台上播放。在Fl

在编译时(使用
[Embed]
metatag),是否可以播放swf中嵌入的数据中的视频

Flash CS3等提供的“导入视频->嵌入”功能是不可接受的,因为它有许多严重的限制(包括声音同步问题、最大帧数和其他注意事项)

我感兴趣的是能够将flv视频数据捆绑到swf(以及其他资产)中,这些数据将由AIR应用程序播放


我认为这是办不到的。有人不同意吗?

您可以使用Flash IDE将flv导入swf文件-我以前已经这样做过。你可以像声音一样把它放到电影剪辑的时间线上,然后把电影剪辑放到舞台上播放。在Flash CS3中,执行文件>导入>导入视频并选择flv。选择视频,然后在向导的下一站选择“嵌入…”,这里是指向的链接

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


仅供参考:看起来这是一个被推迟的错误。Adobe目前似乎不允许使用嵌入元标记进行嵌入。下面是一个关于这个问题的讨论和链接。

可以使用Flash IDE将视频嵌入到SWF中,但这不是一个很好的选择:

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

“嵌入式系统的最大限制 视频是指具有最大 无法同步16000帧和音频 保持两分钟以上。”


这些引语来自。它有点老了,但据我所知,关于嵌入视频的说法仍然成立。

哦,是的,因此显然可以使用
embed
meta标记将二进制数据嵌入swf中

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

在这个阶段,我无法回答您是否可以从ByteArray播放嵌入式视频…

只要您的视频是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);
    }
}

只是有同样的问题,并寻找一个更“灵活”的解决方案。 如今,动态嵌入似乎非常简单:

public function loadSWF(){

 var _assetLdr:Loader;
_assetLdr = new Loader();
_assetLdr.load(new URLRequest("1.swf"));
_assetLdr.contentLoaderInfo.addEventListener(Event.COMPLETE, this.handleComplete);
addChild(_assetLdr); 
}


public function handleComplete(event:Event):void {

    trace("complete");
    var loaderInfo:LoaderInfo=event.target as LoaderInfo;
    var content:MovieClip = loaderInfo.loader.content as MovieClip;
    addChild(content);

}
注意:检查
库.swf
中的屏幕偏移。在我的例子中,它们是乱七八糟的,所以它只是在屏幕外显示。(谢谢你的咖啡)
祝你今天愉快

这是一个非常好的观点。我知道FlashCS3的“导入视频->嵌入”功能,但由于这些原因,它不是一个可接受的解决方案。我正在寻找另一种嵌入视频的方法。我想象着实例化一个
[Embed]
ed类并将其传递给视频播放器。不幸的是,这种方法有很多我无法接受的警告。最大的问题是声音同步问题,但也存在帧数限制和其他杂项限制。我已经更新了这个问题。谢谢你的回答!谢谢你的链接,詹姆斯,特别是kirupa.com的帖子。让我感觉不那么疯狂。哇!从FP 10.1开始!我怎么会错过这个?!干杯哇。你说“这些天”?闪光仍然。。。喜欢存在?你让我大吃一惊!另外,我的问题实际上规定了嵌入,而这个解决方案是运行时下载电影文件,除非我遗漏了什么。