Kar*_*thi 6 android android-layout android-mediarecorder
我正在使用媒体录制器类录制视频,我使用以下属性初始化录制器,
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
Run Code Online (Sandbox Code Playgroud)
但是视频的质量与我在本机Android相机上拍摄的视频不一样,我使用媒体记录器拍摄的视频与原生视频相比质量较差,如何提高视频质量.
如果有人知道我帮助我.谢谢
Kar*_*thi 12
最后我通过设置videEncodingBitRate,AudioEncodingBitRate,AudioSamplingRate等找到了在android 2.1中录制高质量视频的代码.使用此方法,您可以为视频设置任何想要提供高质量视频的属性.
有关设置高质量和低质量参数的信息,请参阅本页,
我使用基础版android 2.1生成高质量视频的代码如下所示,
recorder = new MediaRecorder();
Method[] methods = recorder.getClass().getMethods();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setVideoFrameRate(24);
recorder.setVideoSize(720, 480);
for (Method method: methods){
try{
if (method.getName().equals("setAudioChannels")){
method.invoke(recorder, String.format("audio-param-number-of-channels=%d", 1));
}
else if(method.getName().equals("setAudioEncodingBitRate")){
method.invoke(recorder,12200);
}
else if(method.getName().equals("setVideoEncodingBitRate")){
method.invoke(recorder, 3000000);
}
else if(method.getName().equals("setAudioSamplingRate")){
method.invoke(recorder,8000);
}
else if(method.getName().equals("setVideoFrameRate")){
method.invoke(recorder,24);
}
}catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
Run Code Online (Sandbox Code Playgroud)
`