写点什么

使用京东云搭建视频直播网站

  • 2019-10-18
  • 本文字数:3631 字

    阅读完需:约 12 分钟

使用京东云搭建视频直播网站

视频直播是指利用互联网及流媒体技术进行直播,视频因融合了图像、文字、声音等丰富元素,声形并茂,效果极佳,逐渐成为互联网的主流表达方式。视频通过真实、生动的传播,营造出强烈的现场感,吸引眼球,达成印象深刻、记忆持久的传播效果,能够真实、直观、全面的宣传、展示自己。比较热的视频直播网站有花椒、斗鱼、虎牙、六间房等。


视频直播网站建设分为域名的注册、服务器的准备、视频资源的准备和网站的搭建几个部分,本文将以京东云的产品和服务为基础,进行视频直播网站的搭建,为小型企业或个人用户提供帮助。

一、注册域名

1、域名购买

具体注册流程可以查看京东云官网。


如果注册的是.cn 等国内域名,注册成功后还需要提交与域名注册信息相同的资料,进行实名制认证,成功后域名才能正常使用;如果在注册过程中,选择已实名认证的信息模板,则可以省略此步骤。

2、域名备案

网站备案是指向主管机关报告事由存案以备查考。行政法角度看备案,实践中主要是《立法法》和《法规规章备案条例》的规定。网站备案的目的就是为了防止在网上从事非法的网站经营活动,打击不良互联网信息的传播,如果网站不备案将会被拦截。


备案是域名指向国内 IP 时,在服务器提供商处的备案系统提交备案申请。如您购买了京东云服务器(有效期必须为 3 个月以上的包年/包月类型),且域名有使用备案的需求,即可按照如下图示操作:



备案详细流程请见京东云帮助文档

3、域名解析

初期网站小,内容较少,可以使用京东云云解析免费版,后期随着网站的扩容再根据情况选择企业版或企业高级版。详细操作流程见京东云帮助文档

二、准备服务器

域名注册后,则需要购买云上资源,根据网站规模选择购买云上资源,云上资源涉及到云主机、云存储(云硬盘、对象存储)和公网 IP&带宽,京东云按需配置云主机的操作系统、CPU、内存、硬盘及网络带宽,快速创建和释放,合理分配资源,并可根据需求进行横向和纵向的伸缩,避免资源浪费,初期可以先购买较低配置,后续根据业务需要再进行扩容。


本文使用 centos 服务器作为网站服务系统,创建 linux 实例详见京东云帮助文档

三、使用京东视频云完成直播源站配置

1、开通视频直播服务

打开京东云官网,进入产品-视频直播,点击开通服务,按指引开通视频直播服务。

2、配置推拉流域名

服务开通后,登录视频直播客户控制台,通过左侧菜单栏找到“视频服务”,点击“视频直播”子菜单,进入“域名管理”页面,点击“添加域名”,如下图:



推流域名:您申请并完成备案用作推流使用的合法域名


播放域名:您申请并完成备案用作播放使用的合法域名


注:推流和播放域名不能为同一个,域名必须完成备案真实有效


域名配置后,待审核完毕进入域名管理,点击管理,可查看推流和播放信息:




其中 AppName、StreamName 均为自定义,鉴权信息可暂不配置。

3、开始推流

京东云提供推流 SDK 能够帮助开发者快速实现稳定的视频直播采集和推流功能,实际推流时可以用用 SDK 开发移动端推流工具,或者使用桌面端的 OBS、FMLE、Xsplit 等工具进行推流,本文将使用京东云 SDK demo 进行推流测试,之后正式使用 OBS 进行推流。


使用京东云 demo 进行推流测试


进行推流配置,推流地址按《配置推拉流域名》章节中配置的推流域名,APPname 我们命名为 live,流名称命名为 livestream,如下图:



点击“开始直播”,点击“开始推流”,如下图:



进入视频直播控制台,在“流管理”中可以看到已经开始推流



使用 OBS 进行推流


OBS Studio 是一款视频直播录制软件,为用户提供了视频、文本、图像等的捕获录制功能。OBS Studio 界面简洁,功能强大,不仅录制质量好占用资源小而且还是免费的,是一款常用的直播推流工具。


访问OBS官网,下载安装,安装完毕后,进入设置界面,点击推流,服务器配置为推流地址,串流密钥为流名。



回到主页面,在来源处,进行推流内容配置,可配置桌面、摄像头、媒体源等,本处以媒体源为例,添加媒体源后选定本地媒体文件:




点击右侧开始推流按钮,开始推流:



开始推流后,进入控制台可以看到流名为 test1 的地址开始推流:


4、播放测试

本文使用开源 VLC 播放器进行播放测试。VLC 是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。


在控制台,流管理中,点击推流中的流名后面的“直播地址”:



复制其中一个地址,打开 VLC 播放器,点击媒体-打开网络串流,




左侧为播放画面,右侧为推流画面(播放画面比推流画面滞后)。

四、网站搭建

网站需要 web 服务器来架构,网页设计美工人员(使用 flash、dreamweaver、firework、photoshop 等设计工具),网页开发人员(使用 ASP、JavaScript、PHP、HTML、ASPX&.net 等语言)。本文使用 Apache 进行网站搭建,不包括 html 开发。


Apache HTTP Server(简称 Apache)是 Apache 软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的 Web 服务器端软件之一。它快速、可靠并且可通过简单的 API 扩展,将 Perl/Python 等解释器编译到服务器中。


Apache HTTP 服务器是一个模块化的服务器,源于 NCSAhttpd 服务器,经过多次修改,成为世界使用排名第一的 Web 服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。

1、服务搭建

云主机购买后,我们使用 SSH 工具连接主机,进行配置,本文使用 putty 工具进行介绍(putty 是一个开源的 Telnet、SSH、rlogin、纯 TCP 以及串行接口连接软件)。


登录京东云控制台,选择弹性计算-云主机-实例,可看到购买的主机实例:



打开 putty 进行连接:



使用 root 账户登录



使用 yum 包安装 Apache 软件


# yum -y install httpd* -安装Apache软件 # rpm -qa | grep httpd --查看安装的http包
复制代码



显示如上图,安装成功。


安装成功后,会产生下面两个文件


/etc/httpd/conf/httpd.conf # 主配置文件 /var/www/html # 网站根目录
复制代码


配置 Apache 服务开机启动:


# systemctl enable httpd
复制代码



启动 Apache 服务:


# systemctl start httpd --启动httpd服务 # lsof -i:80 --查看httpd服务是否启动
复制代码



如上图则表示服务启动成功。


打开浏览器,输入云主机公网 IP,显示下图:


2、网站内容建设

本文使用 HTML 搭建一个简单的网页结构。


HTML 由 N 个标签(节点、元素、标记)组成


HTML 语法非常松散


常见的 HTML 标签


标题:h1,h2,h3,h4,h5…


段落:p


换行:br


容器:div,span(用来容纳其他标签)


表格:table,tr,td


列表:ul,ol,li


图片:img


表单:input


链接:a


一个最简单 html 页面代码如下:


1<!DOCTYPE html> 2<html> 3    <head> 4        <title>这是个标题</title> 5    </head> 6    <body> 7        <h1>一个简单的网页</h1> 8        <p>Hello World!</p> 9    </body>10</html>
复制代码


我们使用 vediojs 进行网页上的视频播放,Video.js 是一个通用的在网页上嵌入视频播放器的 JS 库,Video.js 自动检测浏览器对 HTML5 的支持情况,如果不支持 HTML5 则自动使用 Flash 播放器。


我们做一点简单的内容填充、格式布置,将播放地址嵌入,代码中为封面图片,大家可以将自己喜欢的图片上传到京东云 OSS,获取外部访问链接。调整后全部代码如下:


1<html>   2  <head>   3  <title>直播网</title>   4  <meta charset="utf-8">   5  <link href="http://vjs.zencdn.net/5.5.3/video-js.css" rel="stylesheet">  6 </head>   7<body>   8 <center><h1>视频直播网(示例)</h1></center> 9    <center><h2>Powered by JDcloud</h2></center>10    <center>11 <video id="my-video" class="video-js" controls preload="auto" width="640" height="300"  12 poster="https://vvv-test.s3.cn-east-1.jdcloud-oss.com/jdcloud.jpg" data-setup="{}">  13    <source src="rtmp://vpull.jdpoc.com/live/test1" type="rtmp/flv">  14    <!-- <source src="http://vpull.jdpoc.com/live/livestream.m3u8" type='application/x-mpegURL'> -->  15    <p class="vjs-no-js">  16      To view this video please enable JavaScript, and consider upgrading to a web browser that  17      <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a>  18    </p>  19 </video>  20 <script src="http://vjs.zencdn.net/5.5.3/video.js"></script>  21</body>  22</html> 23<center>
复制代码


将该文件保存为


index.html
复制代码

3、上传网页文件至云服务器

我们使用 putty 官方提供的 PSCP 来上传文件。打开 putty 安装目录,查看是否有 PSCP:



如果没有可以去官网下载。


我们以广泛使用的 windows 系统系统为例,进行网页文件上传。打开 cmd,使用 cd 命令行访问到 putty 安装目录:



把本地文件上传到 LINUX 服务器的目录中。


命令格式:pscp 文件 用户名 @LINUXIP:目录



输入密码后,显示如上图则复制成功。

4、网站展示

打开浏览器,输入云主机公网 IP,网站显示如下:



在没有推流时,显示静态图片,推流时显示视频画面。至此,一个基本的视频直播网站的全部前后台系统已经搭建完毕。


2019-10-18 13:201653

评论

发布
暂无评论
发现更多内容

LeetCode题解:80. 删除有序数组中的重复项 II,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

融云CTO杨攀:把握核心技术,促进产学研用融合发展

融云 RongCloud

【LeetCode】从上到下打印二叉树Java题解

Albert

算法 LeetCode 8月日更

端口占用解决方案

一个大红包

8月日更

写作 7 堂课——【6. 清单式写作】

LeifChen

清单 写作技巧 8月日更 检查清单

MinIO Client 使用(一)

耳东@Erdong

Minio 8月日更 mc minio client

【Flutter 专题】70 图解自定义 ACEStepper 步进器

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

Linux之netstat命令

入门小站

Linux

命令行操作Java程序的那些事~

Bob

Java 命令行 8月日更

【前端 · 面试 】HTTP 总结(十一)—— HTTPS 概述

编程三昧

面试 https 8月日更

Ipfs靠谱吗?ipfs中国授权公司都有哪些?

分布式存储 区块链+ IPFS fil

【设计模式】代理模式

Andy阿辉

C# 后端 设计模式 8月日更

失败的小项目-外卖cps

箭上有毒

8月日更

一文带你了解 TreeMap ,LinkedHashMap 的主要特点

4ye

Java 后端 hashmap LinkedHashMap 8月日更

仿imtoken钱包源码,TP钱包源码开发

从安卓转到Java开发,我吃透了这份pdf,终于4面拿下美团offer

Java~~~

Java spring 面试 微服务 JVM

MySQL知识点整理

一个大红包

8月日更

Web 框架 Gin | Gin 介绍

xcbeyond

Go 语言 gin 8月日更

Android开发:引入重复包报错Error:Execution failed for task ‘:app:transform...’解决方法

三掌柜

8月日更 8月

JavaScript Array 方法详解

程序员海军

JavaScript 方法 大前端 array 引航计划

Android开发:获取安卓App版本号的方法步骤

三掌柜

8月日更

oeasy教您玩转vim - 14 - # 行头行尾

o

netty系列之:自动重连

程序那些事

Java Netty 程序那些事 响应式系统

异步编程的终极解决方案 async/await:用同步的方式去写异步代码

前端依依

大前端 js 经验分享 异步 知识讲解

数据缓存历险记(五)--LRU缓存算法的最终篇

卢卡多多

缓存 LRU Redis 协议 8月日更

全球增长最快的对象存储开源系统MinIO

liuzhen007

8月日更

如果面试官问你 JVM,额外回答逃逸分析技术会让你加分!

陈皮的JavaLib

Java 面试 JVM 逃逸分析 8月日更

在线年龄计算器

入门小站

工具

Django 做个小后台,细节在完善一点点,滚雪球学 Python 第三阶段

梦想橡皮擦

8月日更

Rust从0到1-模式-相关语法

rust 语法 模式 Patterns Syntax

LeetCode题解:781. 森林中的兔子,贪心,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

使用京东云搭建视频直播网站_架构_吴世超_InfoQ精选文章