0

私の Android アプリケーションは PCM(22khz) を AMR に変換する必要がありますが、API AmrInputStream は 8khz の pcmのみをサポートします。

pcm を 22 khz から 8 khz にダウンサンプリングするにはどうすればよいですか?

4

2 に答える 2

1

サンプル レートは、AmrInputStream.java にハード コードされています。

// frame is 20 msec at 8.000 khz
private final static int SAMPLES_PER_FRAME = 8000 * 20 / 1000;

したがって、最初に PCM を AMR に変換する必要があります。

InputStream inStream;
inStream = new FileInputStream(wavFilename);
AmrInputStream aStream = new AmrInputStream(inStream);

File file = new File(amrFilename);        
file.createNewFile();
OutputStream out = new FileOutputStream(file); 

//adding tag #!AMR\n
out.write(0x23);
out.write(0x21);
out.write(0x41);
out.write(0x4D);
out.write(0x52);
out.write(0x0A);    

byte[] x = new byte[1024];
int len;
while ((len=aStream.read(x)) > 0) {
    out.write(x,0,len);
}

out.close();

ダウンサンプリングについては、Mary APIを試すことができます。

于 2013-02-18T04:35:02.150 に答える
0

Javaダウンサンプルライブラリを見つけました:https ://github.com/hutm/JSSRC jniで使用できるacバージョンもあります

于 2015-08-18T23:41:33.403 に答える