使用Docker安装kplayer实现无人直播

前言

之前文章给大家介绍了在ubuntu服务器上安装并使用kplayer, 详情参见《使用kplayer实现无人直播

今天给大家介绍kplayerdocker安装与使用, 其实大同小异 如果你平常用惯了docker 那么使用容器部署的方式会更加简单

无人直播前置需求

  • 云服务器一台 或者24开机联网运行的本地电脑
  • ffmpeg
  • 推流地址 (B站、抖音、斗鱼…)
  • 准备好不涉及侵权的视频内容

实现步骤

这边使用docker容器快速安装使用

  1. 搜索ant-media-server镜像

    1
    docker search kplayer
  2. 拉取ant-media-server镜像

    1
    docker pull bytelang/kplayer:latest
  3. 创建配置文件用于映射

    配置文件存放目录自定义 这里我放在/root/config/目录下 创建一个名为config.json的文件

    1
    touch config.json
  4. 定义推流配置信息

    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填写需要推流的平台 这里支持多平台同时推流
  5. 创建并运行容器 并配置映射端口

    1
    2
    3
    4
    5
    6
    7
    8
    docker 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
  1. 效果测试

    此时 我们能看到已经可以接收到直播内容了

    image-20240424133753485

点击进入直播间

注意事项

一般来说config.json配置文件应该和video目录放在同一个文件夹下, 如果Kplayer报错提示找不到配置文件路径 我们可以为Kplayer设置home目录:

1
./kplayer play start --home /root/living

动态配置参数

如果我们想在视频播放过程中动态添加一些视频或者增加推流地址等 可以使用以下方法

首先需要进入到kplayer容器中:

1
docker exec -it c_kplayer /bin/sh
  1. 动态增加推流地址

    1
    kplayer output add "rtmp://127.0.0.1/live/new"
  2. 动态增加视频

    1
    kplayer resource add "/home/user/video/xxx.mp4"
  3. 动态添加插件

    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属性是否填写正常的值 如果为空的话则会报错:

image-20240424105620385

关于水印修改后不生效的问题

当我们修改水印文字之后会发现只有新增的视频有效 而旧视频依然还是原来的那个水印 这主要是缓存导致 只需依次执行以下指令重启容器:

1
2
docker stop kplayer
docker start kplayer

或者前往/kplayer/cache目录清除相应的视频缓存即可

注意: 这个如果使用docker restart kplayer重启容器的话 缓存依然还在

相关文章

使用Ant Media实现无人直播

使用ffmpeg实现无人直播

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

0%