直播间搭建过程中较为核心的三个步骤
不知道大家平时有没有看游戏直播的习惯,我偶尔会看。目前游戏直播通常会分成网游和手游两大类,最明显的区别就是一个需要电脑一个需要手机。但这些在开发者眼中看来,直播间搭建的过程都是比较一致的。不过其中也存在需要特殊注意的几个步骤,接下来跟大家简单分享一下。
1.流媒体的发布
这一环节对于整个直播平台来说是非常重要的了,因为最终面向的是各个终端用户,并且需要提供服务的是分布在全网的各个流媒体服务器。我们也可以这样认为,流媒体服务器的稳定性及性能优劣程度决定着终端用户的产品使用体验效果和直播平台运营成本。所以在开发过程中需要进行适当的改进。
(1)采用C语言实现,以保证流媒体服务器的运行效率最高。
(2)将之前的多进程模型改为异步IO模型,从而提高服务器的并发处理性能。(在直播过程中遇到高并发情况时能够及时得到解决)
(3)在协议层上增加对RTMP和HLS协议的支撑。
(4)为了能够大规模的进行分布式部署、调度和容错,可以引入Hadoop分布式架构。
可以通过以上几点在开发过程中做出改进,使得流媒体服务器的整体性能在原有的基础上再进行增高。
2.CDN分发
这一步骤主要是对流媒体数据在全球范围内的多个节点之间,进行一个快速的分发,以提高app终端用户的体验效果。通常会选择RTMP、HTTP及UDP这三个协议,在CDN的节点服务器建设上,需要根据国内互联网的整体布局,采取中心节点—各省级节点—地市级节点的三级架构模式,将最主要的用户流量最先引到第三级的节点上,然后是第二级节点以此类推。设计这样的模式主要是为了节省直播间搭建完成之后,后期的运营成本也就是带宽费用能够降低一些。最后,为了在一定程度上保障直播平台能够流畅运行,可以将CDN系统部署在64位的Linux服务器上。
3.终端播放器
就拿游戏直播来讲,不同的用户会根据自己的喜好和习惯来选择观看的渠道。也就是PC端和手机端,手机端又分为Android和iOS两个系统。所以在终端的解码回放部分,需要分别进行。
(1)PC
基于Adobe的flashplayer来做应用层的开发,这是目前比较成熟的技术路线。在开发过程中,为了有效地缩短开发周期,也可以基于Adobe的OSMF播放器框架来进行开发。当然,这个是需要根据实际情况来灵活变通的。
(2)Android
在Android端的播放器开发过程中,最先需要考虑的就是终端的解码性能。因为解码的框架有很多可以选择的,比如ffmpeg、mediaplayer等。
(2)iOS
iOS与Android端需要考虑的问题是一致的,需要选择苹果提供的videotoolbox的开发接口,通过它能够直接调用苹果处理器中自带的硬件解码功能。这样一来,就可以大大地降低设备功耗,以达到延长电池续航时间的目的。
经过以上的内容我们可以了解到,平时我们所看到的直播平台是经过开发者通过一系列的操作步骤完成的。为了能给用户带来最佳的产品体验,在直播间搭建的过程中也是下了不少功夫。不过要是自己开发这样一个平台的话,还是略微困难了些。
本文声明原创,转载请注明出处。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
2019 Android 高级面试题总结 从java语言到AIDL使用与原理
说下你所知道的设计模式与使用场景 a.建造者模式: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 使用场景比如最常见的AlertDialog,拿我们开发过程中举例,比如Camera开发过程中,可能需要设置一个初始化的相机配置,设置摄像头方向,闪光灯开闭,成像质量等等,这种场景下就可以使用建造者模式 装饰者模式:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰者模式可以在不改变原有类结构的情况下曾强类的功能,比如Java中的BufferedInputStream 包装FileInputStream,举个开发中的例子,比如在我们现有网络框架上需要增加新的功能,那么再包装一层即可,装饰者模式解决了继承存在的一些问题,比如多层继承代码的臃肿,使代码逻辑更清晰 观察者模式:代理模式:门面模式:单例模式:生产者消费者模式: java语言的特点与OOP思想 这个通过对比来描述,比如面向对象和面向过程的对比,针对这两种思想的对比,还可以举个开发中的例子,比如播放器的实现,面向过程的实现方式就是将播放视频的这个功能分解成多个过程,比如,加...
- 下一篇
Android `AsyncTask`简要分析
Android `AsyncTask`简要分析 AsyncTask简要分析 经典异步任务:AsyncTask,使用场景有:批量下载,批量拷贝等。官方文档就直接给出了一个批量下载的示例。 private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> { protected Long doInBackground(URL... urls) { int count = urls.length; long totalSize = 0; for (int i = 0; i < count; i++) { totalSize += Downloader.downloadFile(urls[i]); publishProgress((int) ((i / (float) count) * 100)); // Escape early if cancel() is called if (isCancelled()) break; } return totalSize; } protected void on...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7安装Docker,走上虚拟化容器引擎之路