如何配置FFmpeg使其按指定日期运行?
配置FFmpeg按指定日期执行任务的批处理方案
原批处理代码会无限循环执行推流任务,但缺少日期触发逻辑。以下是修改后的方案,实现仅在指定日期执行FFmpeg任务:
完整修改代码
@echo off setlocal enabledelayedexpansion :: 设置目标执行日期,格式为YYYY-MM-DD set "TARGET_DATE=2024-05-20" :: 仅首次运行时生成MP4文件列表 if not exist list.txt ( dir /b /s "C:\*.mp4" > list.txt ) :CHECK_DATE :: 获取当前系统日期并转为YYYY-MM-DD格式(适配中文Windows系统) for /f "tokens=1-3 delims=/ " %%a in ('date /t') do ( set "CURRENT_DATE=%%c-%%a-%%b" ) :: 日期不匹配则每隔60秒重新检查 if not "!CURRENT_DATE!"=="%TARGET_DATE%" ( timeout /t 60 /nobreak >nul goto CHECK_DATE ) :: 日期匹配,开始循环推流 :ENCODE_LOOP for /F "delims=;" %%F in (list.txt) do ( ffmpeg -re -i "%%F" -vcodec libx264 -preset veryfast -maxrate 2500k -bufsize 3368k -vf "format=yuv420p" -g 60 -acodec libmp3lame -b:a 198k -ar 44100 -f flv -s 1920x1080 rtmp://a.rtmp.youtube.com/live2/key ) goto ENCODE_LOOP
关键逻辑说明
- 目标日期配置:修改
TARGET_DATE的值为你需要执行任务的日期,必须严格遵循YYYY-MM-DD格式。 - 日期格式适配:通过
date /t获取系统日期后重组为标准格式,若你的系统日期格式不是MM/DD/YYYY,需调整for /f中的tokens顺序(例如系统日期为YYYY/MM/DD时,改为set "CURRENT_DATE=%%a-%%b-%%c")。 - 等待触发机制:日期不匹配时,脚本会每隔60秒自动检查一次系统日期,直到日期符合条件才启动推流任务。
- 优化文件列表生成:仅在
list.txt不存在时扫描生成MP4列表,避免重复消耗系统资源。
注意事项
- 确保FFmpeg已加入系统环境变量,或在脚本中使用FFmpeg的完整路径(如
"C:\ffmpeg\bin\ffmpeg.exe")。 - 若需要限定执行时间段,可在日期判断通过后添加时间校验逻辑(例如对比当前小时数)。
- 脚本运行后会持续执行推流任务,需手动关闭控制台终止。
内容的提问来源于stack exchange,提问作者จักรพรรดิ สายดํา
相关产品推荐
相关产品推荐

