(转)【流媒體】Android 实时视频采集—Cameara预览采集
1 概述
通过Android Camera拍摄预览中设置setPreviewCallback实现onPreviewFrame接口,实时截取每一帧视频流数据
2 知识点① Android Camera使用: 参考 Refs/Related 0-4
Camera 支持格式

拍照流程

② Android SurfaceView使用: 参考 Refs/Related 5-10
③ Camera权限

?说明1: 在/* 视频流编码处理 */?中通过setPreviewCallback添加对视频流进行处理,如
?③视频帧回调接口
??? mCamera.setPreviewCallback(new encoderVideo(mCamera.getParameters().getPreviewSize().width,?
????? mCamera.getParameters().getPreviewSize().height,(ImageView) findViewById(R.id.ImageView2)));//①原生yuv420sp视频存储方式
??? mCamera.setPreviewCallback(new encoderH264(mCamera.getParameters().getPreviewSize().width,?
????? mCamera.getParameters().getPreviewSize().height));?//②x264编码方式?
?? ?mCamera.setPreviewCallback(mJpegPreviewCallback);??//③JPEG压缩方式
?
?说明2:?当然也可以不在主Acitivity中实现SurfaceHolder.Callback接口,而是在①的initSurfaceView中的addCallback函数,修改为
?mSurfaceHolder.addCallback(new MyCallback); 再在这函数中实现上述三个回调函数// 【获取视频预览帧的接口】 mJpegPreviewCallback = new Camera.PreviewCallback() { @Override public void onPreviewFrame(byte[] data, Camera camera) { //传递进来的data,默认是YUV420SP的 // TODO Auto-generated method stub try { Log.i(TAG, "going into onPreviewFrame"); //mYUV420sp = data; // 获取原生的YUV420SP数据 YUVIMGLEN = data.length; // 拷贝原生yuv420sp数据 mYuvBufferlock.acquire(); System.arraycopy(data, 0, mYUV420SPSendBuffer, 0, data.length); //System.arraycopy(data, 0, mWrtieBuffer, 0, data.length); mYuvBufferlock.release(); // 开启编码线程,如开启PEG编码方式线程 mSendThread1.start(); } catch (Exception e) { Log.v("System.out", e.toString()); }// endtry }// endonPriview };?Refs/Related0 http://developer.android.com/reference/android/graphics/Camera.html
1 http://wenku.baidu.com/view/5551eb59be23482fb4da4c89.html
2 http://www.cnblogs.com/franksunny/archive/2011/11/17/2252926.html
3 http://blog.csdn.net/yf210yf/article/details/7304437
4 http://topic.csdn.net/u/20111104/13/fdf356b5-ea77-4ee9-ba8e-c44d0f1b7a19.html??
5 http://developer.android.com/reference/android/view/SurfaceView.html
6 http://developer.android.com/reference/android/view/SurfaceHolder.html
7 http://blog.csdn.net/xiaominghimi/article/details/6089594
8 http://blog.csdn.net/xiaominghimi/article/details/6090575
9 http://www.cnblogs.com/emily1314/archive/2012/03/03/2378147.html
10 http://blog.csdn.net/hellogv/article/details/5985090