Android 怎么采集视频、音频(Android直播中怎么采集视频、音频)

1、采集视频的话5.0之前一般用Camera接口,之后用Camera2接口
2、使用也很简单,通过 HandlerThread类创建一个专门的Hander 类型的线程用于Camera的具体操作。
3、在CameraManager中找到一个合适的 Camera 设备,得到设备号。
4、通过 CameraID 得到该设备的各种参数
5、调用CameraManager的openCamera()方法打开指定摄像头。
6、该方法的第一个参数代表要打开的摄像头ID;
7、第二个参数 callback用于监听摄像头的状态;
8、第三个参数代表执行callback的Handler,如果程序希望直接在当前线程中执行callback,则可将handler参数设为null
9、当摄像头被打开之后,系统就会回CameraDevice.StateCallback 类中的 onOpened方法,在该方法中 APP 可获取 CameraDevice 对象。
10、拿到CameraDevice设备后,调用它的createCaptureRequest(int templateType)方法创建CaptureRequest.Builder对象。
11、CaptureRequest.Builder它主要包括两方面的作用
12、一是可以把预览或录制的Surface给它,这样每个Surface就可以从Camera拿到采集到的图片原始数据,这是一个典型的观察者模式
13、二是可以给Camera设备设置自动对焦,光圈大小等Camera设备参数。
14、传入的templateType参数包括下面三种类型:
15、TEMPLATE_PREVIEW(预览)
16、TEMPLATE_RECORD(拍摄视频)
17、TEMPLATE_STILL_CAPTURE(拍照)
18、然后调用CameraDevice的createCaptureSession()方法来创建CameraCaptureSession。
19、该方法的第一个参数是一个List集合,封装了所有需要从该摄像头获取图片的Surface;
20、第二个参数 StateCallback用于监听CameraCaptureSession的创建过程;
21、第三个参数代表执行callback的Handler,如果程序希望直接在当前线程中执行callback,则可将handler参数设为null22、如果 CameraCaptureSession 创建成功,系统会回调 StateCallback 的 onConfigured*方法。
23、在该方法中我们可以拿到创建好的 CameraCaptureSession对象。
24、 再调用CameraCaptureSession对象的setRepeatingRequest()方法,向Camera发送命令请求。
25、第一个参数是由前面的 createCaptureRequest 创建的 CaptureRequest.Builder对象生成的
26、第二个参数callback就是Camera捕获时的回调对象。
27、第三个参数代表执行callback的Handler,如果程序希望直接在当前线程中执行callback,则可将handler参数设为null。
28、 通过以上的步骤,就可以从Camera设备中获取到视频了。29、还可以通过Android的MediaRecorder类将获取到的视频录制下来进行回看。
30、 Camera2 完全采用了异步的架构模式。
31、Android中一般摄像头的格式是NV21或者是NV12,它们都是YUV420sp的一种
32、Y表示明亮度,也就是灰度值,U和V则表示色度,即影像色彩饱和度,用于指定像素的颜色
33、一般用libyuv把摄像头的NV21数据转化为YUV420P的标准数据
34、然后用X264把YUV420P流数据转化为h264数据,从而为推流做准备

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值