Docker部署KPlayer,实现24小时无人直播(B站、斗鱼、虎牙等)

文章已同步至【个人博客】,欢迎访问【我的主页】😃

文章地址:blog.fanjunyang.zone/archives/do...

前言

最近有服务器资源闲置起来了,感觉很浪费,想把它利用起来,而且自己收藏的"电影"🎞等资源也比较多(小心侵权),所以准备搞个直播玩一玩。

准备直接用服务器进行直播推流,这样能保证24小时无人直播(真人24小时直播那不得累死)。

可以点击链接去到我的直播间🎥🔞,欢迎大家光临🍿😏

目前网上直播推流的工具也有很多,对比了一下,最终选择了 KPlayer ,因为搭建和使用起来非常简单,而且文档也比较齐全。

准备工作

推荐用 Docker 的方式进行搭建,优点就不说了,可自行了解,如果不用 Docker 的话,可直接参考 KPlayer 文档进行搭建。

  1. 服务器,国内、国外服务器均可
  2. 服务器需安装docker、docker-compose环境,没安装的可参考文章 - docker、docker-compose安装
  3. GitHub地址:github.com/bytelang/kp...
  4. Docker镜像地址:hub.docker.com/r/bytelang/...
  5. KPlayer文档:docs.kplayer.net
  6. B站、斗鱼、虎牙等直播平台账号

搭建方式

创建目录

ruby 复制代码
// 存放视频文件
mkdir -p /root/docker_data/kplayer/mp4

// 存放播放时的缓存数据
mkdir -p /root/docker_data/kplayer/cache

cd /root/docker_data/kplayer

上传视频

把你想要直播的视频上传到 /root/docker_data/kplayer/mp4 文件夹下面

获取直播推流地址

这边以 B站 为例,其他平台大同小异

进入【B站】 -> 点击【直播】 -> 点击【开播设置】 -> 选择分类,点击【开始直播】(需要实名身份证认证) -> 获取【服务器地址】和【串流密钥】

【服务器地址】+【串流密钥】就是推流的地址,格式:rtmp://live-push.bilivideo.com/live-bvc/?streamname=live_******_******&key=**************&schedule=rtmp&pflag=1

创建文件

/root/docker_data/kplayer 文件夹下面新建KPlayer配置 config.json 文件如下:

json 复制代码
{
  "version": "2.0.0",
  "resource": {
    // 容器中存放视频的文件夹,可根据 docker-compose.yml 中的配置进行修改
    "lists": ["/video"],
    "extensions": []
  },
  "output": {
    "lists": [
      {
        // 推流地址
        "path": "rtmp://live-push.bilivideo.com/live-bvc/?streamname=live_******_******&key=**************&schedule=rtmp&pflag=1"
      }
    ],
    "reconnect_internal": 5
  },
  "play": {
    "fill_strategy": "ratio",
    "skip_invalid_resource": true,
    // 启用推流编码缓存,会生成缓存,命中缓存节约CPU资源
    "cache_on": true,
    // 播放模式,目前为按顺序播放,其他参数请参考KPlayer文档
    "play_model": "list"
  }
}

/root/docker_data/kplayer 文件夹下面新建 docker-compose.yml 文件如下:

vbnet 复制代码
version: "3.3"
services:
  kplayer:
    container_name: kplayer
    volumes:
      - "/root/docker_data/kplayer/mp4:/video"
      - "/root/docker_data/kplayer/config.json:/kplayer/config.json"
      - "/root/docker_data/kplayer/cache:/kplayer/cache"
    restart: always
    image: "bytelang/kplayer"

运行yml文件

进入 /root/docker_data/kplayer 文件夹下面,运行命令:docker-compose up -d

或者在任意文件夹下面,运行命令:docker-compose -f /root/docker_data/kplayer/docker-compose.yml up -d

然后服务就跑起来了,运行 docker ps 能查看到启动的容器了。

执行命令 docker logs kplayer 查看日志,如果看到下面日志就表示成功了:

ini 复制代码
time="2023-10-21 07:15:41" level=warning msg="open terminal failed" file="cmd/root.go:35"
kplayer for golang v0.5.8 Copyright(c) 2019-2023 the ByteLang Studio (https://kplayer.bytelang.cn)
  libkplayer version: v1.5.4-1-ge0cab16 plugin version: 1.5.1 license version: v1 
  toolchains GNU(10.3.1) C++ Standard 17 on Linux-x86_64-6.0.2-arch1-1
  build with build-chains cmake(3.21.3) type with Release
  Hope you have a good experience.
-------------------------------------------------------------------------------------------------------------------
time="2023-10-21 07:15:41" level=info msg="resource download success" name=default path=resource/font.ttf
time="2023-10-21 07:15:41" level=info msg="resource initialization success" name=default type=font
time="2023-10-21 07:15:41" level=info msg="grpc server listening" address=127.0.0.1 port=4155 token=false
time="2023-10-21 07:15:41" level=info msg="http server listening" address=127.0.0.1 port=4156 token=false
time="2023-10-21 07:15:42" level=info msg="core start up success"
time="2023-10-21 07:15:42" level=info msg="kplayer start success"
time="2023-10-21 07:15:42" level=info msg="output add success" path="rtmp://live-push.bilivideo.com/live-bvc/?streamname=live_******_******&key=**************&schedule=rtmp&pflag=1" unique=N3uAJf
time="2023-10-21 07:15:42" level=info msg="checked play resource" duration=2621 end=-1 hit_cache=false path=/video/xxx_01.mkv seek=0 type=resource_input_type_single unique=IBzmqu

访问直播间地址

之后访问你的直播间地址,就可以看到已经在正常直播了。

相关推荐
源代码•宸15 小时前
GoLang八股(Go语言基础)
开发语言·后端·golang·map·defer·recover·panic
czlczl2002092515 小时前
OAuth 2.0 解析:后端开发者视角的原理与流程讲解
java·spring boot·后端
颜淡慕潇15 小时前
Spring Boot 3.3.x、3.4.x、3.5.x 深度对比与演进分析
java·后端·架构
布列瑟农的星空15 小时前
WebAssembly入门(一)——Emscripten
前端·后端
小突突突16 小时前
Spring框架中的单例bean是线程安全的吗?
java·后端·spring
iso少年16 小时前
Go 语言并发编程核心与用法
开发语言·后端·golang
掘金码甲哥16 小时前
云原生算力平台的架构解读
后端
码事漫谈16 小时前
智谱AI从清华实验室到“全球大模型第一股”的六年征程
后端
码事漫谈16 小时前
现代软件开发中常用架构的系统梳理与实践指南
后端
Mr.Entropy17 小时前
JdbcTemplate 性能好,但 Hibernate 生产力高。 如何选择?
java·后端·hibernate