2013-08-30 78 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. 
       } 
     });