前言
之前文章给大家介绍了在ubuntu
服务器上安装并使用kplayer
, 详情参见《使用kplayer实现无人直播》
今天给大家介绍kplayer
的docker
安装与使用, 其实大同小异 如果你平常用惯了docker
那么使用容器部署的方式会更加简单
无人直播前置需求
- 云服务器一台 或者24开机联网运行的本地电脑
ffmpeg
- 推流地址 (B站、抖音、斗鱼…)
- 准备好不涉及侵权的视频内容
实现步骤
这边使用docker
容器快速安装使用
搜索
ant-media-server
镜像1
docker search kplayer
拉取
ant-media-server
镜像1
docker pull bytelang/kplayer:latest
创建配置文件用于映射
配置文件存放目录自定义 这里我放在
/root/config/
目录下 创建一个名为config.json
的文件1
touch config.json
定义推流配置信息
在
config.json
配置文件中设置推流信息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
: 视频编码配置 比如帧率、码率、声音音质等等resource->lists
中填写需要进行播放的视频output->lists
填写需要推流的平台 这里支持多平台同时推流
创建并运行容器 并配置映射端口
1
2
3
4
5
6
7
8docker run -id \
-v /root/living/video:/video \
-v /root/living/config.json:/kplayer/config.json \
-v /root/living/cache:/kplayer/cache \
-v /root/living/log:/kplayer/log \
--name=c_kplayer \
-h c_kplayer \
bytelang/kplayer:latest
效果测试
此时 我们能看到已经可以接收到直播内容了
注意事项
一般来说config.json
配置文件应该和video
目录放在同一个文件夹下, 如果Kplayer
报错提示找不到配置文件路径 我们可以为Kplayer
设置home
目录:
1 | ./kplayer play start --home /root/living |
动态配置参数
如果我们想在视频播放过程中动态添加一些视频或者增加推流地址等 可以使用以下方法
首先需要进入到kplayer
容器中:
1 | docker exec -it c_kplayer /bin/sh |
动态增加推流地址
1
kplayer output add "rtmp://127.0.0.1/live/new"
动态增加视频
1
kplayer resource add "/home/user/video/xxx.mp4"
动态添加插件
1
kplayer plugin add show-text mytext --param "fontsize=60" --param "text=newban.cn"
相关问题
关于容器启动失败
如果你在使用过程中 出现启动kplayer
容器后 不一会儿就自动停止了 然后使用docker logs
查看日志报如下错误:
1 | level=error msg="core return error" code=-22 error="filter cannot loaded. filter name: drawtext. error: Invalid argument [-22]. file: codec/KPFilter.cpp. line: 201 |
这种情况 基本是出现在show-text
插件上, 检查一下text
属性是否填写正常的值 如果为空的话则会报错:
关于水印修改后不生效的问题
当我们修改水印文字之后会发现只有新增的视频有效 而旧视频依然还是原来的那个水印 这主要是缓存导致 只需依次执行以下指令重启容器:
1 | docker stop kplayer |
或者前往/kplayer/cache
目录清除相应的视频缓存即可
注意: 这个如果使用docker restart kplayer
重启容器的话 缓存依然还在
相关文章
本文为作者原创 转载时请注明出处 谢谢