2012-01-26 3 views
4

Android 태블릿에서 동영상을 재생할 앱을 제작하려고합니다. 태블릿은 Android 버전 4.0.3을 실행하는 트랜스포머입니다. Flex 4.6.0과 함께 Flash Builder 4.6을 사용하고 있습니다. 태블릿에 비디오를 추가 할 때마다 매우 불안정하고 불안정합니다. 내가 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"/> 

는 이 부드럽게되도록 동영상을 재생할 수있는 더 나은 방법이 있나요 내 질문에 질문
입니까? 무대에 대해서 들었어. 무대 비디오.하지만 내가 무대를 추적한다면 .stagevideo.length 나는 항상 0을 얻는다.
왜 비디오가 컨테이너를 잃게됩니까? 스테이지 너비를 사용하여 컨테이너 위치를 설정하는 것과 관련이 있습니까?
동영상을 버퍼링 할 방법이 있습니까?

+0

Flash Builder의 비디오 구성 요소를 사용하지 않는 이유는 무엇입니까? 그것은 당신이 더 할당 할 수있는 몇 가지 고급 기능을 가지고 있습니다. – ShaunOReilly

+0

VideoDisplay 또는 videoPlayer를 사용할 때 "Adobe는 VideoDisplay를 사용하여 프로필을 타겟팅하지 않습니다 : mobileDevice"라고 말합니다. 그래서 모바일 플랫폼을 타겟팅 할 때 빈을 사용하지 않았습니다. 나는 그것에 대해 걱정하지 않아도 될까요? – Justin

+0

왜 비디오가 시작될 때 화면이 깜박 거리는 지 아십니까? – Justin

답변

1

플렉스 비디오 플레이어 대신 네이티브 플레이어를 사용하도록 비디오를 재생하는 가장 좋은 방법입니다. 그래도 플렉스 내부에서 게임을해야하는 경우 모바일에서의 플렉스가 비디오 프레임을 건너 뛰기 때문에 스테이지 비디오 (http://www.adobe.com/devnet/flashplayer/articles/stage_video.html)를 사용해 볼 수 있습니다.

관련 문제