首页
/ LiveAutoRecord计划任务:定时录制与自动化调度

LiveAutoRecord计划任务:定时录制与自动化调度

2026-02-04 04:50:00作者:舒璇辛Bertina

概述

LiveAutoRecord作为一款专业的直播自动录制工具,其核心功能之一就是强大的计划任务系统。通过智能调度算法和多线程检测机制,它能够高效地监控多个直播平台,在主播开播时自动开始录制,实现真正的无人值守自动化录制。

本文将深入解析LiveAutoRecord的计划任务系统,从基础配置到高级调度策略,帮助用户充分利用这一强大功能。

核心调度机制

自动检测循环

LiveAutoRecord采用基于时间间隔的轮询检测机制,通过startCheckLoop()方法启动监控循环:

// 启动检测循环
manager.startCheckLoop()

// 停止检测循环  
manager.stopCheckLoop()

系统默认每1000毫秒(1秒)进行一次检测,用户可以根据实际需求调整检测间隔:

// 设置检测间隔为5秒
manager.autoCheckInterval = 5000

多线程并发检测

为了提高检测效率,LiveAutoRecord实现了多线程并发检测机制:

const multiThreadCheck = async (manager) => {
  const maxThreadCount = 3  // 默认3个并发线程
  const needCheckRecorders = recorders.filter((r) => !r.disableAutoCheck)
  
  // 多线程并行检测
  const threads = R.range(0, maxThreadCount).map(async () => {
    while (needCheckRecorders.length > 0) {
      await checkOnce()
    }
  })
  
  await Promise.all(threads)
}

这种设计确保了即使监控大量频道,系统仍能保持高效的响应速度。

配置参数详解

基础配置选项

LiveAutoRecord提供了丰富的配置选项来定制计划任务行为:

配置项 类型 默认值 描述
autoCheckLiveStatusAndRecord boolean true 是否启用自动检测和录制
autoCheckInterval number 1000 检测间隔(毫秒)
disableAutoCheck boolean false 针对单个录制器的禁用选项

文件保存规则

系统支持灵活的保存路径模板,支持以下变量:

const savePathRule = '{platform}/{owner}/{year}-{month}-{date} {hour}-{min}-{sec} {title}.mp4'

可用变量表格:

变量名 描述 示例值
platform 平台名称 douyu, bilibili
channelId 频道ID 74751
title 直播标题 今日游戏直播
owner 主播名称 WhiteMind
remarks 用户备注 重要录制
year 年份 2025
month 月份 08
date 日期 29
hour 小时 14
min 分钟 30
sec 秒钟 45

状态机与工作流程

录制器状态转换

LiveAutoRecord的录制器遵循明确的状态机模型:

stateDiagram-v2
    [*] --> idle: 初始化
    idle --> recording: 检测到直播开始
    recording --> idle: 直播结束
    recording --> stopping-record: 手动停止录制
    stopping-record --> idle: 停止完成
    idle --> idle: 持续检测中

检测流程时序图

sequenceDiagram
    participant M as Manager
    participant T as Timer
    participant R as Recorder
    participant P as Provider
    
    T->>M: 定时触发检测
    M->>R: 获取需要检测的录制器列表
    loop 多线程检测
        R->>P: 检查直播状态
        P-->>R: 返回状态结果
        alt 直播中且未录制
            R->>R: 开始录制流程
            R->>M: 发送录制开始事件
        end
    end

高级调度策略

智能优先级管理

LiveAutoRecord支持多种优先级配置,确保重要直播优先处理:

// 画质优先级配置
const streamPriorities = ['原画', '超清', '高清', '标清']

// 源(CDN)优先级配置  
const sourcePriorities = ['主线路', '备用线路1', '备用线路2']

异常处理机制

系统内置完善的异常处理,确保单个频道故障不影响整体运行:

const checkOnce = async () => {
  try {
    await recorder.checkLiveStatusAndRecord({
      getSavePath: genSavePathFromRule
    })
  } catch (err) {
    manager.emit('error', { source: 'checkOnceInThread', err })
    // 继续处理其他录制器,不中断循环
  }
}

实战配置示例

基础监控配置

import { createRecorderManager } from '@autorecord/manager'
import { provider as douyuProvider } from '@autorecord/douyu-recorder'

const manager = createRecorderManager({
  providers: [douyuProvider],
  autoCheckInterval: 3000,  // 3秒检测一次
  autoCheckLiveStatusAndRecord: true,
  savePathRule: '/recordings/{platform}/{owner}/{date}/{hour}-{min}-{sec}.mp4'
})

// 添加斗鱼频道74751
manager.addRecorder({
  providerId: douyuProvider.id,
  channelId: '74751',
  quality: 'highest',
  streamPriorities: ['原画', '超清'],
  sourcePriorities: ['主线路']
})

manager.startCheckLoop()

高级调度配置

// 针对不同频道设置不同的检测策略
const importantRecorder = manager.addRecorder({
  providerId: douyuProvider.id,
  channelId: 'important_channel',
  quality: 'highest',
  disableAutoCheck: false  // 重要频道不禁用检测
})

const backgroundRecorder = manager.addRecorder({
  providerId: douyuProvider.id, 
  channelId: 'background_channel',
  quality: 'high',
  disableAutoCheck: false
})

// 动态调整检测频率
function adjustCheckIntervalBasedOnTime() {
  const hour = new Date().getHours()
  if (hour >= 22 || hour <= 6) {
    // 夜间降低检测频率
    manager.autoCheckInterval = 10000
  } else {
    // 白天正常频率
    manager.autoCheckInterval = 3000
  }
}

性能优化建议

检测频率调优

根据监控频道数量调整检测间隔:

频道数量 推荐间隔 说明
1-5个 1000-3000ms 快速响应,及时录制
5-20个 3000-5000ms 平衡响应和资源消耗
20+个 5000-10000ms 优先保证系统稳定性

资源管理策略

// 根据系统负载动态调整线程数
function adjustConcurrency() {
  const cpuUsage = getCpuUsage()
  if (cpuUsage > 80) {
    // 高负载时减少并发数
    maxThreadCount = 2
  } else {
    maxThreadCount = 3
  }
}

故障排查与监控

常见问题处理

  1. 检测不生效

    • 检查autoCheckLiveStatusAndRecord是否为true
    • 确认单个录制器的disableAutoCheckfalse
  2. 录制延迟

    • 适当降低autoCheckInterval
    • 检查网络连接状况
  3. 资源占用过高

    • 增加检测间隔时间
    • 减少并发线程数

监控指标

建议监控以下关键指标:

  • 检测循环运行状态
  • 平均检测延迟
  • 并发录制数量
  • 错误率统计

总结

LiveAutoRecord的计划任务系统通过智能调度算法、多线程并发检测和灵活的配置选项,为用户提供了强大而可靠的自动化录制解决方案。无论是监控少数重要频道还是大规模批量录制,系统都能通过合理的资源配置和异常处理机制,确保录制任务的稳定执行。

通过本文的详细解析和实战示例,用户可以更好地理解和配置LiveAutoRecord的计划任务功能,实现真正高效、稳定的自动化直播录制。

登录后查看全文
热门项目推荐
相关项目推荐