Имам този 1 минутен филм, който искам да компилирам в AS3 проект. Филмът започна във формат MOV, така че използвах FFMpeg, за да го конвертирам във FLV, след това отново с FFMpeg от FLV в SWF.
Вграждам този филм в двоичния файл на AS3, като използвам Embed
метаданни:
[Embed(source="1.swf")] private var _Vid:Class;
Имам контейнер Sprite, към който се добавя този филм. Преди да бъде добавен, прехвърлих вградения филм като MovieClip:
var vid:Object = new _Vid(); return vid as MovieClip;
Когато добавя получения филмов клип към сцената, той започва да се възпроизвежда веднага и изглежда, че се възпроизвежда добре. Въпреки това, когато проверявам свойството totalFrames на филмовия клип, той връща 0. И филмовият клип изглежда не отговаря на извиквания към stop
или gotoAndStop
.
Получавам същото поведение от вграждането на филма в SWF във Flash IDE, след което вграждам резултата по същия начин, така че изглежда нещо не е наред с начина, по който го добавям към сцената. някакви мисли?
РЕДАКТИРАНЕ: Като изискване на продукта, филмът as3 не може да зарежда видеоклипа от външен файл. Той трябва да бъде компилиран, така че полученият .swf, който извършва възпроизвеждането, да може да работи напълно сам, без да се налага да разчита на други външни файлове.
РЕДАКТИРАНЕ 2: При допълнителна проверка екземплярът MovieClip, който е резултат от:
[Embed(source="1.swf")] private var _Vid:Class;
var vid:Object = new _Vid(); return vid as MovieClip;
има един дъщерен обект, който е от клас Loader, и това дете няма деца. Опитах да каствам детето директно като MovieClip, но без резултат.
РЕДАКТИРАНЕ 3: От това, което чета тук и тук, API 10.1 за обекта NetStream излага метод наречен appendBytes. Все още трябва да разгледам по-подробно това, но мога да вградя .flv файла като октетен поток и да подавам байтовете ръчно към обекта Net Stream, за да възпроизведа видеото. След малко ще публикувам резултатите от моите тестове...