2011-12-22 23 views
1

首先,请原谅它已经被问过或可以用Google轻松找到。我发布这个,因为我确实只有有限的时间。这里是录制音频和视频的代码。摄像头输入:不支持的参数

 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"/> 

回答

2

如果看到Supported Media Formats,为MPEG-4 SP,你需要使用3GP(THREE_GPP)输出格式。
所以,你可以用

videoRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
+0

我想记录这个媒体与live555是现场直播的,我需要的MPEG-4试试,我是什么呢? – Jomoos 2011-12-22 03:52:51

+0

您希望文件格式为MP4或视频编解码器为MPEG-4 SP?这是两件独立的事情。 3GP文件格式与MP4文件格式相同,对某些原子进行了一些更改。所以MP4播放器也应该支持3GP。请检查。 – Karthik 2011-12-22 03:58:53

+0

如果您仍然希望您的文件格式为MPEG-4,那么您必须将您的视频编解码器更改为H.263或H.264 AVC。 BTW,H.263与MPEG-4 SP相同,因此您可以根据需要使用H.263视频编解码器和MPEG-4文件格式组合。 – Karthik 2011-12-22 04:00:47