У меня есть этот 1-минутный фильм, который я хочу скомпилировать в проект AS3. Фильм начался в формате MOV, поэтому я использовал FFMpeg для преобразования его в FLV, а затем снова с FFMpeg из FLV в SWF.
Я встраиваю этот фильм в двоичный файл AS3, используя Embed
метаданные:
[Embed(source="1.swf")]
private var _Vid:Class;
У меня есть контейнер Sprite, к которому добавлен этот фильм. Прежде чем добавить его, я включил встроенный фильм в виде мувиклипа:
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: Из того, что я читаю здесь и здесь , 10,1 API для объекта NetStream предоставляет метод appendBytes. Мне все еще нужно разобраться в этом, но я мог бы встроить файл .flv в виде потока октетов и вручную передать байты в объект Net Stream для воспроизведения видео. Я опубликую результаты моих тестов через несколько ...