BUG修复,文案修复 (#474)
* 弹幕报错记录增加文件名部分,方便排查BUG * yoml、toml配置文件注释修正,格式修正 * 修复ffmpeg时长分段时弹幕文件不会跟着分段的问题、修复防止重复请求流的功能工作异常的问题 * 修正CHANGELOG更新日志、修正README.MD --------- Co-authored-by: KNaiFen <knaifen@foxmail.com>
This commit is contained in:
1 parent
c416c8c30e
commit
ed3d1a96ed
6 files changed
+135
-104
No files matched your search
@@ -12,6 +12,7 @@
|
||||
- 🔧同步yaml配置文件的更新到toml中。[@Kataick](https://github.com/Kataick)
|
||||
- 🔧NICO标题获取从BS4改为正则,开播后仍然重复请求的BUG的修复。[@KNaiFen](https://github.com/KNaiFen)
|
||||
- 🔧添加quickjs依赖。[@haha114514](https://github.com/haha114514)
|
||||
- 💡新增NICO录播。[@KNaiFen](https://github.com/KNaiFen)
|
||||
- 💡增加NICO用户配置文件模板。[@KNaiFen](https://github.com/KNaiFen)
|
||||
- 💡增加Twitch的去广告开关(解决广告分段问题)[@KNaiFen](https://github.com/KNaiFen)
|
||||
- 💡增加Twitch弹幕录播、修复斗鱼、虎牙的弹幕录制BUG并增加报错提示,修改了XML文件的删除部分,修改了部分代码的协程的调用,优化断流时频繁重复请求。[@KNaiFen](https://github.com/KNaiFen)
|
||||
|
||||
@@ -7,26 +7,31 @@
|
||||
[discord-badge]: https://img.shields.io/discord/1015494098481852447.svg?logo=discord
|
||||
[discord-url]: https://discord.gg/shZmdxDFB7
|
||||
|
||||
* 支持自动录制各大主流直播平台实时直播流,包括但不限于acfun,afreecaTV,哔哩哔哩,斗鱼,抖音,虎牙,网易CC,猫耳FM,Twitch,YY直播等,并于录制结束后上传到哔哩哔哩视频网站。
|
||||
* 支持YouTube,twitch直播回放列表自动搬运至b站,如链接https://www.twitch.tv/xxxx/videos?filter=archives&sort=time
|
||||
* 支持自动录制各大主流直播平台实时直播流,包括但不限于AcFun,afreecaTV,哔哩哔哩,斗鱼,抖音,虎牙,网易CC,NICO,猫耳FM,
|
||||
Twitch,YY直播等,并于录制结束后自动上传到哔哩哔哩视频网站。
|
||||
* 支持YouTube,twitch直播回放列表自动搬运至b站,如链接 https://www.twitch.tv/xxxx/videos?filter=archives&sort=time
|
||||
* 支持录制哔哩哔哩,斗鱼,虎牙,Twitch平台的**直播弹幕**,生成B站标准格式的XML弹幕文件,可被常见的各种弹幕挂载程序使用处理
|
||||
* 自动选择上传线路,保证国内外vps上传质量和速度
|
||||
* 可分别控制下载与上传并发量
|
||||
* 支持 cos-internal,腾讯云上海内网上传,免流 + 大幅提速
|
||||
* ~~支持 cos-internal,腾讯云上海内网上传,免流 + 大幅提速~~
|
||||
* 实验性功能:
|
||||
- 防止录制花屏
|
||||
- 防止录制花屏(使用默认的stream-gears下载器就会有这个功能)
|
||||
- 启动时加入`--http`选项并访问localhost:19159可使用webUI (建议使用toml配置文件)
|
||||
|
||||
> 详细安装教程:
|
||||
> * [快速上手视频](https://www.bilibili.com/video/BV1jB4y1p7TK/)教程 by [@milk](https://github.com/by123456by)
|
||||
> * [Ubuntu](https://blog.waitsaber.org/archives/129) 、[CentOS](https://blog.waitsaber.org/archives/163)
|
||||
、[Windows](https://blog.waitsaber.org/archives/169) 教程
|
||||
与 [常见问题](https://blog.waitsaber.org/archives/167) 解决方案 by [@waitsaber](https://github.com/waitsaber)
|
||||
|
||||
**更新日志**:[CHANGELOG.md](CHANGELOG.md)
|
||||
|
||||
**文档地址**:<https://biliup.github.io/biliup>
|
||||
|
||||
|
||||
## 详细安装教程:
|
||||
* [快速上手视频教程](https://www.bilibili.com/video/BV1jB4y1p7TK/) by [@milk](https://github.com/by123456by)
|
||||
* [Ubuntu](https://blog.waitsaber.org/archives/129) 、[CentOS](https://blog.waitsaber.org/archives/163)
|
||||
、[Windows](https://blog.waitsaber.org/archives/169) 教程 by [@waitsaber](https://github.com/waitsaber)
|
||||
* [常见问题解决方案](https://blog.waitsaber.org/archives/167) by [@waitsaber](https://github.com/waitsaber)
|
||||
|
||||
|
||||
## INSTALLATION
|
||||
1. 创建配置文件 [**config.toml**](#最小配置文件示例)
|
||||
1. 创建配置文件 **[config.toml](./public/config.toml)** (推荐从配置文件模板开始进行修改)
|
||||
```toml
|
||||
# 以下为必填项
|
||||
[streamers."1xx直播录像"] # 设置直播间1
|
||||
@@ -56,38 +61,34 @@ $ biliup --http start
|
||||
# 指定配置文件路径
|
||||
$ biliup --config ./config.yaml start
|
||||
```
|
||||
从 v0.2.15 版本开始,配置文件支持 toml 格式,详见 [config.toml](https://github.com/biliup/biliup/blob/master/public/config.toml),
|
||||
yaml配置文件完整内容可参照 [config.yaml](https://github.com/ForgQi/bilibiliupload/blob/master/public/config.yaml)。
|
||||
从 v0.2.15 版本开始,配置文件支持 toml 格式,详见 [config.toml](./public/config.toml),
|
||||
yaml配置文件完整内容可参照 [config.yaml](./public/config.yaml)。
|
||||
__FFmpeg__ 作为可选依赖。如果还有问题可以 [加群讨论](https://github.com/ForgQi/biliup/discussions/58#discussioncomment-2388776) 。
|
||||
|
||||
> 使用上传功能需要登录B站,通过 [命令行投稿工具](https://github.com/ForgQi/biliup-rs) 获取 cookies.json,并放入启动 biliup 的路径即可
|
||||
|
||||
> ARM平台用户,需要使用到stream-gears(默认下载器与上传器)进行下载和上传的,请参考此教程降级stream-gears版本。 https://github.com/biliup/biliup/discussions/407
|
||||
|
||||
> Linux下以daemon进程启动,录像和日志文件保存在执行目录下,程序执行过程可查看日志文件。启动之后使用命令`ps -A | grep biliup` 查看进程biliup是否启动成功。
|
||||
|
||||
Linux下以daemon进程启动,录像和日志文件保存在执行目录下,程序执行过程可查看日志文件。
|
||||
`ps -A | grep biliup` 查看进程是否启动成功。
|
||||
|
||||
## Docker使用 🔨
|
||||
### 方式一 拉取镜像
|
||||
#### 从配置文件启动
|
||||
1. 从配置文件启动
|
||||
```bash
|
||||
vim /host/path/config.toml
|
||||
docker run -P --name biliup -v /host/path:/opt -d ghcr.io/biliup/caution:master
|
||||
```
|
||||
#### 从配置文件启动,并启动web-ui
|
||||
2. 从配置文件启动,并启动web-ui
|
||||
```bash
|
||||
vim /host/path/config.toml
|
||||
docker run -P --name biliup -v /host/path:/opt -p 19159:19159 -d --restart always ghcr.io/biliup/caution:latest --http --password yourpassword
|
||||
```
|
||||
yourpassword为web-ui的密码,用户名为biliup
|
||||
|
||||
#### 直接启动web-ui 自动生成配置文件
|
||||
> yourpassword为web-ui的密码,用户名为biliup
|
||||
3. 直接启动web-ui 自动生成配置文件
|
||||
```bash
|
||||
docker run -P --name biliup -v /host/path:/opt -p 19159:19159 -d --restart always ghcr.io/biliup/caution --http --password yourpassword
|
||||
```
|
||||
|
||||
|
||||
### 方式二 手动构建镜像
|
||||
```bash
|
||||
cd biliup
|
||||
@@ -95,12 +96,17 @@ sudo docker build . -t biliup
|
||||
sudo docker run -P -d biliup
|
||||
```
|
||||
### 进入容器 📦
|
||||
1. 查看容器列表,找到你要进入的容器的imageId
|
||||
```bash
|
||||
sudo docker ps
|
||||
```
|
||||
2. 进入容器
|
||||
```bash
|
||||
sudo docker ps (找到你的imageId)
|
||||
sudo docker exec -it imageId /bin/bash
|
||||
```
|
||||
|
||||
## 调试源码
|
||||
|
||||
## 从源码运行biliup
|
||||
* 下载源码: git clone https://github.com/ForgQi/bilibiliupload.git
|
||||
* 安装: `pip3 install -e .`
|
||||
* 启动: `python3 -m biliup`
|
||||
@@ -111,8 +117,10 @@ sudo docker exec -it imageId /bin/bash
|
||||
$ python3 -m build
|
||||
```
|
||||
* 调试 webUI: `python3 -m biliup --http --static-dir public`
|
||||
|
||||
|
||||
## yaml配置文件示例
|
||||
可选项见完整配置文件,
|
||||
可选项见[完整配置文件](./public/config.yaml),
|
||||
tid投稿分区见[Wiki](https://github.com/ForgQi/biliup/wiki)
|
||||
```yaml
|
||||
streamers:
|
||||
@@ -121,6 +129,8 @@ streamers:
|
||||
- https://www.twitch.tv/xxx
|
||||
tags: biliup
|
||||
```
|
||||
|
||||
|
||||
## EMBEDDING BILIUP
|
||||
如果你不想使用完全自动托管的功能,而仅仅只是想嵌入biliup作为一个库来使用这里有两个例子可以作为参考
|
||||
### 上传
|
||||
@@ -160,12 +170,16 @@ from biliup.downloader import download
|
||||
|
||||
download('文件名', 'https://www.panda.tv/1150595', suffix='flv')
|
||||
```
|
||||
|
||||
|
||||
## 使用建议
|
||||
### 1. VPS上传线路选择
|
||||
国内VPS网络费用较高,建议使用国外VPS,根据机器的硬盘等资源设置合理并发量, 选择kodo线路较容易跑满带宽。
|
||||
|
||||
b站上传目前有两种模式,分别为bup和bupfetch模式。
|
||||
>* bup:国内常用模式,视频直接上传到b站投稿系统。
|
||||
>* bupfetch:目前见于国外网络环境,视频首先上传至第三方文件系统,上传结束后通知bilibili投稿系统,再由b站投稿系统从第三方系统拉取视频,以保证某些地区用户的上传体验。
|
||||
> bup:国内常用模式,视频直接上传到b站投稿系统。
|
||||
>
|
||||
> bupfetch:目前见于国外网络环境,视频首先上传至第三方文件系统,上传结束后通知bilibili投稿系统,再由b站投稿系统从第三方系统拉取视频,以保证某些地区用户的上传体验。
|
||||
|
||||
bup模式支持的上传方式为upos,其线路有:
|
||||
* ws(网宿)
|
||||
@@ -178,19 +192,26 @@ bupfetch模式支持的上传方式及线路有:
|
||||
* ~~bos (百度)已失效~~
|
||||
|
||||
国内基本选择upos模式的bda2线路。国外多为upos模式的ws和qn线路,也有bupfetch模式的kodo、gcs线路。bilibili采用客户端和服务器端线路探测相结合的方式,服务器会返回可选线路,客户端上传前会先发包测试选择一条延迟最低的线路,保证各个地区的上传质量。
|
||||
***
|
||||
|
||||
### 2. 登录方案
|
||||
登录有两种方案:
|
||||
|
||||
* 操作浏览器模拟登录
|
||||
|
||||
* 通过b站的OAuth2接口
|
||||
> 对于滑动验证码可进行二值化、灰度处理找缺口计算移动像素,系统会上传分析你的拖动行为,模拟人操作轨迹,提供加速度、抖动等,如直接拖动到目标位置不能通过验证,提示:“拼图被怪物吃了”。滑动验证码系统会学习,需不断更新轨迹策略保证通过验证的成功率。\
|
||||
> OAuth2接口要提供key,需逆向分析各端
|
||||
|
||||
>对于滑动验证码可进行二值化、灰度处理找缺口计算移动像素,系统会上传分析你的拖动行为,模拟人操作轨迹,提供加速度、抖动等,如直接拖动到目标位置不能通过验证,提示:“拼图被怪物吃了”。滑动验证码系统会学习,需不断更新轨迹策略保证通过验证的成功率。\
|
||||
>OAuth2接口要提供key,需逆向分析各端
|
||||
### 3. 推荐biliup配置
|
||||
线程池限制并发数,减少磁盘占满的可能性。
|
||||
> 检测到下载情况卡死或者下载超时,biliup会重试三次保证可用性。代码更新后将在空闲时自动重启。
|
||||
|
||||
线程池限制并发数,减少磁盘占满的可能性。检测下载情况卡死或者下载超时,重试三次保证可用性。代码更新后将在空闲时自动重启。
|
||||
### 4. 关于录制的XML弹幕文件如何使用
|
||||
使用方法有很多种:
|
||||
- 使用 [DanmakuFactory](https://github.com/hihkm/DanmakuFactory) 将XML弹幕文件转化为ASS字幕文件,然后使用一般播放器外挂加载字幕
|
||||
- [AList](https://alist.nn.ci/zh/) 检测到同文件夹下的XML文件会自动挂载弹幕,实现带弹幕的录播效果
|
||||
- 使用 [弹弹play](https://www.dandanplay.com/) 可直接挂载XML弹幕文件观看
|
||||
|
||||
|
||||
## 自定义插件
|
||||
下载整合了ykdl、youtube-dl、streamlink,不支持或者支持的不够好的网站可自行拓展。
|
||||
下载和上传模块插件化,如果有上传或下载目前不支持平台的需求便于拓展。
|
||||
|
||||
@@ -211,10 +232,14 @@ def transcoding(data):
|
||||
python packages: PyChakra, quickjs
|
||||
applications: Gjs, CJS, QuickJS, JavaScriptCore, Node.js, etc.'''
|
||||
|
||||
开机自启可参照以下模板创建systemd unit:
|
||||
|
||||
创建service文件:
|
||||
> $ nano ~/.config/systemd/user/biliupd.service
|
||||
## LINUX下配置开机自启
|
||||
开机自启可参照以下模板创建systemd unit:
|
||||
1. 创建service文件:
|
||||
```shell
|
||||
$ nano ~/.config/systemd/user/biliupd.service
|
||||
```
|
||||
2. service文件的内容
|
||||
```
|
||||
[Unit]
|
||||
Description=Biliup Startup
|
||||
@@ -232,23 +257,25 @@ ExecStop=/usr/bin/biliup stop
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
```
|
||||
启用service并启动:
|
||||
3. 启用service并启动:
|
||||
```shell
|
||||
$ systemctl --user enable biliupd
|
||||
$ systemctl --user start biliupd
|
||||
```
|
||||
|
||||
## Deprecated
|
||||
* ~~selenium操作浏览器上传两种方式~~(详见bili_chromeup.py)
|
||||
* ~~Windows图形界面版在release中下载AutoTool.msi进行安装~~[AutoTool.msi](https://github.com/ForgQi/bilibiliupload/releases/tag/v0.1.0)
|
||||
* 相关配置示例在config.yaml文件中,如直播间地址,b站账号密码\
|
||||
由于目前使用账号密码登录,大概率触发验证。请使用命令行工具登录,将登录返回的信息填入配置文件,
|
||||
且使用引号括起yaml中cookie的数字代表其为字符串
|
||||
|
||||
>关于B站为什么不能多p上传\
|
||||
## Deprecated
|
||||
* ~~selenium操作浏览器上传两种方式(详见bili_chromeup.py)~~
|
||||
* ~~Windows图形界面版在release中下载AutoTool.msi进行安装~~[~~AutoTool.msi~~](https://github.com/ForgQi/bilibiliupload/releases/tag/v0.1.0)
|
||||
* 相关配置示例在[config.yaml](./public/config.yaml)、[config.toml](./public/config.toml)文件中,如直播间地址,b站账号密码等等
|
||||
* 由于目前使用账号密码登录,大概率触发验证。请使用命令行工具登录,将登录返回的信息填入配置文件,且使用引号括起yaml中cookie的数字代表其为字符串
|
||||
|
||||
> 关于B站为什么不能多p上传\
|
||||
目前bilibili网页端是根据用户权重来限制分p数量的,权重不够的用户切换到客户端的提交接口即可解除这一限制。
|
||||
>用户等级大于3,且粉丝数>1000,web端投稿不限制分p数量
|
||||
> 用户等级大于3,且粉丝数>1000,web端投稿不限制分p数量
|
||||
|
||||
|
||||
## Credits
|
||||
* Thanks `ykdl, youtube-dl, streamlink` provides downloader.
|
||||
>GUI:[B站投稿客户端 biliup-app](https://github.com/ForgQi/Caution)
|
||||
* Thanks `THMonster/danmaku`.
|
||||
> GUI:[B站投稿客户端 biliup-app](https://github.com/ForgQi/Caution)
|
||||
+16
-15
@@ -47,7 +47,7 @@ class DownloadBase:
|
||||
]
|
||||
if config.get('segment_time'):
|
||||
self.default_output_args += \
|
||||
['-segment_time', f"{config.get('segment_time', '00:50:00')}"]
|
||||
['-to', f"{config.get('segment_time', '00:50:00')}"]
|
||||
else:
|
||||
self.default_output_args += \
|
||||
['-fs', f"{config.get('file_size', '2621440000')}"]
|
||||
@@ -131,12 +131,13 @@ class DownloadBase:
|
||||
args = ['ffmpeg', '-y', *default_input_args,
|
||||
'-i', self.raw_stream_url, *self.default_output_args, *self.opt_args,
|
||||
'-c', 'copy', '-f', self.suffix]
|
||||
if config.get('segment_time'):
|
||||
args += ['-f', 'segment',
|
||||
f'{filename} part-%03d.{self.suffix}']
|
||||
else:
|
||||
args += [
|
||||
f'{filename}.{self.suffix}.part']
|
||||
# if config.get('segment_time'):
|
||||
# args += ['-f', 'segment',
|
||||
# f'{filename} part-%03d.{self.suffix}']
|
||||
# else:
|
||||
# args += [
|
||||
# f'{filename}.{self.suffix}.part']
|
||||
args += [f'{filename}.{self.suffix}.part']
|
||||
|
||||
proc = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
try:
|
||||
@@ -173,6 +174,13 @@ class DownloadBase:
|
||||
# delay = config.get('delay') if (config.get('delay') > 5) else 5
|
||||
delay = 30 # 有人的delay会设置的过长,遂写死为30
|
||||
while i < 30:
|
||||
# 限制每次拉流的时间间隔必须大于delay,防止主播还没推流的时候疯狂重复请求
|
||||
thistime_download = time.time()
|
||||
interval = thistime_download - lasttime_download
|
||||
if interval < delay:
|
||||
logger.info(f"频繁请求:等待{format(delay - interval, '.2f')}秒后再次请求直播流")
|
||||
time.sleep(delay - interval)
|
||||
|
||||
try:
|
||||
thistime_download = time.time()
|
||||
ret = self.run()
|
||||
@@ -180,15 +188,8 @@ class DownloadBase:
|
||||
logger.exception("Uncaught exception:")
|
||||
continue
|
||||
finally:
|
||||
self.close()
|
||||
|
||||
# 限制每次拉流的时间间隔必须大于delay,防止主播还没推流的时候疯狂重复请求
|
||||
interval = thistime_download - lasttime_download
|
||||
if interval < delay:
|
||||
logger.info(f"频繁请求:等待{interval}秒后再次请求直播流")
|
||||
time.sleep(delay - interval)
|
||||
lasttime_download = thistime_download
|
||||
continue
|
||||
self.close()
|
||||
|
||||
if ret is False:
|
||||
if config.get('delay'):
|
||||
|
||||
@@ -66,13 +66,13 @@ class DanmakuClient:
|
||||
else:
|
||||
await self.__ws.send_bytes(reg_data)
|
||||
except Exception as Error:
|
||||
logger.debug(f"init_ws:捕获到异常:{Error}")
|
||||
logger.debug(f"init_ws:{self.__filename}:捕获到异常:{Error}")
|
||||
if not os.path.exists(self.__filename):
|
||||
async with aiofiles.open(self.__filename, mode='w') as f:
|
||||
await f.write("<?xml version='1.0' encoding='UTF-8'?>\n"
|
||||
"<i xmlns:ns0='http://www.w3.org/1999/XSL/Transform'>\n"
|
||||
"</i>"
|
||||
)
|
||||
"<i xmlns:ns0='http://www.w3.org/1999/XSL/Transform'>\n"
|
||||
"</i>"
|
||||
)
|
||||
|
||||
async def heartbeats(self):
|
||||
while not self.__stop and self.__site.heartbeat:
|
||||
@@ -83,12 +83,12 @@ class DanmakuClient:
|
||||
else:
|
||||
await self.__ws.send_bytes(self.__site.heartbeat)
|
||||
except Exception as Error:
|
||||
logger.debug(f"heartbeats:捕获到异常:{Error}")
|
||||
logger.debug(f"heartbeats:{self.__filename}:捕获到异常:{Error}")
|
||||
if not self.__stop:
|
||||
logger.info(f'触发弹幕重连')
|
||||
await self.init_ws()
|
||||
await asyncio.sleep(3)
|
||||
|
||||
|
||||
await self.__hs.close()
|
||||
|
||||
async def fetch_danmaku(self):
|
||||
@@ -106,7 +106,7 @@ class DanmakuClient:
|
||||
for m in ms:
|
||||
await self.__dm_queue.put(m)
|
||||
except Exception as Error:
|
||||
logger.debug(f"fetch_danmaku:弹幕处理异常:{Error}")
|
||||
logger.debug(f"fetch_danmaku:{self.__filename}:弹幕处理异常:{Error}")
|
||||
await asyncio.sleep(10)
|
||||
|
||||
async def print_danmaku(self):
|
||||
@@ -139,8 +139,8 @@ class DanmakuClient:
|
||||
d.set('p', f"{msg_time},1,25,{color},0,0,0,0")
|
||||
d.text = m["content"]
|
||||
except Exception as Error:
|
||||
logger.debug(f"print_danmaku:弹幕处理异常:{Error}")
|
||||
|
||||
logger.debug(f"print_danmaku:{self.__filename}:弹幕处理异常:{Error}")
|
||||
|
||||
try:
|
||||
if m['msg_type'] == 'danmaku' and msg_i >= 5:
|
||||
# loop = asyncio.get_running_loop()
|
||||
@@ -150,8 +150,7 @@ class DanmakuClient:
|
||||
else:
|
||||
msg_i = msg_i + 1
|
||||
except Exception as Error:
|
||||
logger.debug(f"print_danmaku:弹幕写入异常:{Error}")
|
||||
|
||||
logger.debug(f"print_danmaku:{self.__filename}:弹幕写入异常:{Error}")
|
||||
|
||||
async def start(self):
|
||||
self.__dm_queue = asyncio.Queue()
|
||||
@@ -173,4 +172,4 @@ class DanmakuClient:
|
||||
|
||||
|
||||
# 虎牙直播:https://www.huya.com/lpl
|
||||
# 斗鱼直播:https://www.douyu.com/9999
|
||||
# 斗鱼直播:https://www.douyu.com/9999
|
||||
+16
-16
@@ -1,5 +1,4 @@
|
||||
#########全局录播与上传设置#########
|
||||
|
||||
######### 全局录播与上传设置 #########
|
||||
#------录制与下载------#
|
||||
### 选择全局默认的下载插件,默认为stream-gears。可选:
|
||||
### 1.streamlink(streamlink配合ffmpeg混合下载模式,适合用于下载hls_fmp4与hls_ts流,因为streamlink支持多线程拉取)。
|
||||
@@ -13,7 +12,6 @@ file_size = 2621440000
|
||||
#segment_time = "00:50:00"
|
||||
# 小于此大小的视频文件将会被过滤删除,单位MB
|
||||
filtering_threshold = 20
|
||||
|
||||
# 自定义录播文件名模板, 支持变量 {streamer}:你在配置里设置的直播间名 %Y-%m-%d %H_%M_%S:创建文件的时间, {title}:当场直播间标题
|
||||
# 如果上传文件,文件名必须包含设定的模板名。其次,如果没有定义时间,文件分片可能会互相覆盖,所以推荐设置时间来避免分段文件名重复。
|
||||
#filename_prefix = "{streamer}%Y-%m-%d %H_%M_%S{title}"
|
||||
@@ -44,7 +42,7 @@ check_sourcecode = 15
|
||||
|
||||
|
||||
|
||||
#########各平台录播设置#########
|
||||
######### 各平台录播设置 #########
|
||||
### 使用直播间封面作为投稿封面。此封面优先级低于单个主播指定的自定义封面。(目前仅支持bilibili。直播封面将会保存于cover文件夹下,请自行定期删除)
|
||||
#use_live_cover = true
|
||||
|
||||
@@ -111,7 +109,7 @@ check_sourcecode = 15
|
||||
### 限制单个视频的最大大小。
|
||||
### 注意:此参数优先级高于分辨率设置,并且不包括音频部分的大小,仅仅只是视频部分的大小。
|
||||
### 如果某个视频实在没有低于此大小的分辨率版本,将会选择最低画质的版本下载。
|
||||
#youtube_max_videosize = "5G" ###参考格式,例如100M,5G,10G。
|
||||
#youtube_max_videosize = "5G" ### 参考格式,例如100M,5G,10G。
|
||||
### YouTube转载视频自动获取视频封面并用于作投稿封面。获取webp封面之后自动转换格式为jpg,并保存在cover/youtube文件夹中,请注意定期清理。
|
||||
#use_youtube_cover = true
|
||||
### 仅下载该日期之后的视频
|
||||
@@ -122,8 +120,7 @@ check_sourcecode = 15
|
||||
### 开启之后上面关于YOUTUBE的选项全部无效【我也不知道这个功能有什么屌用】
|
||||
#use_new_ytb_downloader = false
|
||||
|
||||
|
||||
#------Twitch------#
|
||||
#------Twitch直播录制------#
|
||||
### 录制Twitch弹幕,默认关闭【只有下载器为FFMPEG时才有效】
|
||||
#twitch_danmaku = false
|
||||
### 去除Twitch广告功能,默认开启【只有下载器为FFMPEG时才有效】
|
||||
@@ -133,8 +130,7 @@ check_sourcecode = 15
|
||||
|
||||
|
||||
|
||||
#########录制主播设置#########
|
||||
|
||||
######### 录制主播设置 #########
|
||||
# 最小配置示例
|
||||
[streamers."星际2Stats拔本神族天梯第一视角"]
|
||||
url = ["https://www.twitch.tv/kimdaeyeob3"]
|
||||
@@ -179,6 +175,8 @@ format = "mp4" # 视频保存格式。如需使用mp4格式,必须切换downlo
|
||||
#opt_args = [ "-ss", "00:00:16" # 跳过开始的16秒 ]
|
||||
|
||||
|
||||
|
||||
################### 用户cookie ###################
|
||||
### 在填了cookies的情况下优先使用cookies上传,如需使用用户名密码上传请注释掉cookies
|
||||
[user]
|
||||
#------哔哩哔哩------#
|
||||
@@ -187,18 +185,20 @@ format = "mp4" # 视频保存格式。如需使用mp4格式,必须切换downlo
|
||||
### 也可使用biliup-rs来获取以下项目.
|
||||
#bili_cookie = 'SESSDATA=none;bili_jct=none;DedeUserID__ckMd5=none;DedeUserID=none;access_token=none;'
|
||||
### 重要!!!
|
||||
###是否将cookie传入第三方API。将Cookie传入未知的第三方API有几率泄露帐号登录信息。
|
||||
###在开启了自定义Cookie(bili_cookie)又同时设置了第三方API(bili_liveapi)的情况下,如果打开了允许第三方API使用Cookie,那么就使用第三方API,如果没有允许(默认),那么设置的第三方API就不生效
|
||||
### 是否将cookie传入第三方API。将Cookie传入未知的第三方API有几率泄露帐号登录信息。
|
||||
### 在开启了自定义Cookie(bili_cookie)又同时设置了第三方API(bili_liveapi)的情况下,如果打开了允许第三方API使用Cookie,那么就使用第三方API,如果没有允许(默认),那么设置的第三方API就不生效
|
||||
#customAPI_use_cookie = false
|
||||
|
||||
#------抖音------#
|
||||
# 如需要录制抖音请在此填入cookie需要__ac_nonce与__ac_signature的值
|
||||
douyin_cookie = '__ac_nonce=123456; __ac_signature=123456;'
|
||||
|
||||
#------Twitch------#
|
||||
# 如录制Twitch时遇见视频流中广告过多的情况,可尝试在此填入cookie,可以大幅减少视频流中的twitch广告(经测试需要在该Cookie所属账号开了TwitchTurbo会员才有用),该cookie有过期风险,cookie过期后会导致无法获取到直播流
|
||||
# twitch_cookie获取方式:在浏览器中打开Twitch.tv,F12调出控制台,在控制台中执行:document.cookie.split("; ").find(item=>item.startsWith("auth-token="))?.split("=")[1]
|
||||
# twitch_cookie需要在downloader= "ffmpeg"时候才会生效
|
||||
#------Twitch直播录制------#
|
||||
### 只在录制twitch直播时才生效
|
||||
### 如录制Twitch时遇见视频流中广告过多的情况,可尝试在此填入cookie,可以大幅减少视频流中的twitch广告(经测试需要在该Cookie所属账号开了TwitchTurbo会员才有用)
|
||||
### 该cookie有过期风险,cookie过期后会导致无法获取到直播流(我个人用了四个月都没过期)
|
||||
### twitch_cookie获取方式:在浏览器中打开Twitch.tv,F12调出控制台,在控制台中执行:document.cookie.split("; ").find(item=>item.startsWith("auth-token="))?.split("=")[1]
|
||||
### twitch_cookie需要在downloader= "ffmpeg"时候才会生效
|
||||
#twitch_cookie = 'asdiouo2h987r23hf2893fh923y7'
|
||||
|
||||
#------YouTube------#
|
||||
@@ -222,7 +222,7 @@ douyin_cookie = '__ac_nonce=123456; __ac_signature=123456;'
|
||||
|
||||
|
||||
|
||||
# 日志输出配置
|
||||
########### 日志输出配置 ###########
|
||||
[LOGGING.formatters.verbose]
|
||||
format = "%(asctime)s %(filename)s[line:%(lineno)d](Pid:%(process)d Tname:%(threadName)s) %(levelname)s %(message)s"
|
||||
datefmt = "%Y-%m-%d %H:%M:%S"
|
||||
|
||||
+18
-15
@@ -1,5 +1,4 @@
|
||||
#########全局录播与上传设置#########
|
||||
|
||||
######### 全局录播与上传设置 #########
|
||||
#------录制与下载------#
|
||||
### 选择全局默认的下载插件,默认为stream-gears。可选:
|
||||
### 1.streamlink(streamlink配合ffmpeg混合下载模式,适合用于下载hls_fmp4与hls_ts流,因为streamlink支持多线程拉取)。
|
||||
@@ -13,7 +12,6 @@ file_size: 2621440000
|
||||
#segment_time: '00:50:00'
|
||||
### 小于此大小的视频文件将会被过滤删除,单位MB
|
||||
filtering_threshold: 20
|
||||
|
||||
### 自定义录播文件名模板, 支持变量 {streamer}:你在配置里设置的直播间名 %Y-%m-%d %H_%M_%S:创建文件的时间, {title}:当场直播间标题
|
||||
### 如果上传文件,文件名必须包含设定的模板名。其次,如果没有定义时间,文件分片可能会互相覆盖,所以推荐设置时间来避免分段文件名重复。
|
||||
#filename_prefix: '{streamer}%Y-%m-%d %H_%M_%S{title}'
|
||||
@@ -42,7 +40,9 @@ pool2_size: 5
|
||||
### 检测源码文件变化间隔,单位:秒,检测源码到变化后,程序会在空闲时自动重启
|
||||
check_sourcecode: 15
|
||||
|
||||
#########各平台录播设置#########
|
||||
|
||||
|
||||
######### 各平台录播设置 #########
|
||||
### 使用直播间封面作为投稿封面。此封面优先级低于单个主播指定的自定义封面。(直播封面将会保存于cover文件夹下,请自行定期删除)
|
||||
#use_live_cover: true
|
||||
|
||||
@@ -118,9 +118,9 @@ check_sourcecode: 15
|
||||
#youtube_before_date: '20230501'
|
||||
### YouTube的Streamlink下载器模式,开启之后会调用Streamlink获取直播流并且使用FFMPEG下载,默认关闭【仅当下载器是FFMPEG时才有效】
|
||||
### 开启之后上面关于YOUTUBE的选项全部无效【我也不知道这个功能有什么屌用】
|
||||
use_new_ytb_downloader: false
|
||||
#use_new_ytb_downloader: false
|
||||
|
||||
#------Twitch------#
|
||||
#------Twitch直播录制------#
|
||||
### 录制Twitch弹幕,默认关闭【只有下载器为FFMPEG时才有效】
|
||||
#twitch_danmaku: false
|
||||
### 去除Twitch广告功能,默认开启【只有下载器为FFMPEG时才有效】
|
||||
@@ -130,7 +130,7 @@ use_new_ytb_downloader: false
|
||||
|
||||
|
||||
|
||||
#########录制主播设置#########
|
||||
######### 录制主播设置 #########
|
||||
streamers:
|
||||
### 最小配置示例
|
||||
星际2Stats拔本神族天梯第一视角:
|
||||
@@ -172,6 +172,9 @@ streamers:
|
||||
# - '-ss'
|
||||
# - '00:00:16' # 跳过开始的16秒
|
||||
|
||||
|
||||
|
||||
################### 用户cookie ###################
|
||||
### 在填了cookies的情况下优先使用cookies上传,如需使用用户名密码上传请注释掉cookies
|
||||
#user:
|
||||
#------哔哩哔哩------#
|
||||
@@ -179,19 +182,20 @@ streamers:
|
||||
### 参照https://github.com/BililiveRecorder/BililiveRecorder/issues/263. 请至少填入以下项目.
|
||||
#bili_cookie: 'SESSDATA=none; bili_jct=none;DedeUserID__ckMd5=none;DedeUserID=123;access_token=none;'
|
||||
### 重要!!!
|
||||
###是否将cookie传入第三方API。将Cookie传入未知的第三方API有几率泄露帐号登录信息。
|
||||
###在开启了自定义Cookie(bili_cookie)又同时设置了第三方API(bili_liveapi)的情况下,如果打开了允许第三方API使用Cookie,那么就使用第三方API,如果没有允许(默认),那么设置的第三方API就不生效
|
||||
### 是否将cookie传入第三方API。将Cookie传入未知的第三方API有几率泄露帐号登录信息。
|
||||
### 在开启了自定义Cookie(bili_cookie)又同时设置了第三方API(bili_liveapi)的情况下,如果打开了允许第三方API使用Cookie,那么就使用第三方API,如果没有允许(默认),那么设置的第三方API就不生效
|
||||
#customAPI_use_cookie : False
|
||||
|
||||
#------抖音------#
|
||||
### 如需要录制抖音请在此填入cookie需要__ac_nonce与__ac_signature的值
|
||||
#douyin_cookie: '__ac_nonce=123456; __ac_signature=123456;'
|
||||
|
||||
#------Twitch------#
|
||||
#------Twitch直播录制------#
|
||||
### 只在录制twitch直播时才生效
|
||||
### 如录制Twitch时遇见视频流中广告过多的情况,可尝试在此填入cookie,可以大幅减少视频流中的twitch广告(经测试需要在该Cookie所属账号开了TwitchTurbo会员才有用)
|
||||
# 该cookie有过期风险,cookie过期后会导致无法获取到直播流(我个人用了四个月都没过期)
|
||||
# twitch_cookie获取方式:在浏览器中打开Twitch.tv,F12调出控制台,在控制台中执行:document.cookie.split("; ").find(item=>item.startsWith("auth-token="))?.split("=")[1]
|
||||
# twitch_cookie需要在downloader= "ffmpeg"时候才会生效
|
||||
### 该cookie有过期风险,cookie过期后会导致无法获取到直播流(我个人用了四个月都没过期)
|
||||
### twitch_cookie获取方式:在浏览器中打开Twitch.tv,F12调出控制台,在控制台中执行:document.cookie.split("; ").find(item=>item.startsWith("auth-token="))?.split("=")[1]
|
||||
### twitch_cookie需要在downloader= "ffmpeg"时候才会生效
|
||||
#twitch_cookie: 'aisjdoiuasdoihansdoh3ooi209'
|
||||
|
||||
#------YouTube------#
|
||||
@@ -215,8 +219,7 @@ streamers:
|
||||
|
||||
|
||||
|
||||
#########日志输出配置#########
|
||||
|
||||
######### 日志输出配置 #########
|
||||
LOGGING:
|
||||
formatters:
|
||||
verbose:
|
||||
|
||||
Reference in new issue
Block a user