我是MS批次(棒球)中的noobie。我需要通过VLC保存一些流媒体到文件。 这个脚本对我有用:
@echo off
"C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" "http://STREAM" --sout=#transcode{vcodec=h264,vb=1400,scale=1,acodec=mpga,ab=192,channels=2,deinterlace}:file{dst="D:\SOMEFILE.mp4"}
但我需要在N秒后停止录音。所以我认为最好的方法是获得这个过程的pid并运行
timeout /t 120 /nobreak
taskkill /t /pid %PID%
为此,我找到了一些解决方案:
@echo off
set "exe=C:\Program Files (x86)\VideoLAN\VLC\vlc.exe"
set "source=http://STREAM"
set "save-cmd=--sout=#transcode{vcodec=h264,vb=1400,scale=1,acodec=mpga,ab=192,channels=2,deinterlace}:file{dst="D:\SOMEFILE.mp4"}"
for /f "tokens=2 delims==; " %%a in ('wmic process call create '"%exe%" "%source%" %save-cmd%' ^| find "ProcessId"') do set PID=%%a
echo "%PID%"
timeout /t 120 /nobreak
taskkill /t /pid %PID%
我得到PID,但VLC以正常方式开放(不做任何事),因为我只是运行C:\Program Files (x86)\VideoLAN\VLC\vlc.exe
如何使用参数运行programm并获取它的PID? 谢谢!
答案 0 :(得分:3)
根据VLC forums,您可以使用--run-time
和--stop-time
参数在指定的时间后关闭VLC。
例如,添加--run-time 120 --stop-time=120 vlc://quit
将在2小时后退出
更新了脚本:
@echo off
"C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" "http://STREAM" --sout=#transcode{vcodec=h264,vb=1400,scale=1,acodec=mpga,ab=192,channels=2,deinterlace}:file{dst="D:\SOMEFILE.mp4"} --run-time 120 --stop-time=120 vlc://quit