2015-10-12 3 views
11

Ich habe Probleme, wie PlaybackParams zu implementieren Videogeschwindigkeit einzustellen:Android 6.0 - Set Videogeschwindigkeit mit PlaybackParams

public PlaybackParams getPlaybackParams()

Added in API-Ebene 23
Ruft die Wiedergabegeschwindigkeit mit PlaybackParams.

PlaybackParams setSpeed (float speed) //Sets the speed factor. 

Returns:
die Rate der Wiedergabe verwendet werden.
Wirft IllegalStateException:
wenn das interne Sync-Modul oder die Audiospur nicht initialisiert wurde.

Dies ist mein Code:

mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() 
{ 
    @Override 
    public void onPrepared(MediaPlayer mp) 
    { 
     mp.setPlaybackParams(new PlaybackParams().setSpeed(1.f)); 

     if (mPlaybackState == PlaybackState.PLAYING) { mVideoView.start();} 
    } 
}); 
+1

Was ist das Problem genau? Funktioniert die Geschwindigkeitseinstellung '1.f' richtig (da ** 1.0 ** normale Geschwindigkeit ist) oder erhalten Sie eine Fehlermeldung? Probieren Sie: 'mp.setPlaybackParams (new PlaybackParams(). SetSpeed ​​(2.5));' Was passiert ...? –

Antwort

3

Du eine Illegal bekommen, während das Verfahren 'setPlayParams' nennen, weil Sie nicht PlaybackParams params = mp.getPlaybackParams(), die Geschwindigkeit zu tun und Übergeben Sie es dann an mp.setPlaybackParams()! Stellen Sie die Geschwindigkeit DIREKT beim Aufruf von mp.getPlayParams() ein!

MediaPlayer mp = ...; 
float speed = 0.55f;  
mp.setPlaybackParams(mp.getPlaybackParams().setSpeed(speed)); 
2

Nach vielen Versuchen finde ich eine Lösung.

Beispiel wie verwenden Videoview

final VideoView mVideoView = findViewById(R.id.videoView); 
mVideoView.setVideoPath(Environment.getExternalStorageDirectory() + "/bluetooth/test.webm"); //Path of your file video 
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() 
{ 
    @Override 
    public void onPrepared(MediaPlayer mp) 
    { 
     mp.setPlaybackParams(mp.getPlaybackParams().setSpeed(0.55f)); 
     mVideoView.start(); 
    } 
}); 
MediaController media = new MediaController(this); //this is for play and restart play manually 
media.setAnchorView(mVideoView); 
mVideoView.setMediaController(media); 
//mVideoView.start();