2011-07-30 5 views
4

MediaPlayer 클래스가 재생 속도 변경을 지원하지 않는다는 것을 알아 냈습니다. 나는 Soundpool을 시도했으나 작동하지만, 속도를 0.5f로 낮추면 피치가 이상하게 느껴진다 (낮은 피치). 나는 속도를 바꾸고 싶지만 동일한 오디오 특성을 유지하여 속도를 늦추면 오디오가 늘어나지 만 피치를 낮추지는 않습니다. 가장 좋은 날은 무엇입니까? 어떤 도움을 주셔서 미리 감사드립니다! 이 웹 사이트 밖으로Android에서 오디오를 느리게하고 늘리는 방법은 무엇입니까?

답변

1

점검 : http://www.pitchtech.ch/

는 "PitchTech 연구 프로젝트는 자바로 구현 된 높은 품질의 오디오 변환을 제공하는 것을 목표로하고있다." 자체 연구 자료를 구현하거나 구현 된 오디오 변환 중 하나를 사용할 수있는 충분한 정보가 포함 된 수많은 연구 기사를 제공합니다.

Google 검색을 사용하여 발견했습니다 : Audio transformations Stretch.

+0

감사합니다. Pindatjuh. 그래도 할 수있는 간단한 방법이 있길 바래 .. – Miss

1

이것은 다소 유용 할 수 있습니다. 모든 것을 시도한 후 SoundPool을 사용하여 피치를 변경하기로 결정했습니다. 재생 속도를 2.0으로 설정하면 원래 주파수의 두 배에서 재생할 수 있고 재생 속도를 0.5로하면 원래 주파수의 절반으로 재생합니다. 재생 속도 범위는 0.5 ~ 2.0입니다. 하지만 0.5와 2.0보다 낮은 주파수에서 작동했습니다.

내 작업 코드를 게시하고,

하지만 그냥 데모 목적을 위해, 여기에 수동으로 "재생 속도"를 변경해야로서, 매번 당신이 예에 대한 응용 프로그램 설치 : "sp.play (폭발, 1,1,0,0,1.5f) "여기에서"1.5f "는 재생 속도입니다. 하나는 쉽게 EditView, 또는 실행 시간에 재생 속도의 값을 설정 비슷한 비슷한 만들 수 있습니다.

이 앱에서는 설정된 재생 속도로 음악을 재생하기 위해 앱의 화면을 탭하면됩니다.

import java.io.IOException; 

import android.app.Activity; 
import android.content.res.AssetFileDescriptor; 
import android.media.AudioManager; 
import android.media.SoundPool; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class SoundPoolActivity extends Activity implements OnClickListener { 

    SoundPool sp; 
    int explosion = 0; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     View v = new View(this); 
     v.setOnClickListener(this); 
     setContentView(v); 
     sp = new SoundPool(1,AudioManager.STREAM_MUSIC,0); 
     //explosion = sp.load(this, R.raw.hh,0); 
     explosion = sp.load("/sdcard/hh.m4a",0); 


    } 


    public void onClick(View v){ 
     if (explosion!=0){ 

      sp.play(explosion, 1,1,0,0,2.3f); 
     } 

    } 
} 
관련 문제