2012-01-26 10 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"/> 

だからここに私の質問の質問
は、それがよりスムーズになるように、このビデオを再生するためのより良い方法はありますか?私はstage.stagevideoについて聞いたことがありますが、私はstage.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)を試すことができます。

関連する問題