[Android] MediaPlayer
개요
Android에서 미디어를 재생할 때 재생 속도를 조절하려고 한다. 어떻게 해야할까?
Android MediaPlayer
랄라는 MediaPlayer[1]를 이용하여 개발하였다. 초기에는 속도 조절 기능이 없었으니 마쉬멜로우(Ver.23)[2]부터 속도, 피치 등을 조절할 수 있게 되었다.
PlaybackParams
PlayerbackParams[3]는 미디어 재생을 위해 필요한 컨트롤 정보를 담는 파라메터이다. 재생속도(speed), 높낮이(pitch), Fallback mode 등을 설정할 수 있다. 구현하고자 했던 속도 조절은 아래와 같이 할 수 있다.
private boolean setPlaySpeed(float speed) {//마쉬멜로우 버전 이상일 때,if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {try {//기존 미디어 플레이어의 파라미터(playbackparams)를 가져와서PlaybackParams params = mediaPlayer.getPlaybackParams();//속도만 변경할 다음params.setSpeed(speed);//미디어 플레이어에 다시 설정해주면 속도가 변한다.mediaPlayer.setPlaybackParams(params);return true;} catch (Exception e) {//하지만 Exception이 뜬다면 어떨까!?!?!Log.e(TAG, "setPlaySpeed: ", e);return false;}}return false;}
AudioFallbackMode(int audioFallbackMode)
오디어 재생에 실패했을 때? 파라미터를 잘못 설정했을 때?의 상태를 설정할 수 있다. 세 가지 타입으로 설정할 수 있는데,
- AUDIO_FALLBACK_MODE_DEFAULT : Default 값으로 시스템이 판단한 최고의 동작을 수행
- AUDIO_FALLBACK_MODE_FAIL : 아웃
- AUDIO_FALLBACK_MODE_MUTE : IllegalArgumentException를 반환
참조
[1] https://developer.android.com/guide/topics/media/mediaplayer?hl=ko [2] https://developer.android.com/reference/android/os/Build.VERSION_CODES#M [3] https://developer.android.com/reference/android/media/PlaybackParams#setSpeed(float)