Встраивание двоичных видеоданных в файл SWF - PullRequest
3 голосов
/ 14 октября 2008

Можно ли воспроизводить видео из данных, которые были встроены в SWF во время компиляции (с метатегом [Embed])?

Функция «Импорт видео-> Внедрение», предоставляемая Flash CS3 и т. Д., Неприемлема, поскольку имеет много серьезных ограничений (включая проблемы синхронизации звука, максимальное количество кадров и другие предупреждения)

Меня интересует возможность связывать FLV-видеоданные в SWF-файл (вместе с другими ресурсами), который будет воспроизводиться приложением AIR.

Я не думаю, что это можно сделать. Кто-нибудь не согласен?

Ответы [ 5 ]

7 голосов
/ 27 марта 2012

Пока ваше видео 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 голосов
/ 14 октября 2008

Вы можете импортировать FLV в SWF-файл с помощью Flash IDE - я делал это раньше. Вы можете поместить его на временную шкалу мувиклипа точно так же, как звук, а затем поместить этот мувиклип на сцену для его воспроизведения. Во Flash CS3 выполните «Файл»> «Импорт»> «Импортировать видео» и выберите «flv». Выберите видео, а затем на следующей остановке мастера выберите «Вставить .....». Вот ссылка на статью в Центре разработчиков Adobe по встраиванию flvs в swfs .

Я сам этого не делал, но не вижу причин, по которым вы могли бы получить доступ к flv из библиотеки загруженного SWF.

К вашему сведению: похоже, это ошибка, которая была отложена. Похоже, что Adobe в настоящее время не позволяет встраивать, используя метатег Embed. Вот сообщение на форуме по этой проблеме и ссылка на трекер ошибок .

1 голос
/ 14 октября 2008

Возможно встроить видео в SWF с помощью Flash IDE, но это не очень хороший вариант:

"Воспроизведение ограничено простыми командами воспроизведения и остановки, а также видео частота кадров должна соответствовать частоте хоста фильм, важное соображение, которое потребуется авторизация для скачать наименьший общий знаменатель скорость ".

"Самые большие ограничения для встраиваемых систем видео фильмы, имеющие максимум 16000 кадров и синхронизация звука не могут быть поддерживается более двух минут. "

Эти цитаты взяты из этой статьи . Это немного устарело, но, насколько я знаю, то, что там говорится о внедрении видео, все еще остается верным.

0 голосов
/ 31 мая 2018

просто имел ту же проблему и искал более «гибкое» решение. Кажется, в эти дни динамическое встраивание работает совершенно просто:

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);

}

Примечание. Проверьте смещения экрана в пределах library.swf. В моем случае они были испорчены, поэтому он просто отображался за кадром. (ThankGodForCoffee) Хорошего дня!

0 голосов
/ 25 марта 2010

О да, так что, очевидно, вы можете встраивать двоичные данные в SWF, используя метатег Embed.

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

Можете ли вы воспроизвести встроенное видео из ByteArray или нет, я не могу ответить так или иначе на этом этапе ...

...