我正在尝试从 cron 作业运行 VLC headless。这个想法是每两分钟从 RTSP 流中抓取单个图像,然后(稍后在另一个脚本中)将它们 ftp 到远程机器。我使用的命令行是(为了清楚起见添加了换行符):
vlc -I dummy rtsp://somesourceaddress/
--rate=1 --vout=dummy
--video-filter=scene --start-time=0 --stop-time=1 --scene-format=png --scene-prefix=img1 --scene-path=/tmp/ --scene-replace
vlc://quit
然而,虽然这在 X 会话内的终端窗口中运行得很好,但从 cron 运行它会导致以下错误消息:
[0x81d1154] inhibit interface error: Failed to connect to the D-Bus
session daemon: Unable to autolaunch a dbus-daemon
without a $DISPLAY for X11
[0x81d1154] main interface error: no suitable interface module
[0x81d15fc] main interface error: no suitable interface module
[0x80503fc] main libvlc error: interface "globalhotkeys,none"
initialization failed
[0x81d15fc] dummy interface: using the dummy interface module...
那么,如果$DISPLAY 没有合适的值,我可以从哪里获取合适的值呢?或者如何手动创建 DBUS 连接?
答案1
这些错误真的是致命的吗?即你还能得到你想要的输出吗?
- 错误
$DISPLAY
消息可能只涉及屏幕保护程序抑制,添加--no-disable-screensaver
可以解决它(否则你可能可以忽略它,它是非致命的)。 VLC 不需要 D-Bus 连接来完成您想要做的事情。 - 您也可以尝试使用
cvlc
,它显然不使用任何接口(这听起来像是相关的)。