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

访问直播间地址

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

相关推荐
哎呦没21 分钟前
大学生就业招聘:Spring Boot系统的架构分析
java·spring boot·后端
_.Switch40 分钟前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
杨哥带你写代码2 小时前
足球青训俱乐部管理:Spring Boot技术驱动
java·spring boot·后端
AskHarries3 小时前
读《show your work》的一点感悟
后端
A尘埃3 小时前
SpringBoot的数据访问
java·spring boot·后端
yang-23073 小时前
端口冲突的解决方案以及SpringBoot自动检测可用端口demo
java·spring boot·后端
Marst Code3 小时前
(Django)初步使用
后端·python·django
代码之光_19803 小时前
SpringBoot校园资料分享平台:设计与实现
java·spring boot·后端
编程老船长3 小时前
第26章 Java操作Mongodb实现数据持久化
数据库·后端·mongodb
IT果果日记4 小时前
DataX+Crontab实现多任务顺序定时同步
后端