VLC命令停止录制流

5
首先,感谢阅读这篇文章的每一个人。 使用给定的命令我能够将来自IP CAM的流保存到文件中(尽管我无法录制音频到文件中,如果有人能帮忙解决那就太好了)。
cvlc "http://***.***.*.***:****/videostream.asf?user=admin&pwd=**&rate=12&resolution=32" --run-time=10 --sout="#std{access=file,mux=asf,dst=path\test.asf}" vlc://quit --qt-start-minimized --no-qt-notification
这使我得到了7~8秒长的录音,但我想要制作的视频的长度将由外部因素(摄像头的移动检测警报)确定。如果我删除“--run-time”,它会开始无限期地录制,那么我该如何告诉VLC停止保存流呢? PS:我想要自动化这个过程,所以我只使用命令行。 PS2:我正在使用Ubuntu操作系统。
非常感谢大家!

你最终解决了这个问题吗?我也遇到了类似的问题。谢谢您的帮助。 - Rob Sealey
@RobSealey 不是很确定。 - Gustavo Sgarbi Campos
2个回答

2

我绝不是这个主题的专家,但我也正在捕获一个实时流以在特定时间开始和停止。我不知道音频问题,但这是我的代码,也许它对你有所帮助。

at 2014-05-23 10:00
cvlc "http://*My url to video stream*" --sout file/mp4:*THEFILENAMEYOUCHOOSE*.mp4 --run-time=300 --stop-time=300 vlc://quit

基本上,我使用运行时间和停止时间开关来确保在需要停止时停止录制。300秒相当于将近一个半小时的视频,对我的需求来说已经足够了。我遇到了一些自动编写脚本的问题,所以目前我只能手动输入命令来设置录制,这不是最理想的情况。希望这能对你有所帮助。

1
稍后但如果有人正在寻找脚本,这是我在Debian/Ubuntu基础的紧凑记录器中的服务:
首先,在/bin/usr/rec.sh中创建一个bash脚本。
将此脚本放置在那里,并使用sudo nano /usr/bin/rec.sh命令进行编辑:
#!/bin/bash
while :
        do
        raiz=$(date +'/logger/%Y/%m/%d/')
        saida=$(date +'/logger/%Y/%m/%d/%H%M%S.opus')
        read min sec <<<$(date +'%M %S')
        duracao=$((3600 - 10#$min*60 - 10#$sec))
        duracao=60
        echo "Starting new hour loging..."
        echo "$saida"
        echo "$duracao"
        mkdir -p "$raiz"
        vlc **your url here** --no-repeat --no-loop -I dummy --run-time="$duracao" --sout "#transcode{vcodec=none,acodec=opus,ab=64,channels=2,samplerate=48000,afilter=normvol,scodec=none}:std{access=file{no-overwrite},mux=ogg,dst='$saida'}" vlc://quit
        echo "Done a hour logged!"
        done

将可执行权限添加至/usr/bin/rec.sh: sudo chmod +x /usr/bin/rec.sh 因此,您需要为脚本创建一个Systemd服务。
sudo nano /lib/systemd/system/rec.service 

这个示例可以帮助你:
[Unit]
Description=URL logger service

[Service]
ExecStart=/usr/bin/rec.sh

[Install]
WantedBy=multi-user.target

重新加载systemd:
sudo systemctl daemon-reload 

启用服务: sudo systemctl enable shellscript.service sudo systemctl start shellscript.service 检查状态:
sudo systemctl status shellscript.service 

提醒:默认情况下,cvlc不以root身份运行。以下是解决方法:
 sudo sed -i 's/geteuid/getppid/' /usr/bin/vlc

这项服务将记录URL并将音频转码为OPUS格式,存储在/logger目录下,按年/月/日/HMS.opus(从记录开始)分隔。每个新文件每小时开始一次。
希望能对某些人有所帮助。
参考: https://tecadmin.net/run-shell-script-as-systemd-service/https://www.tecmint.com/run-vlc-media-player-as-root-in-linux/ 抱歉我的英语不好。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接