该篇文章转自: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. Leangoo英文版来了~
  2. RSA加密算法原理及RES签名算法简介(转载)
  3. 知乎上 40 个有趣回复,很精辟!
  4. 取两个数较小值c语言_如何提升C语言安全性,达到RUST的安全性
  5. 域名怎么绑定ip_服务器怎么绑定域名?
  6. Berrycast – 屏幕录制分享工具[Windows/macOS]
  7. Strings_append_学习
  8. MailKit使用IMAP读取邮件找不到附件Attachments为空的解决方法
  9. GIF图像动态生成-JAVA后台生成
  10. vivo X9L的usb调试模式在哪里,开启vivo X9Lusb调试模式的流程
  11. fine-grained prosody control专栏
  12. 计算机主机是啥意思,服务器宕机是什么意思?电脑宕机的读法与含义
  13. linux QT 结束当前进程_Qt与Web混合开发(一)--简单使用
  14. Trie——BZOJ4567/Luogu3294 [Scoi2016]背单词
  15. 云计算的应用有哪些?
  16. 什么是舆情监控,舆情监控是什么?
  17. Python中plot() 淘宝历史价格,js chrome 插件
  18. 2020-10-22图像处理常用边缘检测算子总结
  19. Oracle企业版、标准版及其他版本的异同
  20. 北京大学软件与微电子学院08届就业统计

热门文章

  1. Linux多线程下载神器XDMv8.0 中文汉化设置,替代idm
  2. 徐州矿业大学计算机真题,中国矿业大学(徐州)考研真题汇总
  3. 6/12 writing mockups - REST and SOPA
  4. 一次未成功的渗透测试实战
  5. 潇洒郎:吐血经验——用python 结合好压软件 实现批量压缩文件或文件夹、并同时添加压缩密码方法———因为zipfile模块或者其他模块无法实现为文件添加压缩密码
  6. Solv Vouchers 全新版本 V2.1 发布!
  7. Linux 入门概述
  8. 项目思路---接口的权限控制、登陆校验以及白名单的设置
  9. echarts做企业关系图谱_使用Echarts呈现天善用户的关系图
  10. [生存志] 第121节 十二经络生气通天