专栏/基于云服务器以及OSS存储打造属于自己的自动录播姬

基于云服务器以及OSS存储打造属于自己的自动录播姬

2022年02月13日 08:51--浏览 · --点赞 · --评论
粉丝:98文章:1

阅读前提示:

  • 如果您不是直播者,请在录播上传前征求直播相关人员的同意以及许可。需要注意的是,录播的原始版权应归直播者本人和(或)所属团体所有。

  • 本方案并不是免费的,需要购买相关服务(本文以阿里云为例,您可以选择使用其他提供方的相关等效服务)

  • 本文没有任何广告,您可以在任何一个符合要求的服务器或相关等效服务上按照本方案部署并实现最终目的。本文中所有实例均为演示所需,并不要求一定选择一致的提供商。

  • 本方案所录制的视频皆为flv格式,码率为直播者的原始推流码率,并不会进行二次压缩。按照本方案的建议所购买及使用的服务器的性能并不保证支持二次压缩以及其他额外业务。

  • 本方案并不支持自动上传。

  • 本方案可能需要一定计算机基础,可以在评论区留言期待别人的回复,也可以向作者私信提问或求助,但是作者并不保证及时回复,请善用浏览器

  • 本方案所有涉及到的金额均为参考价格,请以实际为准。

  • 本方案有可能需要一定的技术手段来保证您与您购买的个人服务器之间的网络。

  • 本方案仅供参考,您可以根据自己的需求进行修改。如果您提出任何质疑,那么您说的都对。

一、服务器的选择与搭建

(如果您的服务器满足相关条件,请直接转至第二部分,本部分只介绍如何选择与搭建服务器以及为服务器扩展足够的容量

a) 服务器的选择与购买

在开始前,您需要准备一台服务器,这台服务器需要满足下列条件:

  1. 一个稳定的网络连接以及充足的带宽以连接到B站的直播服务器。

  2. 充足的空间来存储录制的直播。当然,空间的大小由您来决定,通常来讲,一个1920x1080 50fps 5Mbps 3小时的录播大约会有6个G左右。

在本方案中,使用oss存储服务来存储录播,这样会比购买服务器时额外增加硬盘容量要便宜一些。

以阿里云为例(任意提供可以提供类似服务的提供商均可),首先您需要在阿里云的购买网站(https://common-buy.aliyun.com/)选择轻量应用服务器项目(https://www.aliyun.com/product/swas),在进入后选择购买进入明细页面或者向下浏览相关推荐。

由于相关政策原因,部署在中国内地的服务器均需要备案,所以一般情况下选择在香港或者新加坡的服务器。但是这也带来了一定的网络问题(尤其是现在阿里云并不能保证一定能裸连),所以如果在购买服务器后一定要先保证这台服务器的网络没有问题。如果有问题请询问客服(不要找我)或者立刻申请退款,阿里云的包月包年服务器在退款时会根据使用时间扣除一定量的费用再将剩余费用退回到原支付账户。

截止到本方案完成,阿里云的香港(新加坡)服务器最便宜的配置均为24元/月。

本方案所使用的服务器并不需要很强的性能,所以如果服务器是作为录播专用的话,选择这里(阿里云目前)最便宜的就好了。

这里我们以购买位于新加坡的服务器为例(香港卖完了QAQ,有香港选香港)

点击购买链接后跳转到对应的详情页面,实例类型选择服务器实例,地域和可用区选择亚太->新加坡(中国->中国(香港))镜像选择系统镜像->CentOS 7.6(别问为什么不是其他的,问就是习惯)


示例1

在接下来的套餐配置中,选择第一个最便宜的24元套餐(哪个都行,有钱请随意,作者是穷鬼)数据盘选择0GB(因为本方案中所有录播实质上是存储在阿里云的OSS存储服务中,此服务器只用来运行录播机,所以并不需要额外的数据盘。额外的100GB数据盘的价格约为76元/月,OSS存储100GB约为16元/月)购买时长建议先选1个月(反正长了也不打折。。。)购买数量一个。


示例2

确认无误后点击右下角立即购买即可,此时阿里云会自动跳转到登陆界面,在其他登陆界面中可以选择支付宝或者淘宝账号进行登录,自由选择即可。

在登陆后,阿里云有概率弹出要求您绑定邮箱的页面,您可以自由选择现在绑定或者下次再说。

此时您应该能看到订单确认页,一个典型的订单确认页可见下图:

典型的订单确认页

请再次确认配置详情, 确认无误后勾选服务协议即可进行支付。

猜你喜欢中的配置不是必须(或者说完全不必须),价格不菲,请您酌情选择。

支付完成后会进入支付完成页,如下图:

支付完成页

点击进入管理控制台,您会看到您购买的服务器实例。

服务器列表

点击服务器进入详情页,在页面左侧找到服务器运维->远程连接,点击第一个“使用浏览器发起安全连接(推荐)”下的远程连接按钮。


远程连接

点击后,在网页上会显示一个黑色背景的类似命令行的对话框。

命令行

如果您的对话框中一直显示 connecting,请耐心等待一分钟,如果超过一分钟依然是等待连接,请关闭对话框后尝试重新连接(如果您可以使用一些技术来保证您连接成功,请使用)。如果问题依然得不到解决,(如果您没有任何使用相关服务的经验)请立即转到阿里云用户中心进行退款(https://usercenter2.aliyun.com/refund)选择退订资源即可(如果是专业人士,可以使用救援连接进行连接并尝试自我解决)。同时,如果您依然坚持本方案,请使用其他提供商提供的类似服务,或者使用诸如树莓派等自组硬件。

b) 服务器的搭建与OSS存储的链接

在成功登录服务器后,我们需要对他进行简单的配置来满足我们的需求。还是在远程连接界面,找到“客户端使用账号密码进行连接”项,为root用户设置密码。

开启httpd服务

在命令行中使用如下命令

rpm -qa|grep httpd 以查看本机是否自带Apache http服务

如果有回显,则执行systemctl status httpd.service 查询此时服务的状态。

如果没有回显,则执行sudo yum install httpd 来安装相关服务后再执行systemctl status httpd.service 查询此时服务的状态。

查询到的状态如图:

httpd状态示例

如果您查询到的状态为dead,请执行systemctl start httpd.service,此时服务器会要求您输入密码, 完成后再次查询即可看到绿色的active标识。

此时您在浏览器中输入您的服务器的公网ip应该就可以显示如下界面:


Apache初始界面

此时您的服务器上就具有了基本的http功能。

OSS存储的购买与初始化

接下来需要购买OSS存储来作为录播的存储库。

在阿里云首页搜索对象存储OSS产品,到OSS专页(https://www.aliyun.com/product/oss),在折扣套餐中查找需要的包,如果您购买的是位于新加坡的服务器,一个可选的配置如下:

新加坡-OSS

您可以自由选择容量以及购买时长,请注意,如果您之前购买的是香港的服务器,在地域一项请选择香港。地域请与服务器地域保持一致。

购买后,您可以在工作台中“保有资源的云产品”中找到对象存储OSS,点击进入OSS管理控制台。如图所示:

OSS管理控制台

在左侧的Bucket列表中,选择创建Bucket。

创建Bucket

在这里需要注意的是, 地域、存储类型需要与您刚才购买的OSS存储包相同,如果您和我所购买的一致,则一个典型的配置如上图所示。同时,Bucket名字不能重复。

点击确定后,页面会自动跳转到这个Bucket的概述页面。在这里您应该能看到如下图所示的细节:

bucket概述

OSS存储与服务器的链接

首先您需要重新进入轻量应用服务器页面,打开远程连接,键入以下命令:

wget http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/32196/cn_zh/1463121229943/ossfs_1.79.8_centos7.0_x86_64.rpm

然后等待下载完成后再键入下列命令:

sudo yum localinstall ossfs_1.79.8_centos7.0_x86_64.rpm

在执行这条命令时,中途需要键入y以确认。

完成后您需要再次回转到OSS管理控制台,在右侧的“常用入口”中找到Access Key选项,点击进入。

这时您会看到一条安全提示,如下图所示:

AccessKey安全提示

请在阅读相关提示后,点击继续使用。

进入页面后,点击创建AccessKey并完成相关的身份验证后,会弹出一个包含ID以及Secret的对话框,如下图所示:


AccessKey

请您妥善保管。接下来转回远程连接,输入以下命令:

sudo su root

转换为root用户,然后输入

echo BucketName:AccessKey ID:AccessKey Secret > /etc/passwd-ossfs

chmod 640 /etc/passwd-ossfs

其中BucketName为之前您命名的Bucket的名字,AccessKey ID和AccessKey Secret为刚刚从OSS存储得到的。这三者之间用英文冒号分隔。在echo后,>前后有空格。

然后您可以输入

cd /var/www/html

mkdir bucket

/usr/local/bin/ossfs bucket-test-bucket-01 /var/www/html/bucket -ourl=oss-ap-southeast-1-internal.aliyuncs.com -o allow_other

在最后一条命令中bucket-test-bucket-01应为您自己的Bucket Name,oss-ap-southeast-1-internal.aliyuncs.com应为您自己的OSS中Bucket所对应的内网访问域名,如下图红线所示:

访问域名

这样,您购买的OSS存储空间就可以通过服务器访问了,同时你还可以在上图中左侧的“文件管理”中查看文件,并且需要注意的是,您应该关注您的OSS存储大小并时刻保证其在您购买的额度内,超出将导致额外的费用。

二、 录播机的使用

在本方案中使用的是《B站录播姬》的命令行版,您可以选择任何一个您认为可靠的,并且可以在Linux系统环境下使用的录播机。

关于B站录播姬,详细情况以及注意事项可以在B站录播姬的官方网址(https://rec.danmuji.org/)进行查看。

首先您依然需要登录到您的阿里云页面,使用远程连接连接到您的服务器。然后执行下列命令将B站录播姬命令行版的压缩包下载到服务器上:

wget https://github.com/Bililive/BililiveRecorder/releases/download/v1.3.11/BililiveRecorder-CLI-linux-x64.zip

然后使用下列命令解压

unzip BililiveRecorder-CLI-linux-x64.zip

如果其返回无法找到unzip命令,请使用 sudo yum install unzip 进行安装,期间需要键入y确认。

解压后您可以使用ls相关命令进行查看,目录下的linux-x64即为B站录播姬所在目录。

如果您不知道当前文件夹的绝对路径,请使用pwd命令查看,方便自己能够找到B站录播姬文件夹。如果您在本节是重新打开的远程连接,并且直接执行的所有命令,此时录播姬文件应该在/home/admin/linux-x64中。

接下来请使用cd /var/www/html/bucket转到存储空间中,为B站录播姬创建一个配置文件。

一个典型的config文件可以使用下图命令创建:

echo "{"version":2,"global":{},"rooms":[{"RoomId":{"HasValue":true,"Value":B站直播间号},"AutoRecord":{"HasValue":true,"Value":true},"RecordMode":{"HasValue":true,"Value":1}}]}" > config.json

其中B站直播间号应为您想要录制的直播间房号。

接下来,请你使用cd命令转回到包含有B站录播姬的文件夹中,如果您在之前和本方案保持一致,那么您应该使用cd /home/admin/linux-x64命令。

在转到目标文件夹后,您可以使用下列命令来启动录播机开始录制:

nohup ./BililiveRecorder.Cli run "/var/www/html/bucket" &

您可以使用 ps -aux|grep Bili来观察录播机是否正常运行,一般情况下回显应如图所示:

录播机回显

这样您就可以使用您的服务器/bucket来访问您的录播文件了。

三、一些基本易用性的改进

阅前须知:在这一节中,您需要使用到vi文本编辑工具,一些基本的操作也许需要您使用搜索引擎进行搜索,作者将尽量只使用最基本的操作。

  • 访问ip即可直接打开录播文件夹

    输入

    sudo vi /etc/httpd/conf/httpd.conf

    向下找到DocumentRoot "/var/www/html"项,按“i”进入“Insert”模式,修改为DocumentRoot "/var/www/html/bucket",按ESC退出“Insert”模式,按引号(:),输入wq保存并退出。

    接下来输入

    sudo vi /etc/httpd/conf.d/welcome.conf

    将所有行都注释调,即在每行前添加一个#,保存后退出。

    接下来输入

    systemctl restart httpd.service

    这也许需要您输入root密码

    这样您在浏览器的搜索框中直接输入您的ip就可以访问包含录播文件的文件夹了。

  • 正确显示中文以及自适应文件长度

    您可能已经注意到了文件名无法正确显示中文,以及无法显示完整的文件名

    输入sudo vi /etc/httpd/conf/httpd.conf

    随意一行添加下列命令

    IndexOptions Charset=UTF-8

    后,保存退出。

    随后使用 sudo vi /etc/httpd/conf.d/autoindex.conf

    找到 “IndexOptions FancyIndexing HTMLTable VersionSort”字段,修改为

    IndexOptions FancyIndexing HTMLTable VersionSort NameWidth=*

    之后使用

    systemctl restart httpd.service

    对服务进行重启即可。

到此为止,您应该能够录制并保存相当量的录播了,期待未来在B站中看到您精彩的切片。

当然,如果对本方案中一些细节抱有疑问,请您善用搜索引擎,您也可以选择私信或评论,但不保证您的请求会得到及时的处理。

最后,请注意各种服务的有效期以及用量问题,避免产生额外的费用,对费用有疑问请咨询服务提供方。

愿您在B站能够收获属于自己的快乐。



投诉或建议