前言
最近有服务器资源闲置起来了,感觉很浪费,想把它利用起来,而且自己收藏的"电影"🎞等资源也比较多(小心侵权),所以准备搞个直播玩一玩。
准备直接用服务器进行直播推流,这样能保证24小时无人直播(真人24小时直播那不得累死)。
可以点击链接去到我的直播间🎥🔞,欢迎大家光临🍿😏
目前网上直播推流的工具也有很多,对比了一下,最终选择了 KPlayer
,因为搭建和使用起来非常简单,而且文档也比较齐全。
准备工作
推荐用
Docker
的方式进行搭建,优点就不说了,可自行了解,如果不用Docker
的话,可直接参考KPlayer
文档进行搭建。
- 服务器,国内、国外服务器均可
- 服务器需安装docker、docker-compose环境,没安装的可参考文章 - docker、docker-compose安装
- GitHub地址:github.com/bytelang/kp...
- Docker镜像地址:hub.docker.com/r/bytelang/...
- KPlayer文档:docs.kplayer.net
- 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
访问直播间地址
之后访问你的直播间地址,就可以看到已经在正常直播了。