开发直播系统中都需要知道哪些技术?怎样才能避免直播系统开发的坑?
从2014年直播发展到现在,已经成为了互联网泛娱乐主要之一,很多企业都想加入直播行业,让直播与企业自身行业结合,成为新的模式,但是企业本身不懂开发直播的技术,只能自行搭建开发项目组,或者找外包公司开发,不管选择那种那种开发方式,都要了解里面的相关技术,避免一些直播开发的一些大大小小的坑。
一、直播中使用的流媒体协议
流媒体是指采用流式传输的方式在Internet播放的媒体格式。流媒体又叫流式媒体,它是指商家用一个视频传送服务器把节目当成数据包发出,传送到网络上。用户通过解压设备对这些数据进行解压后,节目就会像发送前那样显示出来。
1.UDP协议:UDP是OSI参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成,提供面向事务的简单不可靠信息传送服务。UDP提供了无连接通信,且不对传送数据包进行可靠性保证,适合于一次传输少量数据
2.RTMP协议:是现在编码器输出的工业标准协议,基于所有的编码器(摄像头之类)都支持RTMP协议。RTMP也是目前直播平台应用最多的流媒体传输协议(延时大约在1-5秒之内)RTMP 基于 flash技术,无法在 iOS 的浏览器中播放,但是实时性比 HLS 要好。
3.HLS协议:HTTP Live Streaming(缩写是HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议,主要用于PC和Apple iOS移动终端。HLS属于切片式传输,HLS延时较大,大约在10-15S左右,目前应用在手机WAP页面以及微信页面观看。
二、 直播平台建设的架构概说
直播过程中流媒体协议的传输大致包含六个环节,分别是采集、预处理、编码、传输、解码、播放等环节,这六个环节的前五个环节都是需要开发者费心的。
1.采集
采集环节最大的坑在于机型适配,这么说吧,我们都知道现在智能手机行业发展的很好,699的红米用得上晓龙的处理器,1万+的苹果照样有人买得起,至于这不足千元和一万+之间的价格差距之间,自有小米、联想、360、华为、三星、VIVO、OPPO等等等等定位不同、配置不同、价格也不同的手机厂家自动上前补缺,用户的选择多种多样,使用感也各不相同,因此开发直播app软件时所需做的适配和测试的复杂度也就水涨船高,根据手机的厂家不同、操作系统不同、系统版本不同、屏幕版本和GPU型号不同,开发者们要做非常非常多次机型配置,如果是有一定经验的开发团队还好,如果是个人或新团队,在测试上所花费的时间和金钱就是对开发者最大的阻碍了。
3.预处理
在预处理环节我们要接触的是美颜、音效、萌颜。贴纸、特效等,通常业内自己开发的很少,都用SDK,这部分不需要我们太过操心,但要注意,在于处理部分,音频和画面不是一条流,小心音画错位的坑
4.编码
编码环节要注意对分辨率、码率、帧率的调试,以及对音视频编码格式的选择,通常,编码格式我们会选择H.264或H.265,编码的作用是降低数据包大小,节约流量,以及方便后期转码解码。
5.传输
推流、拉流和内容分发环节可以被统称为传输环节,传输的完整流程是这样的,主播自开启直播起,主播端便会源源不断向服务器传输视频流(此时直播画面到达服务器),另一边,用户打开主播直播间收看直播,在点击的一刹那,用户端会向服务器发起申请,用户端拉流申请被同意后,视频会被CDN分发和加速,最终到达用户手中。
6.解码
在视频到达用户端后,用户端需要对视频进行转码和解码才能播放,通常解码器和编码器是配套的,这样能够大大降低解码速度,提高直播首屏打开时间,避免因等待造成的用户流失。
在这一步所需要处理的难点有:播放模式、音视频同步难点、降噪和回声抑制难点等,在视频解码完成后,即可渲染播放。
在直播开发过程中有大大小小的坑,直播软件开发者要记得规避它们,才能更好的开发直播app软件。
- 怎样才知道对于任意的sprintf调用需要多大的目标缓冲区?怎样才能避免sprintf目标缓冲区溢出? 转载
- 开发一对一直播系统都有哪些主流功能需要开发你都了解吗?
- 直播APP开发过程需要哪些技术和需要注意哪些问题?
- 开发直播APP需要只要哪些问题?了解哪些问题才能不被坑?
- BaBaLiuLiu游戏--开发H5游戏需要哪些技术
- 手机视频直播系统开发技术难点分析
- 你知道多少嵌入式Linux系统开发所需要的知识?
- 怎样从流程和技术角度避免系统故障?
- 微信公众平台开发需要懂哪些技术
- 12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球。 13个呢?(注意此题并未说明那个球的重量是轻是重,所以需要仔细考虑)(5分钟-1小时)
- 如何搭建直播平台,都需要哪些技术和人员以及资金投入?
- Java Web项目开发到底需要掌握哪些技术?
- Java Web项目开发到底需要掌握哪些技术?
- Java Web项目开发到底需要掌握哪些技术?
- 微信商城系统开发需要哪些功能?
- Java Web项目开发到底需要掌握哪些技术?
- [译]作为一个web开发人员,哪些技术细节是在发布站点前你需要考虑到的
- ubuntu用qt creator写的程序编译后生成的可执行文件复制到另一个系统中需要哪些文件才能运行
- 开发一款一对一直播社交app需要考虑到哪些问题呢?
- 开发视频直播APP需要了解的技术原理和技术细节