如何使用cron安排VLC录制?


1

我创建了以下crontab:

0/5 * * * * /Applications/VLC.app/Contents/MacOS/VLC -I rc rtp://@xxx.xxx.xxx.xxx:5050 --sout='#transcode{vcodec=h264,vb=2048,acodec=mp3,ab=192,deinterlace}:standard{mux=ts,access=file{no-overwrite},dst=/Users/me/Pictures/video.ts}' --run-time=10 --play-and-exit >> /tmp/log.txt 2>&1

但是在结果中log.txt包含以下文本 -

[00000001002300c8] [cli] lua interface: Listening on host "*console".
VLC media player 2.2.0 Weatherwax
Command Line Interface initialized. Type `help' for help.
> Shutting down.
[00000001002300c8] [cli] lua interface: Requested shutdown.

并且为空(0字节)video.ts

这有什么不对?


1
如果直接在shell中运行命令,它是否按预期工作?
nohillside

你怎么知道你使用的来源实际上是“活着的?” 最后一行说它根据用户请求“播放和退出”
Allan

@patrix,是的,它工作正常。
洛杉矶2016年

@Allan,如果我在VLC GUI中打开,该源的效果很好。或者如果我在shell中手动运行命令。我试图删除play-and-exit,但结果是一样的。
洛杉矶2016年

VLC录制直播流时遇到了很多问题。我从切换到ffmpeg,我不再有问题。我在另一个问题中引用了它。此外,最好不要让cron直接运行该作业 - 为它编写一个bash脚本。
Allan

Answers:


1

您正在使用rc(远程控制)接口,该接口需要在命令行上输入 - 即期望和交互式会话。

从cron尝试虚拟接口:

0/5 * * * * /Applications/VLC.app/Contents/MacOS/VLC -I dummy rtp://@xxx.xxx.xxx.xxx:5050 --sout='#transcode{vcodec=h264,vb=2048,acodec=mp3,ab=192,deinterlace}:standard{mux=ts,access=file{no-overwrite},dst=/Users/me/Pictures/video.ts}' --run-time=10 --play-and-exit >> /tmp/log.txt 2>&1

0

看起来像cron在执行时没有像在标准shell或shell脚本中那样设置环境变量。查看cron的联机帮助页,看看是否有其他需要在crontab中修改或添加到脚本本身的开头。例如,您可以在脚本的开头声明:SHELL=/bin/sh确保它使用正确的shell执行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.