直播六脉神剑,练好这几招才能行走江湖
直播技能图谱解读
前言
直播火遍了大江南北,直播厂商也也一如当年的团购网站,遍地都是,令人眼花撩乱。但是做好直播可是需要十八般武艺样样精通,方能在直播大战中生存下来,我们来解读下这个技能图谱的六脉神剑。
1 采集 前处理
首先的面临的问题是音视频的采集和前处理。通过摄像头和麦克风获得实时的音视频数据,再将数据采集的输入流进行实时处理。
对于语音, 需要调整音频处理模块的算法,噪声消除,回声抑制,自动增益,还有多麦克风降噪,盲扩增强等等。
对于视频,视频的前后处理,比如降噪,美颜也少不了。这就需要图像与视频信号处理。
对各个平台(Android,iOS,Windows,Mac)底层音频,视频系
统也需要深入了解,投入许多人力物力对各种型号的硬件做适配。
2 编码 解码
有了音视频数据,我们需要将音视频进行编码,收到数据时进行解码,是一个实时双向完整的过程。
常见的封装格式:
- MPEG Audio Layer 3 :大名鼎鼎的 MP3,已经成为网络音频的主流格式,能在 128kbps 的码率接近 CD 音质
- MPEG-4(Mp4) : 编码采用的容器,基于 QuickTime MOV 开发,具有许多先进特性;实际上是对Apple公司开发的MOV格式(也称Quicktime格式)的一种改进。
- H.264: 是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准
- H.265:ITU-T VCEG 继H.264之后所制定的新的视频编码标准。H.265标准围绕着现有的视频编码标准H.264,保留原来的某些技术,同时对一些相关的技术加以改进。新技术使用先进的技术用以改善码流、编码质量、延时和算法复杂度之间的关系,达到最优化设置。
然而,对于娱乐直播来说,编码器常用AAC,MP3已经很少使用了。Agora在这方面有很多专利,主要能够适应复杂互联网环境,自动调节码率保证清晰度和流畅度。
3 传输
要主播的音视频数据发送到观众,从如何做角度,可以选择CDN的方式也可以选择自建传输服务;
CDN(Content Delivery Network),即内容分发网络,是一个策略性部署的整体系统,主要用来解决由于网络带宽小、用户访问量大、网点分布不均匀等导致用户访问网站速度慢的问题。
。主播将数据直接丢给CDN,由CDN来保证用户能够快速稳定的接入最优的节点。优点是简单方便,有很多CDN厂商可供选择,经过多年技术积累,有较为成熟的技术。缺点是传输的延迟大,由于将数据发到CDN后, CDN会在内部将数据转发到各个CDN节点,应对网络的丢包和抖动。所以必然会有很大的延迟。实时连麦都延迟的要求更加高。
自建传输系统。主要解决两个问题。
1 用户到服务器接入质量。
- 用户分布在不同的国家;
- 用户分布在不同的运营商,不仅是移动联通电信这样大运营商,教育网,还有鹏博士,长城宽带等等小运营商,不同运营商之间的网络很不稳定;
- 用户处于不同的网络环境,2G,3G,4G,wifi,以太网。
保证用户接入网络良好的节点,不仅要求你的接入节点要多要分布广,还要求对于用户的接入是最好。还要考虑公网的路由情况和高峰期的网络状况,白天接入质量好的节点晚上不一定是最好的,要能动态调整给用户一个最好的接入节点。
2 服务器之间传输质量。
- 不同运营商之间,由于运营商之间的结算和有限带宽的问题。运营商之间的网络不稳定。
- 不同国家之间,网络质量随着公网高峰变化,路由状态也不相同。
总之,传输过程要解决网络丢包,网络延迟,网络抖动等等问题
从实现方案角度,服务器与客户端之间通信遵循的规则,可以选择直接的socket,HTTP,RTP/RTSP。
- Socket,直接选用UDP传输数据,但是要进行自己进行传输优化,流控,重传等等。
- HTTP。基于TCP。
- RTP/RTSP。RTP(Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议。RTP协议和RTP控制协议RTCP一起使用,而且它是建立在UDP协议上的。
RTSP:(Real Time Streaming Protocol)是用来控制声音或影像的多媒体串流协议,RTSP提供了一个可扩展框架,使实时数据,如音频与视频的受控、点播成为可能。
Agora的直播,采用SD-RTN实时传输方案,与传统CDN的内容方案从实现机制上有根本不同。感兴趣的同学可以进一步阅读 到处都在说直播连麦技术,它们真的能连吗?
4 服务器处理
CDN采用一些常用的流媒体协议来交互,RTMP,HLS,HTTP FLV等。
- RTMP(Real Time Messaging Protocol)是基于TCP的,由Adobe公司为Flash播放器和服务器之间音频、视频传输开发的开放协议。
- HLS(HTTP Live Streaming)是基于HTTP的,是Apple公司开放的音视频传输协议。主要应用在iOS系统,为iOS设备(如iPhone、iPad)提供音视频直播和点播方案。
- HTTP FLV则是将RTMP封装在HTTP协议之上的,可以更好的穿透防火墙等。
5 应用服务
聊天,礼物系统,支付系统,弹幕等等,对于运营和活跃气氛来说非常重要有了这些,才算一个完整直播APP。同时在线人数庞大的实时聊天互动、实时弹幕,在保障消息实时性的前提条件下,将会面临非常高的并发压力。
6 统计服务
为了更好的监控用户的质量和分析用户的行为,要对客户端收到的种种数据进行统计,当用户量大时,非常考验你的统计存储系统。比如,我们要统计用户的丢包,延迟,接收帧率,码率等等10种数据,我们每2秒上报一次数据,一个小时的直播,一个用户要上报3600/2*10=18000条数据,对于一个有1W人直播的频道就意味着一个频道就要存储1.8亿条数据。
数据的存储单一的存储模式就满足不了需求了,可以根据数据的使用不同来选择NOSQL,像mongo redis hbase这种,或者关系型数据库mysql和postgreSQL。
如果数据量不是几台机器能解决,单纯通过增加硬盘个数来扩展计算机文件系统的存储容量的方式已经很难满足你的需求,可能需要分布式文件系统,Ceph,GlusterFs,MooseFs,MogileFs,FastDFS,HDF,OpenAFS,GFS,KFS,TFS等等。在使用分布式文件系统时,无需关心数据是存储在哪个节点上、或者是从哪个节点从获取的,只需要像使用本地文件系统一样管理和存储文件系统中的数据。
结语
本篇主要泛泛介绍了做好一个直播需要做好的六个方面,这其中任何一个方面,都不是几篇文章能够讨论清楚的。没有一种解决方案能够完美解决直播的需求,需要我们不断的尝试,探索,研究,是个极大的挑战。只有自身的技术过硬,没有短板,六脉神剑齐用,方能在直播惨烈的洗牌当中,成为笑到最后的那个。
【本文作者】
林士博 声网http://Agora.io 高级软件工程师
直播六脉神剑,练好这几招才能行走江湖相关推荐
- php六脉神剑,练到极致的六脉神剑究竟有多强?强到离谱,金庸都只能让它失传!...
六脉神剑是<天龙八部>中大理段氏的至高绝学.无崖子.李秋水网罗天下武学时只缺易筋经.六脉神剑.一阳指和降龙十八掌寥寥几种武功,慕容博对鸠摩智论武时将六脉神剑与易筋经并列当世绝技,乔峰在与段 ...
- 直播怎么录屏,妙招分享,亲测好用!
看直播怎么录制屏幕视频?直播怎么录屏?无论是网络直播课程还是游戏主播直播,很多朋友都想在观看时录制,方便后面再次回顾.事实上,录制直播视频的方法很简单.今天,小编就来分享一个亲测好用的妙招. 一.手机 ...
- 百度也能直播带货!12小时——“慢行”才能持久
湖北成了互联网巨头和大户们暗自较量的"新战场". 淘宝.快手.抖音先后进行了湖北专场的直播带货,卡司不可谓不强大:李佳琦和朱广权在淘宝直播间里组成了"小朱配琦" ...
- 在视频直播软件开发中,这样做才能实现svga格式礼物动画
在线直播源码中,礼物功能的开发是必不可少的,它不但可以作为用户对主播的喜爱度的评判标准,还是直播平台变现的方式之一,那么在直播源码中,svga格式礼物动画是如何实现的呢?以云豹的金山demo为例,实现 ...
- 如何打造“百万美金直播间”?教你几招跨境直播秘诀。
黑五购物旺季来临,如何运用跨境直播实现海外销售额腾飞呢?在2020年黑五促销季,某跨境直播团队在各大平台直播间突破百万美金促销额只用了12个小时,在其跨境直播助力下的各大品牌,黑五销售呈爆发式增长. ...
- 当健身用户进入直播间:一场全新内容生态的破壁与重建
2月13日,一档央视新闻客户端的#花样过年指南#节目,在短短20分钟的健身直播+带练环节,收获了2300万+的观看量. 这样的数据,一方面是在疫情催化下民众原地居家过年的现实因素,另一方面,却是疫情对 ...
- 运营必看SQL(中)—写好SQL的“六脉神剑
写在前面:如果你是一名程序员又恰好是一名SQLBOY的话,那么请移步,因为下面讲的实在太精彩但不专业:如果你是一名想学会写好SQL的运营,那么你一定要认真来读. 本文用形象的的语言介绍写好SQL六大必 ...
- 如何招到适合自己店铺的淘宝主播
随着移动互联网的发展,人们开始逐渐习惯看手机直播来进行网上购物,通过亲眼看见产品以及主播的介绍,买东西买得更放心安心.这也让许多淘宝店开启了直播之路,但是想要做好直播带货就需要找到合适主播.今天就来给 ...
- 亲加通讯云郝飞:探讨直播低延迟低流量的粉丝连麦技术
摘要:互动是视频直播中用户体验最好的体验.目前上市场视频直播互动依靠打赏和文字互动,而对于粉丝来说,连麦上镜才是最好的用户体验.本次亲加通讯云郝飞受邀参加ArchSummit微课堂,探讨直播低延迟低流 ...
- 双11,2分钟狂挣20亿的神秘大厂,急招.NET!
双11小米开门红,2分钟不到突破20亿,于是机智的我又去逛了下小米的招聘官网:招5年左右.NET,35k左右,14薪,要求WPF和自动化,真香!回首牛年2个跳槽季,招WPF的大厂太多了:阿里影视.百度 ...
最新文章
- COM:中科院遗传发育所发表“重组菌群体系在根系微生物组研究中应用”的重要综述
- HDU ACM 3177 Crixalis's Equipment
- php 等5秒钟继续,android – 如何每5秒钟继续请求一个页面而不是杀死电池?
- 数学建模公选课Ch1.2020.4.4
- js jQuery取消添加超链接的方法小结
- 智能集群理论优化控制_探索群体智能的奥妙——ROB-MAS多智能体协作
- shell 的here document 用法、输入/输出重定向
- 信息学奥赛C++语言:交换数值
- tf.shape()和tf.reshape()
- 计算机学院特色迎新标语,开学迎新口号
- jmeter安装配置教程
- 为什么chrome视频时卡得厉害(by quqi99)
- 软件项目开发流程逻辑图
- git出现绿色、红色状态的deleted
- Matlab 视频读取报错“Unable to locate decompressor to decompress video stream”解决办法
- Combining Word and Entity Embeddings for Entity Linking
- 深入学习Spring框架之一Spring的简要概括
- 基于java+Mysql的志愿者管理系统代码分享
- 计算机无法开机如何读u盘启动,电脑无法识别U盘启动盘怎么办?
- There is no getter for property named xxx in xxx
热门文章
- 举个例子解释下什么是线程不安全?
- 阐明iOS证书和provision文件
- auto.js制作简易音乐app(一)
- 利用STL中的vector实现“有向有权图”的邻接表表示
- java开发微信抢红包挂_java实现微信抢红包算法
- 使用ArrayList集合,对其添加10个不同的元素,并使用Iterator遍历该集合
- 《霍乱时期的爱情》摘要
- 分门别类输入输出,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本数据类型和输入输出EP03
- json编辑器插件 vue_基于vue平台的json schema 编辑器
- JSON的生成和解析