2011-12-21 4 views
3

FlexでFlashまたはVideoDisplayでFLVPlaybackコンポーネントをロードし、特定の場所を探したり、特定の場所にplayheadTimeを設定しようとすると、ムービーは常に大量に上下に切り上げられます再生ヘッドをFlash Videoの特定の場所にシーク​​しますか?

フラッシュでは、ソースを設定してソースを設定するFLVPlaybackコンポーネントhttp://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/examples/assets/phone.flv 次にvideo.seek(6)またはvideo.playheadTime = 6を試してください。

それはちょうどあなたが彼らのスクラバーに建てられただけ間隔が0、5、または10です使用している場合ので、最大でご覧スクラブフレームはここ3

で同様に10を後藤フレックスの一例であるだろう同じ結果。どちらの場合も

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:media="com.synapsegroup.media.*"> 

    <mx:Script> 
     <![CDATA[ 
      import mx.events.MetadataEvent; 
      import mx.events.SliderEvent; 
      import mx.events.VideoEvent; 

      protected function scrubber_changeHandler(event:SliderEvent):void 
      {    
       trace(event.value); 
       video.playheadTime = event.value; 
      } 

      protected function video_playheadUpdateHandler(event:mx.events.VideoEvent):void 
      {    
       //scrubber.value = event.playheadTime; 
       //http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/examples/assets/phone.flv 
      } 

     ]]> 
    </mx:Script> 

    <mx:Panel> 
     <mx:VideoDisplay id="video" source="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/examples/assets/phone.flv" minWidth="200" minHeight="200" 
         autoPlay="false" 
         /> 
     <mx:ControlBar> 
      <mx:Button label="Play" click="video.play();"/> 
      <mx:Button label="Stop" click="video.pause();"/> 
      <mx:HSlider liveDragging="true" id="scrubber" minimum="0" maximum="11.5" change="scrubber_changeHandler(event)" thumbPress="video.pause();"/> 
     </mx:ControlBar> 
    </mx:Panel> 

</mx:Application> 

あなたがプレーをクリックした場合/良いUX

を十分に速く、あなたがはるかに細分して、個々のフレーム上で一時停止することができ、一時停止ではなく、thatsのは、私はプログラム的にこれを行うには欠けている何かがあります?

は、私はまた、間隔の変更は、ビデオの長さ、3minutes長くフラッシュのドキュメントが求めるの値は()近似していることを言及して10秒間隔

答えて

6

を持っていた何かに依存していることと思います。 この理由の1つは、ビデオの圧縮方法です。これは、変更されたことに関するデータだけを含むキーフレームと一連のデルタフレームで、チャンクに分割されます。このようにして、ビデオの全体的なファイルサイズは、すべてのフレームにすべてのピクセルが含まれることよりもはるかに小さくなります。

しかし、実際には多くのフレームが存在しないため、これはどのフレームにもスキップできないことを意味します。再生ヘッドは、最も近い先行するキーフレームを見つけて、それから前方に再生する必要があります。

フレームを停止してシークできるビデオを作成するには、キーフレーム間隔を1にしてエンコードする必要があります。それを試してみると、ファイルサイズがenourmouseであることがわかりますが、スムーズに後方に再生できるようになりました。

シークで不正確なスクラブバーは、はい。そうです。それはちょっとお粗末です。 Boo adobeとそのすべて。しかし、実際にバーをドラッグできるのと比べて、すべてのマウスの移動を求めるようにプレイヤーに指示することと、マウスの移動ごとにkeframeとデルタを計算するときにプレイヤーを悩ませることとの間でトレードオフを行う必要があります。

それは華麗ではありませんが、あなたは自分のコードをnetstreamクラスからコーディングし、好みに合わせてバランスを設定することができます。ほとんどの場合、より正確なことができればいいと思っても、私はバランスを完全に整備できると感じています。

+0

洞察のおかげで – chrisan

関連する問題