我试图通过 crontab 中的 vlc 自动启动和停止 rtps 流:
sudo crontab -e
15 9 * * * vlc -vvv rtsp://user:pwd@xxx.xxx.xxx:xxx/stream1
Run Code Online (Sandbox Code Playgroud)
和
nano /etc/crontab
14 9 * * * camera vlc -vvv rtsp://admin:TmT01@80.112.134.3:554/stream1
Run Code Online (Sandbox Code Playgroud)
如果我将命令粘贴到终端中,则流打开时不会出现问题,但是当我通过以这种方式使其成为 cronjob 并在未来安排 2 分钟进行测试来测试它时,没有任何反应。
我做错了什么或者有人可以帮助我吗?
这是因为 crontab 作业没有连接到您的桌面。crontab 的目的是运行无头作业——没有任何交互式输出或图形显示,并且只将消息记录到文件中。Crontab 与您的图形显示没有任何联系。但是,您可以尝试通过设置DISPLAY环境变量来提供有关您的显示器的信息。
像这样的事情可能会奏效:
* * * * * DISPLAY=:0.0 vlc -vvv rtsp://your.url 2>&1 > /tmp/vlc.log
Run Code Online (Sandbox Code Playgroud)
请注意,您仍然无法看到你当前终端的VLC输出- crontab的运行时间表,而无需任何想法你当前的终端或终端仿真器是什么。因此,如果您想要详细信息或日志记录,您应该将输出保存到文件中。
后记:Erik 是对的,如果您的命令是由 root 启动的,您还需要处理 XAUTHORITY。但是,如果您从自己的 crontab 启动 vlc,则不必这样做。