gpt4 book ai didi

android - 如何在 Android 中减慢和拉伸(stretch)音频?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:08:09 25 4
gpt4 key购买 nike

我发现 MediaPlayer 类不支持改变播放速度。我尝试了 Soundpool,它可以工作,但是当我将它的速度减慢到 0.5f 时,音调变得很奇怪(低音调)。我想改变速度,但保持相同的音频特性,所以如果我放慢速度,它会拉伸(stretch)音频但不会降低音高。哪天做这件事最好?提前感谢您的帮助!

最佳答案

这可能有点用处。在尝试了所有方法之后,我决定使用 SoundPool 来更改音高,2.0 的播放速率会使声音以原始频率的两倍播放,而 0.5 的播放速率会使它以原始频率的一半播放。播放速率范围为 0.5 至 2.0。但它确实适用于低于和高于 0.5 和 2.0 的频率。

我正在发布我的工作代码,

但由于它只是用于演示目的,因此您需要在每次安装应用程序时手动更改“播放速率”,例如:“sp.play(explosion, 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);
}

}
}

关于android - 如何在 Android 中减慢和拉伸(stretch)音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6886390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com