第三节: UVCCamera案例分析-->USBCameraTest

一、效果展示

略 (动图录制忒麻烦,大家跑通项目自己看吧!)

二、案例中的实现步骤

  一般情况下我们都使用系统相机 ,  如果做美颜相机我们就会用到Camera和Camera2里面的API ,
 或者使用C去调用我们相机的硬件 , 当然还会使用OpenGL ES 和 OpenCV 对预览帧做处理...
  1. 获取视频数据
  2. 让TextureView的大小和视频数据的大小 进行等比缩放 ( 自定义TextureView )
  3. 设置预览界面 (自定义的 TextureView )
  4. 打开相机
  5. 在Activity上 对 相机的生命周期 进行管理

三、案例源代码分析

干货都在图上,步骤很清晰,这里源代码不贴代码了 (偷懒) ,大家可以在源码上搜着看!

四、关于SurfaceView和TextureView的选择

1. SurfaceView和Textureview的区别

 		相同点:SurfaceView和Textureview都继承自View
     
     
 		SurfaceView优缺点
 		
     	优点:SurfaceView专门提供了嵌入视图层级的绘制界面,
              开发者可以控制该界面像Size等的形式,能保证界面在屏幕上的正确位置。
              SurfaceView的双缓冲功能,可以使画面更加流畅的运行,
                        
    	 缺点:由于其holder的存在导致画面更新会存在间隔,
               并且不能加上动画、平移、缩放;两个SurfaceView不能相互覆盖。
               
     Textureview的优缺点:
     
          优点:TextureView更像是一般的View,
               可以像TextView那样能被缩放、平移,也能加上动画。
               
          缺点:TextureView只能在开启了硬件加速的Window中使用,
              并且消费的内存要比SurfaceView多,并伴随着1-3帧的延迟。
              
              在Andriod4.0之后的API中才能使用 ,
              在5.0以前在主线程渲染, 5.0以后有单独的渲染线程。

2. 性能比较
第三节: UVCCamera案例分析-->USBCameraTest_第1张图片

你可能感兴趣的:(UVCCamera)