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

访问直播间地址

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

相关推荐
追逐时光者1 小时前
推荐 12 款开源美观、简单易用的 WPF UI 控件库,让 WPF 应用界面焕然一新!
后端·.net
Jagger_1 小时前
敏捷开发流程-精简版
前端·后端
苏打水com2 小时前
数据库进阶实战:从性能优化到分布式架构的核心突破
数据库·后端
间彧3 小时前
Spring Cloud Gateway与Kong或Nginx等API网关相比有哪些优劣势?
后端
间彧3 小时前
如何基于Spring Cloud Gateway实现灰度发布的具体配置示例?
后端
间彧3 小时前
在实际项目中如何设计一个高可用的Spring Cloud Gateway集群?
后端
间彧3 小时前
如何为Spring Cloud Gateway配置具体的负载均衡策略?
后端
间彧3 小时前
Spring Cloud Gateway详解与应用实战
后端
EnCi Zheng4 小时前
SpringBoot 配置文件完全指南-从入门到精通
java·spring boot·后端
烙印6014 小时前
Spring容器的心脏:深度解析refresh()方法(上)
java·后端·spring