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

时间:2013-01-18 14:21:37

标签: android video-streaming android-camera skype

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

  1. Camera.PreviewCallback不保证所有设备都需要帧率
  2. MediaRecorder可能会在某些设备上缓冲音频/视频(在将其写入文件/本地套接字之前)
  3. 原生C / C ++ API不公开,每个人都强烈反对使用它。
  4. Skype是如何做到的?在Android上访问实时视频帧的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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

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

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