[英]How to use different audio encoding bitrate for media recorder android
在我的應用程序中,我正在使用媒體記錄器進行音頻記錄。 我想使用不同的比特率32、64、128、160等。
recorder = new MediaRecorder();
/******Audio Source******/
try{
if(audio_source.equals("Camcorder"))
recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
else if(audio_source.equals("MIC"))
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
else recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
}
catch(Exception e){
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
}
/******Audio Channel******/
try{
if(audio_channel.equalsIgnoreCase("mono")){
recorder.setAudioChannels(1);
}
else if(audio_channel.equalsIgnoreCase("stereo")){
recorder.setAudioChannels(2);
}
}
catch(Exception e){
recorder.setAudioChannels(1);
}
System.out.println(" bitrate -- "+bit_rate);
if (Build.VERSION.SDK_INT >= 10) {
recorder.setAudioSamplingRate(44100);//44100
}
else{
recorder.setAudioSamplingRate(8000);//44100
}
/******AudioEncodingBitRate******/
try{
System.out.println(" in try ..."+bit_rate);
if(bit_rate.equalsIgnoreCase("32")){
recorder.setAudioEncodingBitRate(32000);
}
else if(bit_rate.equalsIgnoreCase("64")){
recorder.setAudioEncodingBitRate(64000);
}
else if(bit_rate.equalsIgnoreCase("96")){
recorder.setAudioEncodingBitRate(96000);
}
else if(bit_rate.equalsIgnoreCase("128")){
recorder.setAudioEncodingBitRate(128000);
}
else if(bit_rate.equalsIgnoreCase("160")){
recorder.setAudioEncodingBitRate(160000);
}
}
catch(Exception e){
recorder.setAudioEncodingBitRate(64);
}
/******File Format******/
//recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
if(format.equals(".mp4"))
{
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
}
else
{
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
}
if (Build.VERSION.SDK_INT >= 10) {
recorder.setAudioSamplingRate(44100);//44100
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
}
else{
recorder.setAudioSamplingRate(8000);//44100
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
}
recorder.setOutputFile(audiofile.getAbsolutePath());
recorder.prepare();
但是使用上述所有不同的比特率條件,質量都沒有任何變化。 如何使用?
根據文檔 ,比特率設置為每秒比特數,
Prepare()可能會對參數執行其他檢查,以確保指定的比特率是否適用,有時,傳遞的bitRate會在內部進行裁剪,以確保音頻音頻可以根據平台的功能順利進行。
我認為,在這種情況下會發生削波,因為每秒甚至160位都太低了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.