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

如何让FFPLAY播放IP摄像头流指定时长后自动退出?

解决FFPLAY播放RTSP流无法自动退出的问题

问题背景

在树莓派连接HDMI显示器的场景下,使用FFPLAY播放IP摄像头RTSP流时,窗口布局、缩放功能正常,但通过-t参数指定自动退出时间后,画面会在指定时间冻结,但FFPLAY进程仍持续运行,无法自动退出;通过FFMPEG管道输出到FFPLAY的方式也存在同样问题。

可行解决方案

方案1:使用系统timeout命令强制终止进程

由于RTSP属于实时流(无固定时长),FFPLAY的-t参数依赖输入流的时长信息,因此无法正常触发自动退出。直接使用系统级的timeout命令强制限制FFPLAY的运行时间,是最可靠的方式:

timeout 10 env DISPLAY=:0 ffplay -rtsp_transport tcp -left 0 -top 0 -noborder -i rtsp://user:pass@192.168.4.157:46449/live -vf scale=480:240 -an -autoexit
  • timeout 10表示强制进程运行10秒后终止
  • 该命令不受流本身的时长特性影响,确保到点退出

方案2:完善FFMPEG管道命令,添加-autoexit参数

之前的管道命令中,FFPLAY未启用-autoexit参数,导致FFMPEG停止输出后,FFPLAY仅冻结画面但不退出。修改后的命令如下:

ffmpeg -rtsp_transport tcp -t 10 -i rtsp://user:pass@192.168.4.157:46449/live -vf scale=480:240 -an -f matroska - | env DISPLAY=:0 ffplay -left 0 -top 0 -noborder -autoexit -
  • FFPLAY的-autoexit参数会在输入流结束时自动退出进程
  • FFMPEG的-t 10确保10秒后停止输出流,触发FFPLAY的自动退出逻辑

方案3:调整FFPLAY参数,结合RTSP超时与自动退出

通过设置RTSP连接超时时间,配合-autoexit实现退出,但该方案仅适用于流在超时后中断的场景,可靠性略低于前两种:

env DISPLAY=:0 ffplay -rtsp_transport tcp -left 0 -top 0 -noborder -stimeout 10000000 -i rtsp://user:pass@192.168.4.157:46449/live -vf scale=480:240 -an -autoexit
  • -stimeout 10000000表示RTSP连接超时时间为10秒(单位:微秒)
  • 若流在超时后中断,FFPLAY会因-autoexit参数自动退出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:25:21