2015-10-12 15 views
11

Mam problemy dotyczące sposobu realizacji PlaybackParams ustawić prędkość video:Android 6.0 - Ustaw szybkość wideo z PlaybackParams

public PlaybackParams getPlaybackParams()

dodane w poziomie API 23
Pobiera szybkość odtwarzania przy PlaybackParams.

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

Zwraca:
szybkość odtwarzania są używane.
Zgłasza IllegalStateException:
jeśli wewnętrzny silnik synchronizacji lub ścieżka dźwiękowa nie została zainicjalizowana.

To jest mój kod:

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

Jaki jest dokładnie problem? Czy ustawienie prędkości "1.f" działa poprawnie (ponieważ ** 1.0 ** jest normalną prędkością) lub pojawia się komunikat o błędzie? Spróbuj: 'mp.setPlaybackParams (nowe PlaybackParams(). SetSpeed ​​(2.5));' Co się dzieje ...? –

Odpowiedz

3

Otrzymujesz IllegalStateException podczas wywoływania metody 'setPlayParams', bo nie robisz PlaybackParams params = mp.getPlaybackParams(), ustawić szybkość i następnie przekaż go do mp.setPlaybackParams()! Ustaw prędkość BEZPOŚREDNIO podczas wywoływania funkcji mp.getPlayParams()!

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

Po wielu próbach znajduję rozwiązanie.

Przykład jak używać 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(); 
Powiązane problemy