如何在Android上正确访问LIVE相机数据? Skype如何做到这一点?

我见过很多类似的问题,但没有人给出100%答案:

> Camera.PreviewCallback不保证所有设备都需要帧率
> MediaRecorder可能会在某些设备上缓冲音频/视频(在将其写入文件/本地套接字之前)
> Native C/C++ API不公开,每个人都强烈反对使用它.

Skype如何做到这一点?在Android上访问实时视频帧的正确方法是什么?

最佳答案 在3.0之前的Android版本上,预览回调是唯一的选择;请确保使用
setPreviewCallbackWithBuffer方法,效率更高.

在Honeycomb或更高版本中,您还可以使用通过setPreviewTexture的GPU路径.这将使预览流直接进入GPU纹理,这更适合某些应用程序.

尝试使用内部C/C++ API不会获得任何巨大的性能提升,并且保证在将来的版本中更改,因此我不建议使用它.

确保从支持的帧速率列表中将预览帧速率设置得尽可能高.

如果您需要高而稳定的帧速率,您还可以尝试在较新的设备上将recording hint设置为true.

不幸的是,这两种方法都不能保证提供稳定的输出帧速率,这非常依赖于场景条件和设备自动曝光算法的细节.这是我们希望将来能够改进的.

但是,如果上述两个选项中的一个不是Skype等人使用的话,我会非常惊讶.

点赞