我有一个使用网络摄像头录制视频的设备ffmpeg
。它工作得很好,当开始录制时,我会收到 USR1 信号。停止录制后,我们会收到 USR2 信号。
但我想在1小时录音时间后停止录音。
我不知道,但我认为我必须在 1 小时后将 USR2 信号传递给设备。
那么我该怎么做...!!!
提前致谢。
答案1
使用该-t
选项。来自man ffmpeg
:
-t
持续时间(输入/输出)当用作输入选项时(在 之前
-i
),限制期间从输入文件读取的数据。当用作输出选项(在输出文件名之前)时,在输出持续时间达到后停止写入输出期间。
期间必须是时间持续时间规范,请参阅ffmpeg-utils(1) 手册中的时间持续时间部分。
-to
并且-t
互相排斥且-t
具有优先权。
录制一小时的示例:
ffmpeg -f v4l2 -i /dev/video0 -t 01:00:00 output
或者以秒为单位:
ffmpeg -f v4l2 -i /dev/video0 -t 3600 output
答案2
如果您从命令行运行 ffmpeg 或 avconv,则可以使用以下timeout
命令:
timeout 3600 avconv -f video4linux2 -r 25 -i /dev/video0 -vcodec mpeg4 -y out.mp4
答案3
如果你提前知道超时,你肯定应该使用给出的方法,但是,如果你真的想向进程发送信号,你可以使用杀命令(尽管 90% 用于 TERM 或 KILL,但可以发送任何信号 - kill -s USR2 pid)