首先,请原谅已经问过一个或者可以轻松找到谷歌。我发布这个,因为我只有有限的时间。这是录制音频和视频的代码。
stopPreview();
Log.d("streamer", "Start camera.....");
videoRecorder = new MediaRecorder();
videoRecorder.setPreviewDisplay(surfaceView.getHolder()
.getSurface());
videoRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
videoRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
videoRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
videoRecorder.setVideoSize(800, 600);
videoRecorder.setVideoFrameRate(30);
videoRecorder.setOutputFile(videoPipe.getOutput());
videoRecorder.prepare();
videoRecorder.start();
Log.d("streamer", "Start camera.....action.......");
Log.d("streamer", "Start mic.....");
audioRecorder = new MediaRecorder();
audioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
audioRecorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
audioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
audioRecorder.setOutputFile(audioPipe.getOutput());
audioRecorder.prepare();
audioRecorder.start();
Log.d("streamer", "Start mic.....action");
但是,当我运行它时,上面的代码在logcat上生成以下内容。
12-22 09:05:43.456: E/CameraInput(2407): Unsupported parameter(x-pvmf/media-input-node/cap-config-interface;valtype=key_specific_value)
12-22 09:05:43.456: E/CameraInput(2407): VerifiyAndSetParameter failed on parameter #0
.....
12-22 09:05:43.456: E/CameraInput(2407): VerifiyAndSetParameter failed on parameter #0
12-22 09:05:43.464: E/MediaProfiles(2407): mCodec : 2
12-22 09:05:43.464: E/MediaProfiles(2407): mCodec : 1
12-22 09:05:43.464: E/MediaProfiles(2407): mCodec : 3
而且,显示预览的表面视图似乎已冻结。它显示了最后拍摄的图像帧。此外,视频&音频似乎没有录音。会有什么问题?非常感谢任何帮助!
注:
我在Android 2.2的三星Galaxy Tab上尝试这个。
评论以下两行似乎也没有解决问题
videoRecorder.setVideoSize(800, 600);
videoRecorder.setVideoFrameRate(30);
在清单文件上设置了以下权限。
<uses-permission android:name="android.permission.CAMERA"></uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
答案 0 :(得分:2)
如果您看到Supported Media Formats,对于MPEG-4 SP,您需要使用3GP(THREE_GPP
)输出格式。
所以你可以试试
videoRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);