转载请标明出处,谢谢!

引子·背景

前几天为了给QQ频道引流,增加些热度,想到在QQ频道里面直播一些视频,但是经费有限,只能买一个1h2g的低配机中的战斗机,安装的Ubuntu Server 20.04,已经实际应用,使用360P的窄带高清流,服务器是腾讯云的轻量应用服务器嫖来的30块钱一年的。

但是,若是使用OBS推流,服务器吃不消,且OBS最低输出画质为720P,一个月的500G流量实在是供不起,故另寻无GUI的推流器。

所以,很多人有以下需求:

  • 稳定无人直播推流。
  • 推流服务器配置低,但能稳定推流。
  • 不需GUI耗费大量服务器性能。
  • 若性能足够,希望多路推流。

于是在这个需求下今天写一篇笔记记录利用GitHub上的kplayer项目进行QQ频道无人直播的过程。

准备

开始

安装Linux管理面板

去阿里云管理台,待机器安装好系统并开机后,先去设置root密码。位置在打开服务器管理台后的“服务器信息”栏最右侧有一个“重置密码”,就是它。

其实2h2g配置安装一个Ubuntu Desktop也可以,但是太吃性能了所以没安装图形界面。如果你需要高性能机器进行多路推流可以参考百度为Ubuntu Server安装图形界面+VNC,更便于管理

然后下面是Ubuntu的宝塔安装脚本,其他服务器请到官网自行复制。

wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec

复制好后,进入阿里云后台,点击右上角“远程连接”=》“Workbench root用户连接”(SSH),输入密码连接。

在打开的终端中粘贴刚刚复制到安装脚本,是否安装输入 y,配置SSL选 n。等待宝塔安装完成。

请注意:尽量使用新机器,不使用新机器也可以,但是机器上不要有LNMP or LAMP,否则宝塔面板可能会出现安装错误

安装完成后请记下面板地址,访问端口以及用户名密码。

请注意:若无法访问面板,请检查防火墙/安全组是否有放行面板端口。

在阿里云后台左侧“安全”=》“防火墙”,添加规则,“自定义,TCP,目标端口,0.0.0.0/0,无”。

绑定好宝塔账号以后请不要安装LNMP/LAMP环境,对我们没用咱不安装。

可以按需在宝塔的软件商店里安装FTP软件,按需自行下载。

安装 KPlayer

安装 KPlayer部分大部分参考摘抄了KPlayer官方文档

满足先决条件

回到刚刚打开的Workbench root用户连接页面(SSH)

1.确保执行以下命令输出的结果相同

uname
> Linux

2.确保执行以下命令输出的结果为 x86_64aarch64

uname -m
> x86_64
下载安装

找到合适的目录并运行以下的命令进行下载

curl -fsSL get.kplayer.net | bash

执行完成之后会输出下载进程与完整的文件列表

> curl -fsSL get.kplayer.net | bash
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 24.4M  100 24.4M    0     0  7377k      0  0:00:03  0:00:03 --:--:-- 7379k
kplayer/
kplayer/kplayer
kplayer/config.json.example
完成下载

如果你成功的完成的上述的步骤,至此 KPlayer已安装到你的服务器中。

执行 cd kplayer进入到kplayer文件夹中查看文件列表 ls -lh将会看到所有文件的输出

-rw-r--r-- 1 root root 285 3月  23 18:23 config.json.example
-rwxr-xr-x 1 root root 27M 7月  29 11:12 kplayer
查看当前版本号

对已下载的 KPlayer查看当前版本号,运行以下命令。查看主版本号

./kplayer
kplayer for golang v0.5.7 Copyright(c) 2019-2022 the ByteLang Studio (https://kplayer.bytelang.cn)
  libkplayer version: v1.5.2 plugin version: 1.5.1 license version: v1 
  toolchains GNU(10.3.1) C++ Standard 17 on Linux-x86_64-5.18.14-arch1-1
  build with build-chains cmake(3.21.3) type with Release
  Hope you have a good experience.
-------------------------------------------------------------------------------------------------------------------
Usage:
  kplayer [command]

Available Commands:
  completion  Generate the autocompletion script for the specified shell
  help        Help about any command
  init        Init config file
  output      Output category
  play        Play category
  plugin      Plugin category
  resource    Resource category

Flags:
  -c, --config string      config file name (default "config")
  -h, --help               help for kplayer
      --home string        directory for config and data (default "./")
      --log_level string   The logging level (trace|debug|info|warn|error|fatal|panic) (default "info")
      --plain string       The logging format (json|plain) (default "plain")

Use "kplayer [command] --help" for more information about a command.
root@iZt4ni3oqmenvrjzm8tiukZ:~/kplayer# 

进行配置

此部分关于 KPlayer部分参考了KPlayer官方文档

打开宝塔面板,进入“文件”,进入 /root/kplayer(根目录=》root=》kplayer),新建目录,命名为 video(非强制,如果你不知道在干什么,直接无脑照做就好),进入video文件夹,上传你准备要推流的视频文件。PS:尽量使用英文或者数字命名视频文件,尽量不要出现中文字符以免出现一些不必要的麻烦。

上传完视频之后我们回到刚刚的 kplayer目录,下载文件 config.json.example到本地,并使用记事本打开编辑。该文件看起来是这样子的:

{
    "version": "2.0.0",
    "resource": {
        "lists": [
            "/video/example_1.mp4",
            "/video/example_2.mp4"
        ]
    },
    "output": {
        "lists": [
            {
                "path": "rtmp://127.0.0.1:1935/push"
            }
        ]
    }
}

最简单地:lists字段填写视频地址,自行修改;如若你前面完全照做,你的路径为 /root/kplayer/video。请注意:视频后缀名称应正确。path字段填写推流地址,如若有推流码,将上图中推流地址后面加上 / 再加上你的推流码,然后填到文件中即可。

其他参数请参照KPlayer官方文档进行配置

保存文件并命名为 config.json,并上传到 kplayer目录中。

请注意: KPlayer默认的配置文件名称为 config.json优先在 homedir目录中查找该配置文件。(homedir 请参考这里

如果你使用yaml格式来作为配置文件,那么请将json后缀的文件修改为yaml。

如果完成上述步骤,那么我们可以进行一个最基本的推流开播了。

运行

运行KPlayer以开始推流

开始推流的命令:

./kplayer play start

看到类似与下面的信息即推流成功:

INFO[2023-01-12 17:16:20] core shut down success           
root@iZt4ni3oqmenvrjzm8tiukZ:~/kplayer# ./kplayer play start
kplayer for golang v0.5.7 Copyright(c) 2019-2022 the ByteLang Studio (https://kplayer.bytelang.cn)
  libkplayer version: v1.5.2 plugin version: 1.5.1 license version: v1 
  toolchains GNU(10.3.1) C++ Standard 17 on Linux-x86_64-5.18.14-arch1-1
  build with build-chains cmake(3.21.3) type with Release
  Hope you have a good experience.
-------------------------------------------------------------------------------------------------------------------
INFO[2023-01-12 17:17:44] grpc server listening                         address=127.0.0.1 port=4155
INFO[2023-01-12 17:17:44] http server listening                         address=127.0.0.1 port=4156
INFO[2023-01-12 17:17:44] core start up success            
INFO[2023-01-12 17:17:44] kplayer start success            
INFO[2023-01-12 17:17:44] output add success                            path="rtmp://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" unique=uamiIn
INFO[2023-01-12 17:17:44] checked play resource                         duration=198 end=-1 path=/root/kplayer/video/test.mp4 seek=0 type=resource_input_type_single unique=BrIZve
INFO[2023-01-12 17:21:03] finish play resource                          path=/root/kplayer/video/test.mp4 unique=BrIZve

如果明明显示成功,但是没有收到推流,请检查信息中的端口有没有在防火墙处开放。

关闭KPlayer的运行以停止推流
  1. 使用前台运行方式时,按下 Ctrl+c结束运行
  2. 使用后台 Daemon模式时,执行以下命令来结束 KPlayer 的后台运行
./kplayer play stop

大功告成

如果觉得我的文章对你有用,请随意赞赏