Kplayer官方介绍
kplayer
为你提供最小化成本搭建视频推流功能的工具,最优的推流方案OBS或其他软件依赖与xWindow
或图形化界面的需要,不适合在服务端与云服务器上进行部署。KPlayer
无需依赖图形化界面,您可以使用任意一款你喜欢的发行版本即可实现多视频资源无缝推流的方案。只需要定义您的配置文件,针对定制化的修改。即可达成想要的结果。并且可以24小时无人值守的方式运行它。
其优势:
- 支持多视频多平台推流
- 支持添加图片水印字幕文字等功能
- 内置视频缓存机制 对低配置机器比较友好
- 自带后台运行
- 免费开源
GitHub : 点击进入
官方文档 : 点击进入
无人直播前置需求
- 云服务器一台 或者24开机联网运行的本地电脑
ffmpeg
- 推流地址 (B站、抖音、斗鱼…)
- 准备好不涉及侵权的视频内容
开始上手
安装
Kplayer
1
curl -fsSL get.kplayer.net | bash
执行完成之后输出下载进程与完整的文件列表
1
2
3
4
5
6
7> 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该指令默认下载最新版本, 如果你想下载旧版本 可以使用以下指令:
1
w get http://download.bytelang.cn/kplayer-v0.5.6-linux_amd64.tar.gz
只需对版本号进行修改即可
修改配置文件
kplayer
安装完毕后 会有默认的配置文件kplayer/config.json
里面默认格式如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16{
"version": "2.0.0",
"resource": {
"lists": [
"/video/example_1.mp4",
"/video/example_2.mp4"
]
},
"output": {
"lists": [
{
"path": "rtmp://127.0.0.1:1935/push"
}
]
}
}resource->lists
中填写需要进行播放的视频output->lists
填写需要推流的平台 这里支持多平台推送由于我需要对视频进行循环播放 因此在配置文件中需要对此进行声明:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30{
"version": "2.0.0",
"resource": {
"lists": [
"/video/example_1.mp4",
"/video/example_2.mp4"
]
},
"output": {
"lists": [
{
"path": "rtmp://127.0.0.1:1935/push"
}
]
},
"play": {
"play_model": "loop",
"cache_on": true,
"encode": {
"video_width": 854,
"video_height": 480,
"video_fps": 25,
"audio_channel_layout": 3,
"audio_sample_rate": 44100,
"bit_rate": 0,
"avg_quality": 0
}
}
}参数解释:
play_model
: 设置播放模式 这里我选择loop
循环播放cache_on
: 是否开启缓存模式 开启后降低机器资源占用 提升推流性能encode
: 视频编码配置 比如帧率、码率、声音音质等等
运行
kplayer
开始推流1
./kplayer play start
将会看到以下输出信息并保持程序继续运行,即成功推流
1
2
3
4
5
6
7
8
9kplayer for golang v0.5.8 Copyright(c) 2019-2023 the ByteLang Studio (https://kplayer.bytelang.cn)
libkplayer version: v1.5.5 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.22.3) type with Release
Hope you have a good experience.
-------------------------------------------------------------------------------------------------------------------
INFO[2022-08-23 15:25:05] grpc server listening address=127.0.0.1 port=5157
INFO[2022-08-23 15:25:05] http server listening address=127.0.0.1 port=5156
INFO[2022-08-23 15:25:05] output add success效果测试
此时 我们能看到已经可以接收到直播内容了
后台运行kplayer
当我们退出终端时, 推流会被终端 为了确保24小时推流 我们需要将kplayer
放在后台运行
这里kplayer
已经给我们提供了后台运行的方式 只需加一个--daemon
参数即可:
1 | ./kplayer play start --daemon |
运行后将会输出成功日志:
1 | INFO[2022-08-23 00:47:26] kplayer start success on daemon mode |
当使用daemon
模式后,所有的日志输出将会重定向到log/kplayer.log
中,你可以查看这个文件来确定是否有异常情况发生
除了使用自带的方式之外 ,我们还可以使用第三方工具 比如nohup
、systemctl
、screen
、tmux
等
关闭KPlayer的运行
- 使用前台运行方式时,按下
Ctrl+c
结束运行 - 使用后台
Daemon
模式时,执行以下命令来结束KPlayer
的后台运行
1 | ./kplayer play stop |
使用相关问题
关于视频推流卡顿的问题
如果出现视频卡顿 在无法提升带宽的前提下 最有效的方法就是降低视频分辨率
比如将分辨率设置为854x480
超过这个分辩率的视频会进行压缩 低于这个分辩率的 按照原视频分辩率
由于大部分直播平台使用的是1920x1080
比例 所以如果视频需要铺满全屏的话需要按照这个比例等比进行放大或者缩小
关于视频推流kplayer报错checked play resource
当我们查看日志发现报错:level=info msg="checked play resource"
这种情况一般是视频本身的问题 可以考虑使用剪辑软件对视频重新进行编码导出
如果使用压缩工具 未必能解决问题 因为这个我已经试过了 没啥用👀
关于水印修改后不生效的问题
当我们修改水印文字之后会发现只有新增的视频有效 而旧视频依然还是原来的那个水印 这主要是缓存导致 只需要前往/kplayer/cache
目录清除相应的视频缓存即可
关于多个视频推流衔接处花屏的问题
这个是底层框架的问题 暂时无解 最好的办法就是用剪辑软件将多个视频合成一个视频
个人使用感受
相比ffmpeg
来说Kplayer
功能更加丰富 但性能和稳定性不如ffmpeg
视频卡顿频繁 也可能是我还没把Kplayer
摸索透
个人感觉FFmpeg
>>Kplayer>>Ant Media Server
相关文章
本文为作者原创 转载时请注明出处 谢谢