视频直播平台开发-开发实时视频直播平台的技术要点

开源WebRTc能做实时视频直播吗?

你以为调用几个chRome的aPI就能直播了?

WebRTc用的不是插件,是chRome自带的功能,是原生js的aPI,也没有什么浏览器自带的插件。获取图像信源之后不应该用websocket发送图像数据,而是直接用WebRTc通信相关aPI发送图像和声音(这套aPI是同时支持图像和声音的)数据

正确的方法是:

1、你得有一个实现了WebRTc相关协议的客户端。比如chRome浏览器。

2、架设一个类似McU系统服务器

具体的实现步骤是这样的:

第一步,用你的客户端,比如chRome浏览器,通过WebRTc相关的媒体aPI获取图像及声音信源,再用WebRTc中的通信aPI将图像和声音数据发送到McU服务器

第二步,McU服务器根据你的需求对图像和声音数据进行必要的处理,比如压缩、混音等。

第三步,需要看直播用户,通过他们的chRome浏览器,链接上你的McU服务器,并收取服务器转发来的图像和声音流。

第四步,检查浏览器的兼容性。IE用的协议和chRome不一样,不能互通。fiRefox和opeRa情况也不是很理想

最后:如果按照这个方法折腾完了,你认为会得到什么结果呢?1广播,39收看,在一台i3 + 4G + centos6.4 mini的机器上跑McU,连续运行48小时没有出现问题,cPU的使用率大概在60%左右。跟现在动辄上十万的直播相比,是不是弱爆了。

所以,别迷信WebRTc,WebRTc只适合小范围(8以内)音视频会议,不适合做直播

开发实时视频直播需要哪些技术?

自负前端开发员会以为:“熟悉HTML5、1个大约7个工作日内就可以开发出来了”。面对这样的想法,只有一句话:少年,谦虚点。

实际上,你需要了解:

摄像头采集;

视频编解码;

媒体协议;

视频流推送到流媒体服务器

媒体网络分发;

用户播放器

视频同步;

网络延迟自适应;

需要录制,多种视频文件格式和封装;

语言cc++、html、php、mysql……

开发环境嵌入式,Linux,Windows,Web……

看到这里,还觉得这是一个能完成的任务吗?

如果你天赋异禀,一个解决了以上技术问题。那么,你还需要解决传输问题。传输好坏,也就是视频是否延迟、卡顿,取决于网络条件好坏。而公共互利网复杂的网络环境就不用说了吧。在家玩游戏不卡,看视频就卡。聊QQ斗地主无压力,看视频就卡。这怎么办?

解决办法有3种:

cDn加速;

花钱自己架服务器

或者用别服务

视频信号从现场出发,到达分散在全国各地的观众,需要经过数据中心和各节点的缓存加速,一路上马不停蹄,可以和杨贵妃的荔枝媲美。而信号在一路上各个环节所需要的时间总和,就是你看到的延迟

cDn加速,可以尽减少延迟。目前业内水准来看,视频延迟都在3-6秒之间。也就是在视频直播时,你看到的是几秒以前的画面

自己架服务器,如果你部署数据中心不够多,那么遇上跨网、跨省的传输,还是得用cDn加速。那么为了尽可能降低延迟,你就需要在全国各省市都部署数据中心,来解决跨网、跨省的传输。这种解决方案,相较cDn,非常昂贵。

服务的话,就是别服务器给你架好了,你只要傻式的用就行了。为防止广告嫌疑,有关实时直播,现在有很多服务商提供这一块,具体情况请自行了解哦。

当然,不管用哪种方式,请综合权衡利弊,找到适合自已的方案就是最好的方案。

下面,开始讲,视频直播的究竟需要哪些环节,应该如何处理?

开发实时视频直播流程是什么?

视频直播,可以分为:

采集;

前期处理;

编码

传输;

解码;

渲染

以上这几个环节,下面具体说明:

– 采集:iOS是比较简单的,andRoid则要做些机型适配工作(声网agoRa.io目前适配了4000+andRoid机型)。Pc最麻烦各种奇葩摄像驱动,出了问题特别不好处理,建议放弃Pc只支持手机主播,目前几个新进的直播平台都是这样的。

– 前期处理:现在直播美颜已经是标配了,80%的主播没有美颜根本没法看。美颜算法需要懂图像处理算法,没有好的开源实现,要自己参考论文去研究。算法设计好了还要优化,无论你打算用cPU还是GPU优化算法优化本身也需要专业知识支持。GPU虽然性能好,但是也是有功耗的。GPU占用太高会导致手机发烫,而手机发烫会导致摄像头采集掉帧,iphone6尤其明显。因为iphone6的cPU和前置摄像头很近,在算法开发、算法优化效果平衡上需要大的开发调试工作。而这一切都是需要经验支撑。

编码:如果你要上720p,肯定要采用硬编码。软编码720p完全没希望,硬件编码不灵活。兼容性也有问题。如何适应纷繁复杂的网络和纷繁复杂的上下行设备安卓芯片的坑,开发过的都知道。那有问,要求不高,上软编码分辨率360p行不行?就算上低分辨率,软编码还是会让cPU发烫,cPU过热烫到摄像头,长期发烫不仅直接反应是费电。既然是手机直播,插着电源和充电器实在说不过去吧。还有,cPU发烫会降频,怎么办?这还是只说性能方面。和前处理只影响图像质量功耗不同,视频编解码技术还关联成本计算和网络对抗。考虑性能功耗、成本、网络这四个之后你编码的码率、帧率分辨率。软硬件开发该如何选择

– 传输:自己做不现实,交给第三方服务商吧。

– 解码:如果你用硬解码,一定要做容错处理,一定要做适配。突然一个cRash导致手机重启不好吧。安卓的硬解码,不说了。如果你加了网络目前手机的硬解码还不一定支撑用软解码,功耗发热的问题又来了。

渲染:为什么手机明明解码出好多帧数据。就是渲染不出来。为什么画面就是不同步。

好了,以为完了吧?

还有音频呢。mic资源被抢占怎么办?为什么录音线程老是出问题?音频的前处理更复杂。什么时候开启a引擎噪声抑制?回声消除?增益控制?为什么AAc比Opus质量好?什么是AAc,he-AAc,heAAcv2?如何选择?要不要加混响?播放录音模式该如何选择?如果你想互动回声消除就要适配n多机型。

以上是媒体模块,还有信令控制,登录、鉴权、权限管理、状态管理等等,各种应用服务,消息推送,聊天礼物系统,支付系统运营支持系统统计系统等。

后台还有数据库,缓存,分布式文件存储,消息队列,运维系统等。

图片[1]-视频直播平台开发-开发实时视频直播平台的技术要点-OK资源网

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发