摄像头采集;
1、音视频编解码;
2、流媒体协议;
3、音视频流推送到流媒体服务器;
4、流媒体网络分发;
5、用户播放器;
6、音视频同步;
7、网络延迟自适应;
8、需要录制,多种视频文件的格式和封装;
9、语言:C、C、html、php、mysql
10、开发环境:嵌入式,Linux,Windows,Web
还有就是视频播放解决方案(卡顿、延迟):
1、CDN加速;
2、自己架服务器;
3、用别人的云服务。
用CDN加速,可以尽量减少延迟。目前业内水准来看,视频延迟都在3-6秒之间。也就是在视频直播时,你看到的是几秒以前的画面。
自己架服务器,如果部署的数据中心不够多,那么遇上跨网、跨省的传输,还是得用CDN加速。那么为了尽可能降低延迟,你就需要在全国各省市都部署数据中心,来解决跨网、跨省的传输。用云服务的话,就是别人把服务器给你架好了,你只要傻瓜式的用就行了。当然,不管用哪种方式,综合权衡利弊,找到适合的方案就是最好的方案。
开发视频直播的流程有哪些:
1、采集;
2、前期处理;
3、编码;
4、传输;
5、解码;
6、渲染。
采集:iOS是比较简单的,Android则要做些机型适配工作。PC最麻烦各种奇葩摄像头驱动,出了问题特别不好处理,建议放弃PC只支持手机主播,目前几个新进的直播平台都是这样的。
前期处理:现在直播美颜已经是标配了,80%的主播没有美颜根本没法看。美颜算法需要懂图像处理算法的人,没有好的开源实现,要自己参考论文去研究。算法设计好了还要优化,无论你打算用CPU还是GPU优化,算法优化本身也需要专业知识支持。GPU虽然性能好,但是也是有功耗的。GPU占用太高会导致手机发烫,而手机发烫会导致摄像头采集掉帧。而这一切都是需要经验支撑。
编码:如果你要上720p,肯定要采用硬编码。软编码720p完全没希望,硬件编码不灵活。兼容性也有问题。如何适应纷繁复杂的网络和纷繁复杂的上下行设备?安卓和芯片的坑,开发过的人都知道。那有人问,要求不高,上软编码低分辨率360p行不行?就算上低分辨率,软编码还是会让CPU发烫,CPU过热烫到摄像头,长期发烫不仅直接反应是费电。既然是手机直播,插着电源和充电器实在说不过去吧。还有,CPU发烫会降频,怎么办?这还是只说性能方面。和前处理只影响图像质量和功耗不同,视频编解码技术还关联成本计算和网络对抗。考虑性能、功耗、成本、网络这四个之后你编码的码率、帧率、分辨率。软硬件开发该如何选择?
传输:自己做不现实,交给第三方服务商吧。
解码:如果你用硬解码,一定要做容错处理,一定要做适配。突然一个crash导致手机重启不好吧。安卓的硬解码,不说了。如果你加了网络目前手机的硬解码还不一定支撑用软解码,功耗发热的问题又来了。
渲染:为什么手机明明解码出好多帧数据。就是渲染不出来。为什么画面就是不同步。
以上是媒体模块,还有信令控制,登录、鉴权、权限管理、状态管理等等,各种应用服务,消息推送,聊天,礼物系统,支付系统,运营支持系统,统计系统等。后台还有数据库,缓存,分布式文件存储,消息队列,运维系统等。
以上技术要点的小结,确实能说明开发一个能用于生产环境的实时视频直播平台确非易事,跟IM里传统的实时音视频一样,这样的技术都是音视频编解码网络传输技术的综合应用体。
使用IIS在win 2003 sever上配置免费流媒体服务器第一步:通过任务栏的“开始->管理工具->internet信息服务管理器”第二步:启动INTERNET信息服务管理器设置窗口后在“网站”下将默认网站删除。然后在“网站”上点右键选择“新建->网站”。第三步:启动网站创建向导,开始建立一个新的网站。第四步:网站描述处输入softer给站点起一个名,当然你也可以随便起一个。第五步:IP地址和端口设置窗口中的“网站IP地址”处设置为“全部未分配”,网站TCP端口默认为80,我们可以对其进行修改,例如设置为554。(HELIX使用的是554,这样可以迷惑非法入侵者以为该流媒体服务器使用HELIX建立的,从而降低被攻击的可能性。)网站主机头为空后“下一步”继续。 第六步:在设置网站主目录处通过“浏览”按钮修改路径,这个路径就是我们开放视频文件的目录。第七步:网站访问权限设置为“读取”后下一步继续。第八步:完成网站创建向导。第九步:完毕后我们就可以看到在“网站”下出现了一个名为softer的虚拟目录了,该目录下文件都出现在IIS设置窗口的右边。通过上面九步建立完流媒体服务器后就可以访问了。访问的方法有四种。(1)直接文件下载法:和以往的方法类似,通过“ 10913045:554/文件名rm”来下载该文件。对应的文件会保存到本地计算机,下载完毕后我们再运行视频工具查看。这个方法等同于不建立流媒体服务器。(2)修改连接法:由于所有文件都是以“ 10913045:554/文件名rm”的方式存放在服务器上的,所以当我们知道“ 10913045:554/文件名rm”这个地址后对其进行修改,改为如下格式—“ rtsp://10913045:554/文件名rm”。这样就会自动调用视频工具查看该文件了,边下载边浏览,省去了下载该文件的 *** 作,这点相当于流媒体服务器的作用。 (3)地址直接访问法:我们知道了某文件的地址例如“ 10913045:554/文件名rm”,那么直接在视频工具中“打开”该地址即可。输入“ 10913045:554/文件名rm”后视频工具将自动边下载边浏览该文件。 (4)权限开启法:(不推荐) 在建立该网站设置权限处,将“浏览”和“运行”权限给普通用户,这样用户访问该站点就可以直接运行相应的文件了。不过此方法容易带来安全问题,一般用户都可以随便删除修改在服务器上的视频文件,甚至是其他系统必须文件。您需要安装Flash播放器,流媒体服务器软件基于流协议(RTP / RTSP,MMS,RTMP,等)的流媒体服务器软件的主要功能的视频文件传输到客户端的在线观看,视频采集,压缩,软件接收实时视频流,实时流媒体协议的客户端。
典型的流媒体服务器的Microsoft Windows媒体服务(WMS),它使用MMS协议接收和发送视频使用Windows Media Player(WMP)的前端播放器,RealNetworks公司的Helix服务器,RTP / RTSP协议,接收和发送视频播放器的前端,Adobe公司的Flash媒体服务器使用RTMP(RTMPT / RTMPE / RTMPS)协议接收和发送视频,Real播放器,Flash播放器,播放器的前端。这是值得注意的,Adobe公司的Flash播放器(点击官方数据的普及的闪存播放器安装容量已达到99%以上),越来越多的网络视频开始到使用Flash播放器的播放器前端,所以越来越多的企业开始采用Flash播放器兼容的流媒体服务器,并开始消除其他类型的流媒体服务器。 Flash播放器,除了Adobe Flash媒体服务器,流媒体服务器有一个用Java编写的名为Red5的开源软件,在中国制造的有一个叫Ultrant的Flash Media Server的软件,说是很不错的,最新版本的到版本187,可以下载一个免费的社区版。流媒体服务器是播放 上载下载管理播出直播视频等网上节目素材的一套管理系统,只要是网上视频的都必须有流媒体服务器
流媒体服务器的主要功能是以流式协议(RTP/RTSP、MMS、RTMP等)将视频文件传输到客户端,供用户在线观看;也可从视频采集、压缩软件接收实时视频流,再以流式协议直播给客户端。典型的流媒体服务器有微软的Windows Media Service(WMS),它采用MMS协议接收、传输视频,采用Windows Media Player(WMP)作为前端播放器;RealNetworks公司的Helix Server,采用RTP/RTSP协议接收、传输视频,采用Real Player作为播放前端;Adobe公司的Flash Media Server,采用RTMP(RTMPT/RTMPE/RTMPS)协议接收、传输视频,采用Flash Player作为播放前端。值得注意的是,随着Adobe公司的Flash播放器的普及(根据Adobe官方数据,Flash播放器装机量已高达99%以上),越来越多的网络视频开始采用Flash播放器作为播放前端,因此,越来越多的企业开始采用兼容Flash播放器的流媒体服务器,而开始淘汰其他类型的流媒体服务器。支持Flash播放器的流媒体服务器,除了Adobe Flash Media Server,还有Ultrant Flash Media Server流媒体服务器软件,以及基于Java语言的开源软件Red5。easydarwin是流媒体服务,走视频流;easycms是设备接入与管理系统,走信令,与easydarwin配合工作。如果只是简单地直接推、拉流,easydarwin就行,但是要设备、用户管理,必须上easycms。
另外,easydarwin通常也指包含所有相关项目的整个平台。(就像通常说航母,即指航母本身,也可以指整个航母编队)Helix DNA Server
听说是开源的
其实就是取消 real 编码支持的 Real Server 。
但不是 GPL/LGPL/BSD 协议的。是 real 的 rpsl 。具体有什么限制不清楚。
你可以看看:
>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)