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

访问直播间地址

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

相关推荐
NiNg_1_2341 小时前
SpringBoot整合SpringSecurity实现密码加密解密、登录认证退出功能
java·spring boot·后端
Chrikk3 小时前
Go-性能调优实战案例
开发语言·后端·golang
幼儿园老大*3 小时前
Go的环境搭建以及GoLand安装教程
开发语言·经验分享·后端·golang·go
canyuemanyue3 小时前
go语言连续监控事件并回调处理
开发语言·后端·golang
杜杜的man3 小时前
【go从零单排】go语言中的指针
开发语言·后端·golang
customer084 小时前
【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源
Yaml45 小时前
智能化健身房管理:Spring Boot与Vue的创新解决方案
前端·spring boot·后端·mysql·vue·健身房管理
小码编匠6 小时前
一款 C# 编写的神经网络计算图框架
后端·神经网络·c#