实现android平台上的视频会议系统,即一台设备实时采集的视频,另一台设备可以实时播放。
初步实现方式:
采集端:将android设备摄像头采集的原始YUV格式的数据帧编码为RGB格式,然后通过juv-rtmp-client第三方jar包将数据帧上传到流媒体服务器上。
流媒体服务器:采用Red5开源流媒体服务器,采用rtmp流媒体协议。
播放端:集成vatimio播放框架进行rtmp视频播放。
后来发现使用vatimio进行播放会出现一些问题,vatimio不支持Red5服务器的流媒体视频,但是却支持Fms上的(不知道最新版是否支持),Red5和Fms其实很类似,可能编码格式有一些区别。所以最终选择了使用webview嵌入一个本地的Flash播放器来实现播放。
juv-rtmp-client是国外的一个收费的开发包,但是可以破解。最好的方式应该是对FFmpeg的代码进行移植,通过ndk的方式在android中进行调用,这样应该可以实现编码、上传和播放一系列流程。