直播系统解决方案-搭建你自己的直播平台

背景

当下,视频直播行业在中国逐渐走红。在刚刚过去的2015年,视频直播成为互联网行业最抢眼的领域之一。从游戏到秀场,从传统的网页端到移动互联网,各大直播平台包括斗鱼、熊猫tv、虎牙战旗还有纯移动端的印客、易直播等,群雄割据。言归正转,毕竟本文是一篇技术博客,接下来让我们从技术的角度分析如何搭建一个自己的直播平台。

流程图

首先让我们看一下直播整体流程。
直播流程图
首先是直播视频采集端,由主播通过摄像头手机等采集设备,采集视音频流,编码后采用RTMP协议[^RTMP]推流到直播流服务器。这里采用H.264[^H.264]编码对视频流进行编码,使用AAC[^AAC]对音频流进行编码,采用这两种编码的原因是hls协议[^hls]要求使用这两种编码。
接下来直播服务器会对从采集端推送的流进行一定的处理。比如,hls协议会将视频流切片成一个个的TS视频文件缓存在服务器中,同时生成一个m3u8文件记录了视频流中的包含的TS文件。
之后如果有播放器请求某一个直播链接,服务器会使用RTMP或者hls协议将流推送到播放器。那么我们该如果根据情况选择这两种协议呢。首先,我们需要明确一点,这两种协议各有利弊。如下所示:

  RTMP hls
Company Adobe Apple
平台支持 FlashPlayer 
等一些网页端的播放器 
移动端 Vitamio
Apple产品原生支持,
Android3.0以上原生支持 桌面机的浏览器需要使用一些第三方库,如JWPlayer
延迟 三秒左右的延迟,实时性较高 根据TS长度不同而不同,一般会有10s以上的延迟

综合以上因素,我们认为如果对实时性要求较高,那么使用RTMP会比较好。网页端使用RTMP会比较好,因为Flash Player原生支持,而大多数的浏览器都会安装Flash player。而在移动端如果对实时性要求不高,那么采用hls比较好,因为ios包括3.0以上的安卓都原生支持hls协议。接下来本文将根据以上的三个步骤的具体实现分别展开说明,为了篇幅考虑,我们会将一些内容放到子文章中。

视频采集与编码

视频采集可以有多重途径,比如通过电脑摄像头,通过OBS等录屏软件进行录屏,通过手机摄像头采集。由于目前户外直播和移动互联网很火,所以我们就选择实现在安卓设备上通过摄像头采集视频流(其实是因为我是写安卓的= =)。
为了实现这一功能,我们使用了一个开源项目javacv 它包含了一些在计算机视觉领域应用比较多的库,我们主要使用的是它的FFMpeg库。使用FFMpeg的FFMpegFrameRecoder类,我们能够方便地将从android摄像头采集到的帧传输到服务器。具体的通过Camera和FFMpeg推流到服务器的实现请看我们的另一篇文章Android使用FFMpeg实现推送视频直播流到服务器。另外FFMpeg也支持H.264和AAC编码。

直播流服务器

关于直播服务器,我们选择使用我们中国人开发的一个开源项目——srs,它支持RTMP/HTTP/RTSP等协议的流输入,支持RTMP/HDS/HLS/HTTP等协议的流输出,同时它也支持集群。给作者点赞。
关于srs的安装和使用可以直接看它在github上的wiki,这里不再赘述。需要注意的一点是该项目在centos 6.x 和ubunut12.x上能正常编译通过,但是在比如我使用的ubuntu14.04上会有一些依赖包的缺失。所以为了方便考虑的话,读者可以在centos和ubuntu12.x上进行test。

播放器

我们在试验的过程中,使用多种播放器和库在全平台实现了rtmp和hls的播放。在网页端使用了videojs,在安卓端使用vitamio。具体的实现请看我们的另外一篇如何在网页端和移动端播放rtmp和hls视频流

图片描述

总结

当然本文中的解决方案只是最简单的,对于直播服务器集群,直播间的创建和管理,直播间直播密码和权限,内容分发网络CDN都没有进行深入的研究。但是通过本实验性项目,我认为对于我们了解整个直播的业务流程还是很有帮助的。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搭建直播带货平台,实现直播间的即时聊天

如今直播火的简直不像样子了。在直播间里会有观众和主播交流的功能。主要方式是主播动口(说),观众动手(打字)。这篇文章讲解一下搭建直播带货平台聊天功能的实现。这里为了更清楚的看到效果功能,我做了一个…

内网直播(局域网直播)系统的搭建

搭建一套完全本地化部署的流媒体直播点播系统,引入本地演播室,录播,报告厅、会议,电视节目等实时信号,实现本地网络的手机、PC、机顶盒等智能终端进行观看。系统集成直播,点播,录制,…

直播平台搭建

一、直播系统架构介绍 1. 直播产品的种类: 泛娱乐直播 例如:花椒、映客等娱乐直播,斗鱼、熊猫等游戏直播实时互动直播 例如:音视频会议、教育直播等,像Zoom、声网 二、搭建流媒体服务 准备流媒体服务器&#xff0…

手把手教你直播平台怎么搭建

手把手教你直播平台怎么搭建 后端项目初始化 1.全局安装express脚手架 额,这个应该是属于准备工作的。给忘记了,那就凑合放在这里吧,别打我,我知道错了,但我就是不改【狗头保命】 cnpm install -g express-generat…

【AI】在线网站随机生成假头像、不同头像

搜集到的一些科技前沿有趣的网站。 目前能想到的用途是不侵犯他人肖像权的情况下做些假数据,展示性的数据。每次刷新ai都会随机生成一张头像。 真人头像,欧美偏多,亚洲面孔少:https://thispersondoesnotexist.com/ 二次元女生头…

Android:使用LayerDrawable动态生成四宫格头像(包含双人、三人头像)

其实用自定义View也可以实现,我比较懒,就用LayerDrawable来创建一个新的Drawable资源实现。 举例4宫格,9宫格原理类似,每个图标的位置需要用边距慢慢调成预期的效果 效果如下: 双人头像: 三人头像&#x…

深度分析:用户最喜欢用哪种NFT做头像

自 CryptoPunks 作为首支蓝筹 NFT 项目被人们关注以来,关于 NFT 可以做什么的讨论便一直没有停歇,各类 NFT 创新应用也是层出不穷。除了头像以外,收藏、艺术、游戏、社交、运动等领域都可以看到 NFT 的身影。不过无论是从项目数量还是应用广度…

一张图生成定制版二次元人脸头像,还能“模仿”你的表情

作者 | Pramook Khungurn 整理 | Jane、刘畅 出品 | AI科技大本营(ID:rgznai100) 【导读】最近,日本一位酷爱 Vtubers的粉丝结合了此前发表的多项 GAN 工作制作了两个动漫人物生成器的工具,这两个工具一个可以帮助广大…

个人头像人工智能生成工具,上线一天就已赚了1万美金

文章目录 仅上线一天就已赚1万美金是什么怎么赚钱启示附录 仅上线一天就已赚1万美金 作者刚刚在社交媒体上分享到: 是什么 个人自己头像人工智能生成工具。让在他的网站上传自己20张个人照片,脸部要清晰的更好(方便机器学习训练&#xff…

人类面部表情数据集(12万张表情照片)

人类面部表情数据集(12万张表情照片) 一共有7类人类面积表情,分别是:悲伤、高兴、害怕、惊讶、平静、生气、厌恶。一个文件夹一类。表情识别模型训练的很好数据。一共有7类人类表情数据集,文件夹如下图所示&#xff1…

聊天界面的制作(三)——表情列表发送功能

基本功能 1. 自定义标题栏。(标题栏不做任何功能) 2. 有左右发送按钮。(这个只能自己和自己聊天哦,所以有左右发送按钮) (1)点击左边按钮发送按钮,在ListView的左侧显示。   &…

FindMeChat(盲盒社交)-匿名聊天-好玩有趣的社交平台

FindmeChat(盲盒社交)APP 重磅来袭! 全新玩法,遨游陌生社交元宇宙。 无聊急救包!Findmechat(盲盒社交)! 官网: http://www.findmechat.comhttp://www.findmechat.com 聊天网址(用手机浏览器打开哦): http://www.findmechat.nethttp://www…

虚拟人,数字人,虚拟数字人的定义区别

虚拟人 虚拟人(Virtual Human),指通过数字技术模拟真实的人体器官而合成的三维模型。这种模型不仅具有人体外形以及肝脏、心脏、肾脏等各个器官的外貌,而且具备各器官的新陈代谢机能,能较为真实地显示出人体的正常生理…

AI 智能头像生成神器|PhotoShot

​ 题图:通过 PhotoShot 将普通图片生成智能头像 酱酱来为大家推荐好玩的开源软件啦 🥳!! 大家日常工作、生活中,经常会需要在一些网站、软件中自己的头像,但总会碰到一些问题,比如觉得照的不好…

借助免费AI艺术平台生成头像

随着 AI 的兴起,看到越来越多的实例通过 OpenAI 的举措变得轻松,使得 AI 艺术在今天早已不是什么新鲜事物,而且在游戏领域也开始有所应用。人工智能(AI,artificial intelligence)艺术,更准确地说…

【不存在的人】用Python获取生成随机头像,还不侵权

文章目录 ⛳️ 实战场景⛳️ 站点 1 实战编码⛳️ 站点 2 实战编码 ⛳️ 实战场景 在编写网站账号系统时,有时需要替新注册用户随机生成一个头像,有的站点使用色块拼接,有的网站使用随机汉字,今天我们使用一些随机头像站点&#…

征稿|IJCAI‘23大模型论坛,DeepMind EleutherAI Oxford主题报告

第一届LLMIJCAI’23 Symposium征稿中,优秀投稿论文推荐《AI Open》(EI检索)和 《JCST》(CCF-B)发表。 大规模语言模型(LLMs),如ChatGPT和GPT-4,以其在自然语言理解和生成方面的卓越能力&#xf…

计算机毕设Python+Vue学生社团管理(程序+LW+部署)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

如何做一个基于微信评选投票小程序系统毕业设计毕设作品

分析架构 我们开发系统,常规有两个架构,一个BS架构(浏览器/服务器模式),一个CS(客户端/服务器端模式);我们微信小程序项目属于CS架构,C客户端是我们要开发的小程序&…

计算机毕设Python+Vue学生实验报告管理系统(程序+LW+部署)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…