该篇文章转自:http://www.52im.net/thread-475-1-1.html

主要列举了实现视频直播平台过程中的技术要点和难点。阅读长长见识。

------------------------分界线------------------------------------------

首先是一个问题,开源WebRTC能做实时视频直播吗?

首先,得有一个实现了WebRTC相关协议的客户端。比如Chrome浏览器。然后架设一个类似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只适合小范围(8人以内)音视频会议,不适合做直播。

-------------------------分界线-----------------------------------

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

需要了解:

  • 摄像头采集;
  • 音视频编解码;
  • 流媒体协议;
  • 音视频流推送到流媒体服务器;
  • 流媒体网络分发;
  • 用户播放器;
  • 音视频同步;
  • 网络延迟自适应;
  • 需要录制,多种视频文件的格式和封装;
  • 语言:C、C++、html、php、mysql......
  • 开发环境:嵌入式,Linux,Windows,Web......

解决办法有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. 实时视频直播平台的技术要点详解

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

  3. 浅谈即时通讯开发之实时视频直播平台如何开发

    现在大大小小的公司,甚至个人开发者,都想开发自己的直播网站或App,本文会帮你理清,开发视频直播平台,你需要注意哪些技术要点. 你以为调用几个Chrome的API就能直播了? WebRTC用的不是插件 ...

  4. 直播源码开发视频直播平台,不得不了解的流程...

    随着直播行业的不断发展,直播平台市场已基本稳定,诸如斗鱼.虎牙等头部直播平台都已选择上市之路.如今开发视频直播平台还有市场吗?答案是"有".现在的视频直播平台在垂直细分领域的发展越 ...

  5. 游戏开发物语方案点数分配_直播开发平台解决方案——如何开发游戏直播平台...

    在大量资本投入的前提下,游戏直播平台成为当下直播行业最具发展力的领域,斗鱼和虎牙完成上市,双巨头格局已然形成.既然市场发展潜力巨大,那么肯定有人跃跃欲试.那么,如何开发游戏直播平台呢? 游戏直播平台是 ...

  6. (0077)iOS开发之直播播放器技术名词理解以及开发准备(待实现直播demo)

    本文主要是为了理解最近比较火的直播软件.播放器软件的实现原理的调研.为以后研究相关开发做准备.调研整理: 关键词:iOS直播 类似斗鱼,虎牙等直播平台都运用了哪方面前后端技术? https://www ...

  7. 呆萌直播源码:如何开发视频直播平台?

    一.首先我们先看看一个直播产品的功能模块,根据功能模块来看看如何去开发. 1.从推流到拉流的通道,这当中包括数据采集→数据编码→数据传输(流媒体服务器) →解码数据→播放显示整个流程: 2.内容复制分 ...

  8. 直播系统开发,直播平台源码切忌一成不变

    直播过程中流媒体协议的传输大致包含六个环节,分别是采集.预处理.编码.传输.解码.播放等环节,这六个环节的前五个环节都是需要开发者费心的. 直播系统开发时,会在直播平台中内置分类列表,每个直播平台也都 ...

  9. 短视频平台开发VS直播平台开发,未来发展趋势

    2018年直播平台依旧火热,但短视频平台也迅速崛起,行业间的竞争愈加激烈,也有很多平台终因不适应市场被淘汰.短视频和直播也是展开了一场"绞杀战",短视频嵌入到直播中增加内容,而短视 ...

最新文章

  1. SNMP introduction
  2. prometheus连续查询_Prometheus查询
  3. Linux用户和HDFS和Hive权限关系
  4. cesium 设置时间_Cesium应用篇:3控件(1)Clock
  5. cmscore服务地址_cms core服务器
  6. pomelo获取客户端IP
  7. 反序列化时恢复transient字段
  8. 实验2.3 使用重载函数模板重新实现上小题中的函数Max1
  9. matlab2c使用c++实现matlab函数系列教程- polyint函数
  10. 注塑机摆放间距多少合适_请查阅:过滤毛刷摆放参考标准!
  11. Kotlin — 使用Eclipse运行第一个Kotlin程序,打印“Hello World”!
  12. Hyperledger Fabric 开发环境安装
  13. 榆熙教育:店铺DSR评分如何理解?
  14. Zynga公布2020年第三季度财务业绩
  15. XYplorer设置-右键新建word文档或者md文档
  16. 转载分享一批老外的超牛25行代码参赛作品的Flash源文件
  17. React教程(六)——使用 create-react-app 快速构建 React 开发环境
  18. Howler.js:用于现代Web的音频库
  19. Python爬取托福阅读练习题
  20. c语言程序关键字是什么,C语言中32个关键字详解

热门文章

  1. 电脑显示DNS服务器没检测到,连网时出现该设备或资源(DNS 服务器)没有检测到有响应,怎么办?...
  2. 俄罗斯铁路公司考虑将区块链用于折扣运输服务用户
  3. “AR录取通知书”火了,HiAR独家揭示App嵌入AR的奥秘
  4. Android获得火车时刻表Web Services的全部始发站名称
  5. Apache SparkStreaming 统计一定时间内的热门词汇TopN
  6. 计算机网络 运输层 TCP协议
  7. Android靶场All Safe wp
  8. 人类还能够进化吗?答案可能出乎意料
  9. 软件测试怎么对需求报告进行评估,系统测试报告中测试充分性分析中的需求覆盖、测试覆盖如何写?...
  10. 疫情微博内容情感分析