使用MediaRecorder錄製視頻的時候,
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); mMediaRecorder.setVideoFrameRate(20); mMediaRecorder.setVideoSize(352, 288); mMediaRecorder.setVideoEncoder(mVideoEncoder); mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface()); mMediaRecorder.setMaxDuration(0); mMediaRecorder.setMaxFileSize(0); mMediaRecorder.setOutputFile(sender.getFileDescriptor()); try { mMediaRecorder.setOnInfoListener(this); mMediaRecorder.setOnErrorListener(this); mMediaRecorder.prepare(); mMediaRecorder.start();
出現如題錯誤:注意,這段代碼在小米上面可以跑通,在Htc和聯想的某些機型上面會出現如題錯誤。
修改為以下,注釋掉三行代碼:
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); // mMediaRecorder.setVideoFrameRate(20); // mMediaRecorder.setVideoSize(352, 288); mMediaRecorder.setVideoEncoder(mVideoEncoder); mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface()); mMediaRecorder.setMaxDuration(0); // mMediaRecorder.setMaxFileSize(0); mMediaRecorder.setOutputFile(sender.getFileDescriptor()); try { mMediaRecorder.setOnInfoListener(this); mMediaRecorder.setOnErrorListener(this); mMediaRecorder.prepare(); mMediaRecorder.start();
即可。
在StackOverFlow上面,也有很多這樣的問題,如果這種方案不能解決,建議在上面找找其他。