blrec icon indicating copy to clipboard operation
blrec copied to clipboard

[feature request] 添加录制结束后执行指定指令

Open Akegarasu opened this issue 2 years ago • 3 comments

可以进行一些网盘上传(rclone等)、删除录播的操作 虽然现在用 webhook 再写一下处理也可以做到,但是如果能直接支持的话感觉更好

Akegarasu avatar Apr 25 '22 03:04 Akegarasu

fastapi起一个,很快的

import uvicorn
from fastapi import FastAPI
from pydantic import BaseModel
from typing import Any
from uuid import UUID
from datetime import datetime
class Event(BaseModel):
    type: str
    id: UUID
    date: datetime
    data: Any
app = FastAPI()
@app.post('/blrec')
async def rec(event: Event):
    if event.type == 'VideoPostprocessingCompletedEvent':
        path = event.data['path']
        cmd = f'rclone move {path} remote:dir/'
        await asyncio.subprocess.create_subprocess_shell(cmd)
    retrun {}
uvicorn.run(app)

以上代码未经测试

Taokyla avatar Apr 26 '22 14:04 Taokyla

可以进行一些网盘上传(rclone等)、删除录播的操作 虽然现在用 webhook 再写一下处理也可以做到,但是如果能直接支持的话感觉更好

其实还没开源前就有这个功能,但出于安全和稳定考虑,删掉了。

如果 blrec 可以通过公网访问,可以随意添加并执行命令行命令是不安全的。

还有像网盘上传这种不知道要运行多长时间才完成,不好设置超时限制,如果不加超时限制有可能出问题僵死了导致一直占用资源,进而可能导致程序崩溃。

出于安全和稳定考虑,这个功能不会加了,还是用 webhook 比较安全可靠。

acgnhiki avatar Apr 30 '22 04:04 acgnhiki

可以进行一些网盘上传(rclone等)、删除录播的操作 虽然现在用 webhook 再写一下处理也可以做到,但是如果能直接支持的话感觉更好

如果仅仅针对 rclone 的话,可以尝试用 rclone mount 挂载网盘,然后使用 -o 参数将录制文件存放到合适的路径。 这是我目前在使用的方案,效果类似于上传网盘后删除本地文件。即使你需要在录制完成后使用 ffmpeg 转码为 mp4 格式也没有任何问题,rclone 不会立刻上传录制完成的 flv 文件,而是等待一段时间,期间文件没有被读取才会上传(显然录制完成后 ffmpeg 读取了 flv 文件)。所以可以在转码完成后再上传 mp4 文件(以及 flv 文件——如果它没有被删除的话)

sihuan avatar Apr 30 '22 14:04 sihuan