在NexusOne(例如)上,相机应用程序能够以720x480的速度捕获H.264视频(“高”质量设置)。然而,当使用mediaRecorderAPI时,它似乎总是以320x240的固定帧大小捕获。
我希望setVideoSize()方法控制帧大小(如下面的prepare片段中所示),但它似乎没有效果(使用Froyo2.2AndroidSDK)。

MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
recorder.setOutputFile(PATH_TO_FILE);
recorder.setVideoSize(720,480);
recorder.setPreviewDisplay(holder.getSurface());
recorder.prepare();

Discussions on the android developers list似乎表明这是一个长期存在的问题。有谁能建议如何控制帧大小,或者是否可以使用当前的api?

最佳答案

顺序很重要。尝试在setVideoEncoder之前调用setVideoSize:

MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
recorder.setVideoSize(720,480);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
recorder.setOutputFile(PATH_TO_FILE);
recorder.setPreviewDisplay(holder.getSurface());
recorder.prepare();

10-08 12:31