很长时间没有写博客了,一直在探讨自己的人生问题。最后也没有一个结果,应该是心里上给自己放了很长的一段假,现在决定调整心态重新回到工作中。 在今后的一年工作中,我将从事流媒体技术方面的研究。 具体是想实现一个手机直播的平台。 前期进行了相关的调研。目前可以采用的技术大致如下
1. darwin作为流媒体服务器, 播放器采用rtsp播放器,例如vlc。 android和iphone采集端需要实现音视频的硬编码和rtsp协议与流媒体服务器的交互
2. nginx+rtmp 作为流媒体服务器, 播放器采用flowplayer, andriod和iphone采集端需要实现音视频的应编码和rtmp协议与流媒体服务器的交互。
3. nginx+hls 作为流媒体服务器, 采用分片的方式。 播放器需要实现对m3u8的解析, 苹果的浏览器本身可以。 android和iphone采集需要实现音视频的硬编码, 与流媒体服务器交互方式待定。 服务器端需要对流进行分片。
4. webrtc架构方式,本人c++基础浅薄,这部分工作一直没有开始调研。
关于双向语音通话或者视频会议的场景,调研过几款开源软件,
1. openmeeting 基于red5的视频会议,在几台pc机之间测试效果良好, 能否移植到android和iphone上未知。
2. mumble 目前mumble提供了桌面,android和iphone版, 测试效果 发现 android和pc之间语音交流有回音的出现.
3. linphone, linphone有android,pc和iphone版,视频通话效果很好。 架构清晰,不过linphone代码超过10万行, 不知道采用linphone架构开发难度是否可控
4. 其他实现方式诸如gtalk,采用xmpp和sip技术。
目前在技术选型上遇到一些问题, darwin结构,很难做扩展, 瓶颈卡在视频优化和双向语音交流上, 目前pc端通过浏览器观看直播,并实现语音交流, pc端采集语音没有特别好的办法。 回声消除很难, 目前调研得到的开源的回声消除模块只有speex库实现的比较好。
nginx+rtmp方式, 可以实现android留的推送,但是iphone对flash的支持不好, 如何开发基于flash的iphone应用比较困难,而且rtmp协议本身的闭源导致很多的地方没办法参考
nginx+hls 目前所做的工作比较少,还不能提出明确的方案
webrtc google大牛推的下一代流媒体标准, 目前应用很好, 貌似和ie的兼容很差?
最近这段时间会一直跟进这个方面,打算出一个专题系列,主要自己技术比较弱, 算是对自己的督促。 如果有相关认识能给予一些方向性的知道, 本人感激不尽。
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>