转自:http://www.cnblogs.com/stay/archive/2011/06/24/2089129.html
首先,鄙人要发泄下对Android小小的不满,为神马2.3才有api来支持front Camera ,为神马2.3之前的版本也会有前置摄像头,为神马每个厂商的调用前置摄像头的方式都不一样。尼玛同样是写程序,至于搞那么多不同版本不同兼容性问题么。生物识别技术你们伤不起啊!!!GOOGLE 您神马时候才能统一啊!!!别折磨我们这群蛋疼的码农了。该死的魂淡厂商们,你们大致统一一下行不行,坑爹的。
if(model.equals(SUMSUNG&HTC&MOTO)){system.exit(0)}//支持山寨。
先说如何录频吧。最简单的,调用MediaRecorder,最好开个子线程去写:
这里网上有很多帖子都说,有bug,问题出在编码上,因为每个厂商支持的视频编码有点差异,所以别指望同一个代码能支持所有的手机。我用H264测试了十部手机,
9个通过,1个坑爹的HTC 野火不支持。所以还是使用DEFAULT吧。MediaRecorder.VideoEncoder.DEFAULT
Runnable run = new Runnable() {
public void run() {
try {
myRecAudioFile = new File(Environment.getExternalStorageDirectory(), "video.mp4");// 创建临时文件
if (myRecAudioFile.exists()) {
myRecAudioFile.delete();
}
myRecAudioFile.createNewFile();
recorder.reset();
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);// 视频源
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); // 录音源为麦克风
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);// 输出格式为mp4
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);// 视频编码
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);// 音频编码
recorder.setVideoFrameRate(15);// 视频帧频率
recorder.setVideoSize(320, 240);// 视频尺寸
recorder.setPreviewDisplay(mSurfaceHolder.getSurface());// 预览
// recorder.setMaxDuration(10000);// 最大期限
recorder.setOutputFile(myRecAudioFile.getAbsolutePath());// 保存路径
recorder.prepare();
recorder.start();
mHandler.sendEmptyMessageDelayed(1, 10000);
} catch (Exception e) {
stop(true);
}
}
};
现在