修改AK的搭建24小时直播间代码,解决直播间切换视频卡顿问题
已经有很多小伙伴在后台问我相关的问题了。因为有一些小伙伴没有编程的基础,所以询问我的时候非常耗时。对我这边来说也造成了不小的困扰。所以统一在这个文章当中说明一下。另外,真的一点点变成基础都没有的同学。你也可以完全按照ak的代码来,他的代码唯一的问题就是切换视频的时候B站会卡顿,在后台挂机听直播的观众,会受到影响。除此之外,没有其他问题。
在文章开始之前,请一定要详细的观看下ak的视频教学。一些基础的概念,ak已经讲的很好了。我没有必要再科普一次。

如果你既不会用本地电脑做服务器,又完全不知道购买腾讯云服务器的作用或者意义,请再看一遍ak的视频。
在购买好,服务器之后,需要密码登录。安装ffmpeg的时候,有可能会需要管理员权限。需要输入管理员密码。因为输入法的问题,有朋友跟我反馈说,密码输入一直错误。大家在登陆的时候选择账号密码登录即可。可以消除密码错误的问题。


登录之后,就进入了控制台。这个时候的步骤和ak的是相同的。先创建对应的目录。并且进入对应的目录。然后和ak一样,安装screen。


接下来的步骤和ak的步骤一样。复制黏贴lala提供的代码,安装最基本的底层运行库。模式选择1,输入yes,表示自己没有安装过ffmpeg。接下来就等待这些运行库安装完成即可。

如果安装的时候,出现Permission denied,说明你没有进入管理员权限。请把之前文章的登录步骤再看一遍。

当安装完成ffmpeg库后,可以在命令行当中输入ffmpeg -help。如果出现一大坨东西,就代表安装ffmpeg成功了。

如果ffmpeg安装有问题,可以在控制台当中,选择重装系统。一切从头开始。

从这个步骤之后,lala的代码对我而言就没有任何意义了。这个时候就需要上传文件了。如果你和我一样,比较喜欢图形化的软件。我这边推荐的上传工具是FileZilla。这是免费软件,mac和windows都有,大家下载安装之后,先点击左上角的新建链接按钮。

点击新站点,然后填入服务器的信息。
协议选择sftp,主机填入你的服务器的公网ip地址,端口号一定要置空!
用户名选择root,密码填入你的root密码。点击链接即可。

这个时候画面的右侧就可以看到你的服务器文件夹结构了。你可以很轻松的在filezilla那边删除,上传文件。新建文件夹。删除文件夹。我个人建议在home文件夹下,新建一个video文件夹。直接把需要播放的文件夹拖放到右边的文件区域,就可以直接上传文件了。非常方便。请注意,上传的视频文件文件名,不能带中文,不能带空格。并且所有的视频,都要使用统一码率,推荐使用1080p清晰度,帧数30帧。如果视频彼此之间有偏差,有可能在直播的过程中,出现音画不一致的情况。

这个时候,我们需要手写一份播放列表。这个步骤是之前ak没有的。但是很简单,新建一个名叫playlist.txt的文本文件。内部内容格式如下。

因为我只有12个文件可以播放。所以,为了达成24小时不停直播的效果。你可以把你的播放列表复制几百次。已达成不停播放的效果。这么做的意义是,只调用一次代码,就达成播放上千个视频文件的目的,不会再造成卡顿问题。
编写完成之后,把这个文件上传到你方便管理的地方即可。比如我的播放列表被保存在了/home/lighthouse/文件夹下。
所有文件准备就绪后。在控制台当中新建一个srceen。比如,我这边命名新的screen叫loop。就输入代码screen -S loop。
接下来就可以启动直播了。在B站网页当中,设置好房间标题,分区。点击开始直播。
在腾讯云中,启动直播推流只需要一行代码即可。
ffmpeg -f concat -safe 0 -re -i "XXXX" -preset ultrafast -vcodec libx264 -g 60 -b:v 2500k -c:a aac -b:a 128k -strict -2 -f flv "YYYY"
其中XXX表示你的播放列表文件的地址,比如在我这个示例当中是/home/lighthouse/playlist.txt
YYY表示你的B站直播间的服务器地址+串流密钥。服务器地址和串流密钥之间不能有空格。

在代码当中,我推流使用的码率是2500k,ak推荐的是1500k,大家根据自己直播间的属性和购买的流量,自行更改。
推流所使用的背景音乐,我这边选择的是128k。这个大家也可以根据实际情况进行调整。
这个时候你的B站直播间就应该有画面了。会显示当前直播的一些基础信息。
此时,你可以把这一串代码记在笔记本里,以后还会用到。

如果一切没问题,就可以把直播所使用的screen进程放到后台了。
我们点击控制台旁边的加号,新建一个控制台。

在新建的控制台当中,输入screen -ls。这个命令,可以查看目前所有正在运行screen进程。记住目前正在使用的进程,完整的名字。通过screen -d 完整进程名。就可以让推流代码在后台运行。直接关机睡大觉就可以了。

如果,想要在直播间添加新的素材,或者直播间素材报错了怎么办呢?
首先第一步,依然是通过filezilla,上传正确的视频文件和playlist.txt文件。
然后要做的就是唤醒原来的进程。如果你还记得原来screen进程的完整名字,那自然更好。记不住就通过screen -ls。进行查询。最后通过screen -r 完整进程名唤醒。

唤醒原有进程后。直接按ctrl+c。就可以终止播放推流了。
此时你的B站直播间是黑屏的。只要黑屏不超过一定的时间,你直播间原有的服务器地址,还有串流秘钥都是有效的。把你之前保存的这条命令,重新贴上去,再运行,就可以重新开启直播了。确保直播间没有问题后,通过screen,把进程放入后台即可。
如果还有问题,请在这条专栏下评论。