You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现每日指定时间点自动停止ffmpeg流传输

使用-t参数配置时,流会在运行指定秒数后自动停止,比如下面的示例命令配置了流运行3600秒(1小时)后自动终止:

ffmpeg -f dshow -i video="Virtual-Camera" -preset ultrafast -vcodec libx264 -tune zerolatency -b 900k \
-f mpegts -t 3600 udp://10.1.0.102:1234

原生功能可行性

无法仅依靠ffmpeg原生功能实现“指定时刻自动停流”的需求:

  • ffmpeg的时长参数不支持表达式计算,类似-t (1+1)的写法不会被解析为-t 2,参数只会按照固定的时长语法规则解析。
  • ffmpeg自带的表达式求值能力仅在滤镜场景下生效,无法作用于-t这类控制运行时长的全局参数。

替代实现方案

可以通过bash脚本提前计算当前时间到目标停止时刻的剩余秒数,再将计算结果传入-t参数,即可实现指定时刻自动停流。以下是配置流在凌晨01:00自动停止的示例脚本:

# 当日时间基准,固定为当日最后一秒
time_to_stop="23:59:59"
# 次日时间偏移:凌晨1点距离0点为3600秒,加1秒做冗余,合计3601秒
# 若要设置当日时刻停止,将该值设为0,同时修改time_to_stop为目标时间即可
offset_tomorrow=3601

# 计算距离目标停止时刻的剩余运行秒数
seconds_to_stop=$((`date -d$time_to_stop '+%s'`-`date '+%s'` + $offset_tomorrow))

# 启动推流,到达计算时长后自动停止
ffmpeg -f dshow -i video="Virtual-Camera" -preset ultrafast -vcodec libx264 -tune zerolatency -b 900k \
-f mpegts -t $seconds_to_stop udp://10.1.0.102:1234

脚本适配提示:如果需要设置当日15:30停止推流,只需把time_to_stop改为"15:30:00",offset_tomorrow设为0即可;如果需要设置次日凌晨3点停止,保持time_to_stop为"23:59:59",将offset_tomorrow改为10801(3小时对应10800秒+1秒冗余)即可。

内容的提问来源于stack exchange,提问作者drake7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 01:01:00