2013-08-30 83 views
5

-我正在研究需要播放慢動作視頻的項目。在Android中慢動作播放視頻

-我深知Android不提供這些功能。

-我發現PVPlayer引擎libVLC其具備這些功能,但我沒有發現任何教程或它們包括在Android項目和使用它們的適當的文件。

-所以我試圖用RunnableHandler這樣做,成功地減緩了視頻,但他們打時擁有抽搐。

public class MainActivity extends Activity { 

    VideoView vx; 
    Button mbutt; 
    Handler h ; 
    int curr = 0; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     h = new Handler(); 

     vx = (VideoView)findViewById(R.id.videoView); 
     mbutt = (Button)findViewById(R.id.button_Play); 

     vx.setVideoPath("/mnt/sdcard/you.mp4"); 

     mbutt.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       vx.start(); 
      } 
     }); 


     Runnable r = new Runnable() { 

      @Override 
      public void run() { 

       if (vx != null) { 

        if (vx.isPlaying()){ 

         vx.pause(); 
        } 
        else{       
         vx.start(); 
        } 
       } 

       h.postDelayed(this, 50); 
      } 
     }; 

     h.postDelayed(r, 200); 






    } 


} 

-我已經試過的暫停時間各種組合和播放時間刪除抽搐,但一切都是徒勞的,任何人都可以幫助我消除這些混蛋所以它起到一個很好的慢動作視頻或建議另容易將庫集成到我的android項目中。

在此先感謝......

+0

你找到一個解決方案? – safari

+0

不,我還沒有找到一個解決方案呢...... –

+0

mhm,好吧我有一個類似的問題,現在我開始使用vitamio庫 - 但它真的很薄弱的記錄。但你可以試試看 – safari

回答

0

如果您正在尋找如何嵌入到VLC機器人,你可以裁判this。 ,你可以通過調用setRate(0.5f)來改變libVLC的慢速運動速度。

2

我遲到了,但我找到了API 23及以上的解決方案。 Android 6.0增加了PlaybackParams類來控制播放行爲。 -

使用setPlaybackParamsMediaPlayer方法下面給出 -

videoview = (VideoView)findViewById(R.id.videoview); 
videoview.setVideoURI("Your Video URI"); 
videoview.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
       @Override 
       public void onPrepared(MediaPlayer mp) { 
        //works only from api 23 
        PlaybackParams myPlayBackParams = new PlaybackParams(); 
        myPlayBackParams.setSpeed(0.5f); //here set speed eg. 0.5 for slow 2 for fast mode 
        mp.setPlaybackParams(myPlayBackParams); 

        videoview.start();//start your video. 
       } 
     });