最近公司要做基于视频的手机App游戏,类似于远程狼人杀或者远程会议(要各个玩家都露脸视频共享),所以要调研Android视频传输问题。

嗯,正文不用看了。结论:就是使用基于WebRTC封装的Licode.

https://lynckia.com/licode/

如果用的不顺,会退回WebRTC开发。

Android-eye

源码地址

https://github.com/Teaonly/android-eye

特点

  • 内置了Web服务(第三方可以直接输入IP:port进行视频查看)
  • 支持H.264视频和G.726视频
  • 通过WebSocket将视频播放到浏览器中
  • 纯JS解码H.264和G.726视频
  • 支持运动检测
  • 可以支持高级图像处理算法

缺点

  • DEMO不支持互联网
  • 有一些出名的Issue没处理

iVideoChat

源码地址

https://code.google.com/archive/p/android-recorder/

https://download.csdn.net/download/xiaoliouc/4933594

原理

  • 使用android中的AudioRecord类,获取原始PCM数据.
  • 将PCM数据用speex编码.
  • 将编码后的数据打包录制成flv文件.
  • 使用android-rtmp-client库将编码,打包后的数据直接发布到流媒体服务器.
  • 本地与服务器端录音同时进行.
  • 在手机上通过rtmp协议回放服务器端录好的文件.

特点

  • 使用RTMP协议
  • 使用了 JUV-RTMP-CLIENT.jar 包
  • 需要使用Flash player插件查看

缺点

  • 并非实时视频
  • 没有声音
  • 里面的RTMP Client需要破解

CameraDemo

源码地址

http://download.csdn.net/detail/xiaoliouc/4933610

特点

  • 使用的是Camera类
  • 使用的是socket传输
  • 简单直白容易学习

缺点

  • 服务器端代码质量堪忧
  • 帧率较低
  • 不是工程级代码
  • 开大量线程,性能不行

Live555

源码地址

https://github.com/rgaufman/live555

http://www.live555.com/

原理

  • 使用Camera类拍摄视频,获取原始PCM数据
  • 将获得的视频进行H264编码(使用x264库或opencore库)
  • Java使用JNI调用C++的so文件
  • 使用基于UDP的RTP/RTCP协议传输到服务器
  • 服务器接收后,使用FFMPEG接收H264编码并播放

特点

  • 工程级
  • 扩展支持很好

缺点

  • 要了解的知识点比较多,RTP/RTCP-over-TCP, RTSP视频服务器机制
  • C++编写,量级很大
  • JNI调用会比较麻烦

Spydroid-ipCamera

源码地址

https://github.com/fyhertz/spydroid-ipcamera

原理

  • 手机通过MediaRecorder录制视频
  • 直接在手机上搭建一个RTSP服务器,通过RTSP协议将数据发送到对方

特点

  • 可以VLC读取视频流
  • 可以配置流频率:视频H.263/H.264, 音频ARM/AAC
  • 可以选择正反摄像头
  • 自带一个微型服务器(很烂)

缺点

  • 做C/S模式的话,需要额外拆掉RTSP服务器

Teameeting

源码地址

https://github.com/Teameeting/Teameeting-Android

https://github.com/Teameeting/Teameeting-ios

https://github.com/Teameeting/Teameeting-MsgServer

https://github.com/anyRTC/anyRTC-RTMP-OpenSource

特点

  • 它的设计目的是视频直播房间
  • 商业级代码,代码量级很大
  • 支持最多4人高清视频群聊
  • 支持消息推送
  • 支持一键分享
  • 支持离线消息保持
  • 支持聊天室列表和保存
  • 支持聊天室权限控制

缺点

  • 缺失视频服务器代码
  • 大量我们用不到的功能

StartRTC

源码地址

https://github.com/starrtc/starrtc-server

https://github.com/starrtc/starrtc-android-demo

https://github.com/starrtc/starrtc-ios-demo

https://github.com/starrtc/starrtc-windows-demo

资料站

https://docs.starrtc.com/zh-cn/docs/index.html

缺点

  • 缺失服务器代码

WebRTC快速搭建

源码地址

https://github.com/ddssingsong/webrtc_android

https://github.com/ddssingsong/webrtc_server_node