录制视频代码如下:
private void initMediaRecorder() {
mMediaRecorder = new MediaRecorder();// 创建mediarecorder对象
mMediaRecorder.setCamera(mCamera);
// 设置录制视频源为Camera(相机)
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
// 设置录制完成后视频的封装格式THREE_GPP为3gp.MPEG_4为mp4
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
// 设置录制的视频编码h263 h264
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
// 设置视频录制的分辨率。必须放在设置编码和格式的后面,否则报错
mMediaRecorder.setVideoSize(176, 144);
// 设置录制的视频帧率。必须放在设置编码和格式的后面,否则报错
mMediaRecorder.setVideoFrameRate(15);
// TODO 音频编码AAC
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mMediaRecorder.setAudioSamplingRate(16000);
// 设置视频文件输出的路径
mMediaRecorder.setOutputFile(mVideoPath);
int degrees = setDisplayOrientation(TakeVideoActivity.this, mCameraId, false);
mMediaRecorder.setOrientationHint(degrees);
mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());
}
出错信息如下:
09-12 18:07:07.483: W/MediaProfiles(109): could not find media config xml file
09-12 18:07:07.574: E/StagefrightRecorder(109): Failed to set the video frame size to 176x144
09-12 18:07:07.574: E/StagefrightRecorder(109): setupVideoEncoder failed
09-12 18:07:07.574: W/AACEncoder(109): Call stop() when encoder has not started
09-12 18:07:07.574: E/MediaRecorder(2255): start failed: -2147483648
09-12 18:07:07.584: W/dalvikvm(2255): threadid=1: thread exiting with uncaught exception (group=0x4002d560)
09-12 18:07:10.687: E/AndroidRuntime(2255): FATAL EXCEPTION: main
09-12 18:07:10.687: E/AndroidRuntime(2255): java.lang.RuntimeException: start failed.
09-12 18:07:10.687: E/AndroidRuntime(2255): at android.media.MediaRecorder.native_start(Native Method)
09-12 18:07:10.687: E/AndroidRuntime(2255): at android.media.MediaRecorder.start(MediaRecorder.java:597)
09-12 18:07:10.687: E/AndroidRuntime(2255): at org.xxx.ui.TakeVideoActivity.startMediaRecorder(TakeVideoActivity.java:285)
09-12 18:07:10.687: E/AndroidRuntime(2255): at org.xxx.ui.TakeVideoActivity.onClick(TakeVideoActivity.java:390)
09-12 18:07:10.687: E/AndroidRuntime(2255): at android.view.View.performClick(View.java:2498)
09-12 18:07:10.687: E/AndroidRuntime(2255): at android.view.View$PerformClick.run(View.java:9129)
09-12 18:07:10.687: E/AndroidRuntime(2255): at android.os.Handler.handleCallback(Handler.java:587)
09-12 18:07:10.687: E/AndroidRuntime(2255): at android.os.Handler.dispatchMessage(Handler.java:92)
09-12 18:07:10.687: E/AndroidRuntime(2255): at android.os.Looper.loop(Looper.java:123)
09-12 18:07:10.687: E/AndroidRuntime(2255): at android.app.ActivityThread.main(ActivityThread.java:3728)
09-12 18:07:10.687: E/AndroidRuntime(2255): at java.lang.reflect.Method.invokeNative(Native Method)
09-12 18:07:10.687: E/AndroidRuntime(2255): at java.lang.reflect.Method.invoke(Method.java:507)
09-12 18:07:10.687: E/AndroidRuntime(2255): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
09-12 18:07:10.687: E/AndroidRuntime(2255): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
09-12 18:07:10.687: E/AndroidRuntime(2255): at dalvik.system.NativeStart.main(Native Method)