Spydroid 是一个可以让 Android 手机变成音视频采集终端的 App,其中核心功能由 libstreaming 库提供。

技术上的主要实现原理:

  1. 使用 Android 的 MediaRecorder API 来录制音视频为 mp4 文件,然后通过这个 mp4 文件来生成 rtsp 流。这样做,只能做到图像与声音大致同步,尤其是人说话的时候音画同步的问题会特别明显;这种方式对于网络抖动的处理也不是特别好。
  2. 通过 MediaCodec API 来获取视频流的未压缩数据,然后通过自己的编码器,来生成视频流。这个和传统的多媒体视频流思路一样,比较容易控制,但是对 Android 系统的版本有要求,系统版本最低最好不要低于 4.0。

这个库的使用方式主要有两种:

  1. 把 libstreaming 当作 rtsp 客户端来使用,并且植入 Wowza Media Server,这样就可以从手机上获取实时视频流,并让 Wowza Media Server 分发出去,从而实现在网页上观看手机采集的音视频流功能。
  2. 把 libstreaming 当作一个 rtsp 服务器,这样通过 VLC 或是其它 rtsp 流播放器,可以观看当前手机摄像头的音视频流媒体内容。