我支持使用videochat功能的应用程序。我对Camera2
使用API>=21
。相机工作。现在我需要从我的设备的相机接收数据并将其写入byte [],然后将数组传递给本机方法以处理和传输图像对手。用C ++编写的视频传输功能。我的任务 - 在byte []中正确录制视频(因为此参数接受本机方法,即在视频显示器上执行所有下一步操作)。
如果我开始添加某些内容,相机就会停止工作。
帮助我正确,轻松地实现此任务。我尝试使用MediaRecorder
,但它不会在byte []中写入数据。我观看了标准的Google示例,例如Camera2Basic
,Camera2Video。我尝试在本教程中实现MediaRecorder
。但它不起作用。
据我所知ImageReader
,仅用于图片。
MediaCodec
- 太复杂了,我真的不明白。
实现从我的设备的相机获取图像并将其记录到byte []中的更好和最简单的方法。如果可能的话,给我一些代码或资源样本,我可以看到它。感谢
答案 0 :(得分:11)
您想使用ImageReader;它是旧相机API预览回调的预期替换(以及拍摄JPEG或RAW图像,另一种常见用途)。
使用YUV_420_888格式。
ImageReader的图像使用ByteBuffer而不是byte [],但您可以直接通过JNI传递ByteBuffer,并使用standard JNI methods获取指向图像每个平面的void *指针。这比先复制到byte []要高效得多。
<小时/> 修改:更多详情:
假设您拥有自己的软件视频编码/网络传输库,并且您不想使用Android的硬件视频编码器。 (如果这样做,则需要使用MediaCodec类。)