怎么创建直播平台

现在直播应用非常火爆,它以生动直观的方式向用户传达最真实的现场信息,受到广大用户的普遍欢迎。小编作为一名技术人员,经常开发各种直播平台,(娱乐直播、游戏直播、教育直播、财经直播等)下面我把自己积累的一些经验分享给大家,希望和大家一起交流学习,共同进步。

第一步,移动端视音频采集

首先,对于手机端的视音频采集编码技术,我们有过类似的经验。考虑到手机的处理能力,我们的技术路线是利用手机自身核心处理器的视频编码能力来完成。在Android端调用Mediacodec开发接口来实现,iOS端调用苹果提供的Core Video框架来实现,编码格式上我们采用H.264视频编码和AAC音频编码,通过硬件编码方式极大地降低了移动终端的CPU负荷与功耗,。在协议的选择上,我们采用当前主流的RTMP协议由客户端向服务器端推送数据。RTMP是Adobe公司制定的一款流传输一些,结构比较简单,自己研究就能搞定,而且这款协议在行业内应用非常广泛,便于不同产品的集成。

第二步,内容的发布和转码

前端设备将直播的视音频内容采集处理后,首先推送给平台的源站服务器,我们将源服务器部署在了北京本地的运营商骨干节点机房(近距离便于维护)。源服务器采用多机集群热备份机制,防止一台源站服务器宕机后影响整个平台的稳定运行。

源站服务器连接有专业的磁盘阵列存储设备,当源站服务器接收到数据后,首先复制N份转发给下面的N个二级CDN节点,同时复制一份给转码服务器。转码服务器将接收到的每一个流进行实时的转码,主要是将高清码流转换一份标清码流给小屏移动终端,移动终端接收标清小码流不仅符合自身的小屏分辨率需要,同时可以降低对移动端的解码能力要求,还能有效节省带宽成本。

第三步,流媒体发布

流媒体发布这个环节对于整个平台来说也是至关重要,因为最终面向终端用户提供服务的是分布在全网的流媒体服务器,流媒体服务器的稳定性以及性能优劣决定着终端用户的体验效果和平台的运营成本。根据之前做IPTV的经验,我们在这个项目中选择的技术路线还是自行开发,当然还是基于之前做IPTV流媒体服务器的基础来做,核心技术点又有如下的改进:

1. 流媒体服务器还是采用C语言实现,保障运行效率最高;

2. 将之前的多进程模型改成异步IO模型,提高服务器的并发处理性能;

3. 在协议层上增加对RTMP、HLS协议的支持;

4.引入hadoop这一分布式架构,便于大规模分布式部署、调度和容错;

通过这些改进,流媒体服务器的整体性能又会有一个质的飞跃。

第四步,CDN内容分发

这方面是我的业务特长所在,与我之前做IPTV平台的技术路线相同,主要是对流媒体数据在全网范围内的多个节点之间进行快速的分发,从而提高终端用户的体验效果。

在协议的选择上,我们根据直播和点播应用的特点,支持RTMP协议、HTTP协议、UDP协议这三个类型。

节点服务器的建设方面,我们根据国内互联网的整体布局,采用中心节点->各省级节点->地市级节点 三级架构模式,把主要的用户流量首先引导到第三级节点,然后是第二级节点,之所以这样设计,主要因为越到中小城市,带宽价格越低,这样可以极大地节省后期的运营成本。

第五步,终端播放器开发

在终端的解码回放部分,我们考虑自行开发PC、Android和iOS三个终端的播放器,由于三种终端采用不同的操作系统平台,因此我们成立了三个开发小组来分别完成,下面讲一下技术路线:

PC端:

采用行业内主流的技术路线,基于Adobe的Flash Player做应用层开发,这也是当前最成熟时的技术路线。为了缩短开发周期,我们基于Adobe的OSMF播放器框架来做,开发周期控制在2个月以内比较可行。

Android端:

Android端的播放器开发我们首先考虑到的是终端的解码性能,因为解码框架有多个可选,比如FFMPEG、VLC、MediaPlayer API、Exoplayer等,从我们自身的熟悉程度和项目的可控性上考虑,最终决定采用google的Exoplayer做二次开发,开发周期可以控制在2个月以内。

iOS端:

iOS端的播放器也是基于同样的考虑,我们选择了苹果提供的VideoToolbox开发接口,通过它可以直接调用苹果处理器自带的硬件解码功能,这样可以大大降低设备的功耗,延长电池的续航时间。

以上就是小编怎么创建播平台的一段经历和收获的一点点经验,记录下来既是对自己的总结,同时也想与各位创业者和同行一起分享,希望对大家有所帮助。如果您有不同的见解,欢迎咨询交流!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/253328.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

关于linux的ssh(出现的问题以及ubuntu的ssh配置和ssh连接超时问题)

目录 Ubuntu进行ssh连接 关于ssh报错排错 备注:防火墙和selinux可能对ssh连接存在限制,但是我在操作的时候并没对我照成影响 查看selinux状态 ssh_config和sshd_config的区别 Ubuntu进行ssh连接 1.首先需要安装SSH服务器,在ubuntu终端输…

matlab机器人画圆轨迹规划

在这里插入图片描述 function Untitled()clear;clc; L(1)Link([0 0.15055 0 pi/2]); L(2)Link([0 -0.115 0.246 0]); L(3)Link([0 0.1163 0.190 0]); L(4)Link([0 -0.1175 0 pi/2]); L(5)Link([0 0.1175 0 -pi/2]); L(6)Link([0 0.105 0 0]);ZU3SerialLink(L,name,JAKA Z…

Ps制造图标

(作者:翟正兴,撰写时间:2019年6月17日) 首先我们打开ps新建一个文档 ,然后在文档里面用椭圆工具画一个圆出来,画圆的时候把填充禁掉,把描边大小调成30像素首先我们打开ps新建一个文档…

怎么用PS软件图层样式制作图标

1. 2.圆角60px 3. 4.添加图层样式【渐变叠加】 5. 添加【斜面和浮雕】 6. 7.再画一个圆角矩形并添加【图层样式】【渐变叠加】【描边】 8.画圆再次添加【图层样式】【渐变叠加】【内阴影】 9.画圆形并填充黑色【图层样式】【描边】 10. 11.复制圆形最后得到效果图 编辑&#xf…

chatgpt赋能python:Python中最大公约数的函数介绍

Python中最大公约数的函数介绍 在数学中,最大公约数(GCD)是两个或多个整数的最大公约数。 Python是一种高级编程语言,具有内置的GCD函数。在本篇文章中,我们将介绍Python中的最大公约数函数,以及如何使用它…

Python OpenCV画圆

Python OpenCV画圆 PS: 也是从网上各个帖子中学习的Python,因此代码的格式以及内容有粘贴网上其他大神的代码,如有侵权请告知删除 在图片中检测圆,并进行标注 #!/usr/bin/python # -*- coding: UTF-8 -*-import cv2# 加载图片 img cv2.im…

PS-切图

ps学习 1.改设置 新建ctrN ,网页默认选web大小宽度1920 移动工具:设置选择图层 选择自动选择或者按Ctrl鼠标左键可选中 视图:勾标尺显示智能参考线 关掉一些窗口,只留下图层、历史、信息、字符 改信息窗口的面板选项: 改编辑…

C语言画圆(详细解释易懂)

代码 #include<iostream> #include<cmath> using namespace std; int main() { for(double y10;y>-10;y-1){for(int i0;i<10;i) cout<<" ";double x2.5*(10-sqrt(100-y*y)),t;for(t0;t<x;t1) cout<<" ";cout<<…

中点画圆算法----计算机图形学

圆的对称特性&#xff1a; 一个八分圆上的点可以映射为其余七个八分圆的点 利用圆的对称性可以减少计算量&#xff0c;只需要计算出一个八分之一圆上需要画的点&#xff0c;就可以映射出整个圆 中点画圆算法&#xff1a; &#xff08;对于原点为(xc,yc)的圆&#xff0c;假定圆…

Android 自定义View 画圆(奥运五环)

效果图 前言 你会画画吗&#xff1f;你会写代码吗&#xff1f;你会用代码画画吗&#xff1f; 正文 自定义View&#xff0c;实际开发过程中&#xff0c;因为涉及用户体验的时候&#xff0c;UI通常会弄一些骚操作出来&#xff0c;这个时候就有两个选择&#xff0c;你是用GIF…

PS小知识(三)——画圆滑线及虚线

一&#xff1a;画一个圆滑线 1、利用“套索工具”沿着地物画一个圈&#xff1b;或者利用“磁性套索工具”画圈&#xff08;这个的特点是可以大致按照不同的颜色自动追踪&#xff09;。 2、右击进行“描边” 3、进行下面的“平滑”操作 二&#xff1a;画一个圆滑且各段等长的…

html画布里面画圆,html5 canvas 画布画圆

什么是 Canvas? HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。javascript 画布是一个矩形区域,您能够控制其每一像素。css canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。html 浏览器支持 Internet Explorer 9+, Firefox, Opera, Chrome 以及 Sa…

Bresenham 画圆算法原理

文章目录 前言Bresenham 画圆算法原理两个近似构造判别式圆与网格点的关系关系由来关系含义 p i p_i pi​ 递推画圆程序伪码 圆与网格点的关系图示 前言 首先简要介绍一下生成圆的方法&#xff1a; 直接利用圆的方程生成圆利用圆的对称性生成圆 方法一由于会涉及到浮点运算等…

C++ deque类成员函数介绍

目录 &#x1f914;deque模板介绍&#xff1a; &#x1f914;deque特点&#xff1a; &#x1f914;deque内存结构图解&#xff1a; &#x1f914;deque各操作地址指向&#xff1a; &#x1f914; deque的成员函数&#xff1a; deque构造函数&#xff1a; &#x1f50d;代…

ajax异步请求刷新layui表格

ajax异步请求刷新Layui表格数据 今天遇到一个小问题&#xff0c;向后端传一个bean插入到数据库后&#xff0c;在前端页面同步显示。刚开始直接用from表单把数据传给后台进行插入操作&#xff0c;但是这样前端不能及时接收到后端完成插入操作的信息&#xff08;其实是我不知道怎…

form 表单提交时用ajax异步请求导致ajax请求结果无法接收问题

1、背景描述&#xff0c;有个公司内部用的小系统&#xff0c;不想大动干戈用太多前端框架&#xff0c;就用HTML5写了个登陆页面&#xff0c;刚开始想着用form表单提交登陆账户信息。后来因为前后端分离&#xff0c;并且统一用ajax调用后台服务交互数据&#xff0c;因此在form表…

AJAX异步请求(Asynchronous Javascript And Xml)

文章目录 1、传统请求及缺点&#xff08;1&#xff09;传统的请求&#xff08;2&#xff09;传统请求存在的问题 2、AJAX概述3、XMLHttpRequest对象4、AJAX GET请求5、AJAX GET请求缓存问题6、AJAX POST请求&#xff08;1&#xff09;案例一&#xff1a;使用AJAX POST请求实现用…

AJAX 异步请求处理

AJAX Asynchronous JavaScript and XML&#xff08;异步的 JavaScript 和 XML&#xff09;。 AJAX 不是新的编程语言&#xff0c;而是一种使用现有标准的新方法。 AJAX 最大的优点是在不重新加载整个页面的情况下&#xff0c;可以与服务器交换数据并更新部分网页内容。 AJA…

如何判断一个请求是否是Ajax异步请求

前言 今天在看项目过程中&#xff0c;发现了一段代码。是用来判断一个请求是否是ajax请求&#xff0c;出于好奇&#xff0c;我研究了一番。 代码预览 /*** 是否是Ajax异步请求* * param request*/public static boolean isAjaxRequest(HttpServletRequest request){String ac…

jquery实现ajax异步请求

前端代码&#xff1a; <html> <head> <meta charset"UTF-8"> <title>异步请求</title> <script type"text/javascript" src"jquery-3.3.1.js"></script> <script type"text/javascript"…