现在大大小小的公司,甚至个人开发者,都想开发自己的直播网站或App,本文会帮你理清,开发视频直播平台,你需要注意哪些技术要点。

你以为调用几个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%左右。跟现在动辄上十万的直播相比,是不是弱爆了。即时通讯聊天软件app开发可以加蔚可云的v:weikeyun24咨询

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

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

实际上,你需要了解:

摄像头采集;
    音视频编解码;
    流媒体协议;
    音视频流推送到流媒体服务器;
    流媒体网络分发;
    用户播放器;
    音视频同步;
    网络延迟自适应;
    需要录制,多种视频文件的格式和封装;
    语言:C、C++、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. 浅谈开发实时视频直播平台的技术要点

    前言 现在大大小小的公司,甚至个人开发者,都想开发自己的直播网站或App,本文会帮你理清,开发视频直播平台,你需要注意哪些技术要点. 开源WebRTC能做实时视频直播吗? 你以为调用几个Chrome的 ...

  2. 浅谈即时战略游戏在 J2ME 上的实现

     浅谈即时战略游戏在 J2ME 上的实现 <星际>.<魔兽>.<文明>......这些都是PC游戏玩家们耳熟能详的名字,可以说以这些游戏为代表的战略游戏是PC游戏的 ...

  3. 适合中职学生的C语言课本,浅谈中职c语言校本教材的开发.pdf

    申学.i罘{辅导 浅谈中职 C语言校本教材的开发 @ 付世杰 摘 要:校本教材是适应教学需要的一个很重要的工具,校本教材的 在校本教材的编写过程中,教师把教育理论与教育实践结合起来,通过 开发会给我们 ...

  4. 盘点直播直播平台软件开发技术中的编解码、直播协议、网络传输与简单实现

    盘点直播直播平台软件开发技术中的编解码.直播协议.网络传输与简单实现 编解码 视频封装格式就是我们通常所说的 .mp4,.flv,.ogv,.webm 等,它其实就是一个盒子,用来将实际的视频流以一定 ...

  5. 直播网站源码直播平台软件开发iOS动手做一个直播(原理篇)

    直播网站源码直播平台软件开发iOS动手做一个直播(原理篇) 上篇文章主要给出了代码,但是并没有详细说明直播相关的知识,这篇文章就说一下直播的相关理论知识.附上直播代码篇地址. ###推流 腾讯直播平台 ...

  6. 网络视频直播平台怎么开发、有什么难点

    "网络视频直播平台怎么开发.有什么难点"这类文章实在是太难写了,因为开发直播APP软件需要至少全国用户能够跨平台流畅观看,这其中涉及到的点太多太复杂了,所以讲清楚网络视频直播平台怎 ...

  7. 直播平台软件开发都使用了什么协议呢?

    直播平台软件开发都使用了什么协议呢? 最近直播比较火,很多人都喜欢看直播,那一个直播系统里面都有哪些组成部分,都使用了什么协议呢? 直播平台软件开发中无论是直播还是点播,其实都是对于视频数据的传输.一 ...

  8. 直播平台软件开发中选择点播播放器哪家强?

    直播平台软件开发中选择点播播放器哪家强? 太长不看版 这里选择了开源播放器IjkPlayer和直播云厂商播放器PLDroidPlayer作为测试样本. 数据统计 软硬编码 IjkPlayer PLDr ...

  9. 恩布企业即时通讯软件,协同办公平台发布V1.23版本

    恩布企业即时通讯软件,协同办公平台,私有部署版本,PC端,服务端同时发布1.23版本,开源企业IM,免费企业即时通讯软件:主要版本更新内容: 优化PC.android和ios手机,多终端同时登录,事件 ...

最新文章

  1. struts2之配置文件struts.xml详解
  2. 【数据结构】HashMap 面试题8问
  3. VM:Vmware简介、安装、使用方法详细攻略
  4. 游牧大地的诗意:看龙力游的草原油画
  5. 刷脸考勤,重新定位校园管理
  6. offset;scroll;client
  7. linux中sed和find,Linux运维知识之Linux 之 sed 与 find 命令结合使用
  8. 左右c++与java中国的垃圾问题的分析与解决
  9. 首次公开专利并且专利数量最多公司(2022.07.25-2022.7.31)
  10. Tumblr 架构设计
  11. 顶级计算机专家一年赚多少,成为一个计算机专家需要多高的IQ?请实话实说
  12. no identity-based policy allows the cloudformation:CreateStack action
  13. Xorg屏幕旋转实现方式
  14. win101809最新专业版企业版激活密钥和功能
  15. 数学之英文写作——基本中英文词汇(一般术语、算术与代数的常用词汇)
  16. 抖音CLICKID+淘宝Relaitionid回传淘积木APP内下单--转化归因联调ROI程序算法及代码技术实现
  17. 职场「数字人」不吃不睡007工作制,你「卷」得过它们吗?
  18. Android Thread之threadLoop方法
  19. echarts 与 百度地图bmap结合系列: 如何设置地图缩放级别和监听缩放事件
  20. php+b2b2c+商城,PHP源码:SHOPNC b2b2c电商平台系统,im+结算补丁+商城专题页插件

热门文章

  1. 学习笔记——PA的stability问题
  2. LeetCode(49)Anagram
  3. 基于高德地图开发 Web 应用
  4. 单片机之FPGA选修部分基础了解
  5. 老北京的清明习俗(图)
  6. 一文带你弄懂Visual Studio:运行时库及MT/MTD、MD/MDD
  7. 情人节——与她对弈五子棋(Python实现)
  8. qt 字体不随dpi_qt 5.5文档翻译系列-High DPI Displays
  9. PaxosLease
  10. 从微博个性图标里学Android动态更换