Android基于SDK,NDK开发视频通话软件探索

通用的视频通话的框架分为信令和媒体两部分,在android2.3已经有了nist-sip,因此信令部分并不是大问题。

但是媒体部分就麻烦了,一般视频通话包括视频,音频两个流,下面的草图大概说明了流程:

                                                         +----+

采集-》编码-》网络传输-》 +-网络-+-》网络接收-》解码-》显示               :视频

录音-》编码-》网络传输-》 +-网络-+-》网络接收-》解码-》播放                :音频

                                                         +----+

相对应的组件对应要用到的SDK,NDK的接口如下

视频采集:Camera SDK接口

视频编码,解码:NDK自己实现,或者动态绑定到opencore或者stagefright的codec接口,

网络传输,接收:NDK自己实现

视频显示:可以使用SDK的GLSurfaceView或者动态绑定到ISurface-》Lock去直接写surfacebuffer,

                    或者使用IOverlay(可能有权限问题),前面适用于2.2,2.3的android版本,3.0好像android提出了新的surface接口让开发者可以高效可靠的写屏了。

音频录音:NDK动态绑定到IAudioRecord接口

音频编码,解码:可以自己实现

网络传输,接收:可以自己实现

音频播放:NDK动态绑定到IAudioTrack接口


这个实现有个问题就是效率并不高啊,因为运算量大的编解码,视频显示都是软件实现的,因此arm a9,1G的cpu恐怕也只能实现QVGA,1G的效果。

每个android硬件平台都实现的有自己的硬件的编解码,而且android也都定义了响应的HAL层,但是由于2.2,2.3,3.0版本众多,因此每个厂商的实现程度

也都还不同,因此依赖这些HAL的接口,适配性是个问题,因此用软件实现也是没有办法的啊。


近期在上面做了些工作,记录一下,省得忘记,后续还会把工作中碰到的问题总结总结,记录下来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值