Я пытаюсь создать приложение, которое будет воспроизводить видео на планшете Android. Планшет-трансформер работает под управлением Android версии 4.0.3. Я использую Flash Builder 4.6 с Flex 4.6.0. Каждый раз, когда я добавляю видео на планшет, оно очень прерывистое и нервное. Если я пытаюсь использовать любое видео, не являющееся flv, то оно всегда отправляется на задний план позади всего другого контента и больше не остается в контейнере, в который оно помещено. Я создал скользящие контейнеры, которые можно перемещать влево или вправо, и видео перемещается вместе с ними, и оно работает с файлами flv, но не с любыми другими форматами файлов (такими как H.264 и f4v), оно остается на стадии x = 0 и y = 0 не группа x = 0 и y = 0 и не двигается. Когда воспроизводится видео, всегда мигает экран, а затем воспроизводится видео. Flv файлы всегда худшие для воспроизведения. Извините, я не пытаюсь бродить, я просто пытаюсь получить импортированную информацию
Вот код для группы воспроизведения видео, которую я создал.
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" width="960" height="533" xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Script>
<![CDATA[
import mx.events.EffectEvent;
[Bindable] public var imgSource:String = new String();
[Bindable] public var isThereAVideo:Boolean = new Boolean()
public var movieSource:String = new String();
[Bindable] protected var bytes:uint = new uint();
[Bindable] protected var bytesTotel:uint = new uint();
protected function playMovieClick(event:MouseEvent):void
{
// TODO Auto-generated method stub
trace ("you clicked")
var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
ns.client={ onMetaData:function(obj:Object):void{} }
ns.play(movieSource);
var myVideo:Video = new Video();
myVideo.width = 960;
myVideo.height = 533;
myVideo.attachNetStream(ns);
uic.addChild(myVideo);
ns.addEventListener(NetStatusEvent.NET_STATUS, netstatusHandler);
quickfade.target = uic;
quickfade.alphaFrom = 0;
quickfade.alphaTo = 1;
quickfade.play();
ns.soundTransform.volume = 0;
}
public function netstatusHandler(evt:NetStatusEvent):void {
if (evt.info.code == "NetStream.Play.Stop") {
quickfade.target = uic;
quickfade.alphaTo = 0;
quickfade.alphaFrom = 1;
quickfade.play();
quickfade.addEventListener(EffectEvent.EFFECT_END, fadeEffectEnd);
}
}
private function fadeEffectEnd(event:EffectEvent):void {
trace("effect ending");
uic.visible = false;
trace("....effect ending");
quickfade.removeEventListener(EffectEvent.EFFECT_END, fadeEffectEnd);
}
public function asyncErrorHandler(event:AsyncErrorEvent):void {
trace(event.text);
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
<s:Fade id="quickfade" duration="1500" />
</fx:Declarations>
<s:Image width="100%" height="100%" source="{imgSource}"/>
<s:Image width="75" height="75" bottom="5" right="5" source="img/videoIcon.png" click="playMovieClick(event)" visible="{isThereAVideo}" />
<mx:UIComponent x="0" y="0" id="uic" width="960" height="533" alpha="0" />
<s:Label x="10" y="508" text="v0.1"/>
Так вот мои вопросы вопросы
Есть ли лучший способ воспроизвести это видео, чтобы оно было более плавным? Я слышал о stage.stagevideo, но если я отслеживаю stage.stagevideo.length, я всегда получаю 0?
Почему видео теряет контейнер. Может ли это быть как-то связано с настройкой местоположения контейнера с использованием ширины сцены?
Есть ли способ буферизовать видео?