Android MediaPlayer 오디 오 배속 재생 재생 속도 조절 문제

현재 시장 에 있 는 많은 음성 영상 앱 은 모두 배속 재생 기능 을 가지 고 있 는데,예 를 들 어 재생 속 도 를 0.5,1.5,2 배로 조정 하 는 등 이다.
MediaPlayer 는 Android API 23(Android M)부터 재생 속도 조절 을 지원 합 니 다.
사용 하 는 방법 은 setPlaybackParams 입 니 다.재생 속성 을 나타 내 는 클래스 PlaybackParams 를 입력 합 니 다.
미디어 플레이어 로 재생 속 도 를 조절 하 는 방법 을 소개 한다.
MediaPlayer.setPlaybackParams 설명
재생 속 도 를 PlaybackParams 대상 에 설정 하고 이 대상 을 setPlaybackParams 에 전송 합 니 다.
setPlayback Params 는 native 방법 입 니 다.
MediaPlayer 가 준비 되 지 않 았 다 면(prepared 전에)이 방법 을 사용 하면 MediaPlayer 의 상 태 를 바 꾸 지 않 습 니 다.
MediaPlayer 가 prepare 에 성공 한 후 설정 속도 가 0 이면 pause 방법 을 호출 한 것 과 같 습 니 다.설정 속도 가 0 이 아니라면 start 방법 을 호출 한 셈 입 니 다.
이상 상황
MediaPlayer 가 초기 화 되 지 않 았 거나 풀 려 났 거나 Idle 또는 End 상태 라면 setPlaybackParams 방법 을 사용 하면 IllegalState Exception 이상 을 던 집 니 다.
들 어 오 는 Playback Params 가 지원 되 지 않 으 면 IllegalArgument Exception 이상 을 던 집 니 다.
설정 속도 가 0 보다 적 으 면 자바.lang.IllegalArgument Exception 이상 을 던 집 니 다.
MediaPlayer.setPlaybackParams 방법 예시
재생 속 도 를 설정 합 니 다.현재 시스템 버 전 을 먼저 판단 합 니 다.

private boolean setPlaySpeed(float speed) {
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    PlaybackParams params = mediaPlayer.getPlaybackParams();
    params.setSpeed(speed);
    mediaPlayer.setPlaybackParams(params);
    return true;
  }
  return false;
}
getPlaybackParams 는 미디어 플레이어 의 현재 PlaybackParams 대상 을 가 져 올 수 있 습 니 다.
이 방법 에 try catch 를 더 해서 되 돌아 오 는 boolean 값 과 결합 하여 설정 속도 가 성 공 했 는 지 판단 할 수 있 습 니 다.

private boolean setPlaySpeed(float speed) {
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    try {
      PlaybackParams params = mediaPlayer.getPlaybackParams();
      params.setSpeed(speed);
      mediaPlayer.setPlaybackParams(params);
      return true;
    } catch (Exception e) {
      Log.e(TAG, "setPlaySpeed: ", e);
      return false;
    }
  }
  return false;
}
참조 코드
Playback Params 에 포 함 된 속도 값
MediaPlayer 재생 속 도 를 조정 할 때 저 희 는 PlaybackParams 대상 을 사 용 했 습 니 다.오디 오 트랙 도 이런 종류 로 쓰 인 다.
Playback Params 는 재생 할 때의 속성 을 포함 하고 있 습 니 다.예 를 들 어 speed 는 재생 속도 다.PlaybackParams.setSpeed(float speed)전송 속도 배율 값.현재 설정 한 속 도 를 표시 합 니 다.

public PlaybackParams setSpeed(float speed) {
  mSpeed = speed;
  mSet |= SET_SPEED;
  return this;
}
PlaybackParams.getSpeed()
설정 한 속도 값 가 져 오기.이전에 속 도 를 설정 하지 않 았 다 면,IllegalState Exception 이상 을 던 졌 다.

public float getSpeed() {
  if ((mSet & SET_SPEED) == 0) {
    throw new IllegalStateException("speed not set");
  }
  return mSpeed;
}
총결산
위 에서 말 한 것 은 편집장 님 께 서 소개 해 주신 안 드 로 이 드 미디어 플레이어 오디 오 배속 재생 으로 재생 속 도 를 조절 하 는 문제 입 니 다.여러분 께 도움 이 되 셨 으 면 좋 겠 습 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!

좋은 웹페이지 즐겨찾기