windows - VLC 保存流到文件

标签 windows batch-file stream record vlc

我只是坚持创建用于从 CCTV 录制流的批处理文件。 以前这适用于 Ubuntu 服务器,代码如下:

cvlc -d --sout "#transcode{vcodec=FLV1,vb=512,fps=3,acodec=none,sfilter=marq{marquee='АБК %d.%m.%Y %H.%M.%S',opacity=200,size=20}}:std{access=file,mux=ffmpeg{mux=flv},dst=/storage/surveillance/$date/${name[$i]}/$curdate.flv}" --ttl=127 "http://cameralogin@camerapassword@cam_ip/cgi-bin/cmd/encoder?&${analog[$i]}&GET_STREAM" --http-reconnect --http-continuous --sout-mux-caching=1500 --udp-caching=6000 --tcp-caching=6000

我从 MJPG 中的相机获得了 HTTP 流,我可以使用它从 cmd 打开

vlc.exe "http://cameralogin@camerapassword@cam_ip/cgi-bin/cmd/encoder?&$CHANNEL=1&GET_STREAM"

但是当我试图将它保存到文件时我卡住了,将它添加到之前的命令中:

--sout "#transcode{vcodec=FLV1,vb=512,fps=3,acodec=none,sfilter=marq{marquee='АБК %date% %time%',opacity=200,size=20}}:std{access=file,mux=ffmpeg{mux=flv},dst=%archive%\%name%\%date%\%time%.flv}" 

VLC 已打开,但路径中没有视频输出和文件。 F盘是本地硬盘,登录名和密码对cam正确。批处理从本地管理员打开。

完整文件如下所示:

:: Set encoding for cyrillyc symvols
@chcp 866

:: Some vars for easy edit in future
:: Choosing cam
:: set analog=CHANNEL=1
set analog=CHANNEL=2
:: set analog=CHANNEL=3
:: set analog=CHANNEL=4

:: Choose folder to save
:: set name="2 этаж"
set name="1 этаж"
:: set name="Главный_вход"
:: set name="1 этаж 2"

:: Path to archive
set archive="F:\Archive\Охрана"

:: Move to vlc.exe folder
cd "c:\Program Files (x86)\VideoLAN\VLC"

:: Record Video
vlc.exe --sout "#transcode{vcodec=FLV1,vb=512,fps=3,acodec=none,sfilter=marq{marquee='АБК %date% %time%',opacity=200,size=20}}:std{access=file,mux=ffmpeg{mux=flv},dst=%archive%\%name%\%date%\%time%.flv}" --ttl=127 "http://cameralogin@camerapassword@cam_ip/cgi-bin/cmd/encoder?&$%analog%&GET_STREAM" --http-reconnect --http-continuous --sout-mux-caching=1500 --udp-caching=6000 --tcp-caching=6000

最佳答案

您的 VLC 命令不正确:它应该是“源捕获 - 转码”格式,反之亦然。请关注Streaming HowTo/Command Line Examples ,另见 FLV support .同样,命令输出取决于使用的 VLC 版本。旧版本 VLC2.2.2 可能在 Cmd 中运行得更好,并允许使用 VLM Config file没有输出错误。

通常,在尝试从批处理中启动 VLC 之前,请尝试通过 VLC GUI 在 Windows 中使用相同的转码选项。 ,看看它是否可以正确捕获和转码输出,以及 CPU 负载是多少。关注transcode命令示例,更多here .考虑转码为 H264 或更新的编解码器格式以获得更小的文件大小。

如果 CPU 负载较高,请尝试使用最新的 FFMpeg Zeranoe 作为替代方案为 Windows 构建,因为与 VLC 相比,CPU 负载通常更低,转码质量更高。通过他们的论坛查找正确的转码命令 examples .请注意,VLC 也使用 FFMPEG 包,但版本较旧。 Windows FFMPEG 构建使用 DirectShow 捕获 USB 网络摄像头输入,因此典型命令看起来与 Linux 构建不同,但对于 IPCams 可能看起来相似。

对于您的特定 IPCam 模型,从 FFMPEG\bin 文件夹运行的非常基本的流捕获批处理文件可能如下所示(未经测试,但适用于我的具有修改后的 URL 字符串的 IPCam 模型):

@echo off
ffmpeg -f mjpeg -i ^
 "http://login:password@cam_ip/cgi-bin/cmd/encoder?&$CHANNEL=1&GET_STREAM" ^
 -vcodec flv -q:v 1 -an K:\Videos\output.flv
exit /b

Foscam MJPEG IPCam 捕获的另一个典型命令示例:

ffmpeg -f mjpeg -i "http://Cam_IP:8080/videostream.cgi?user=[login]&pwd=[password]" ^
 -vcodec flv -q:v 1 -an K:\Videos\output.flv

检查 Camera Connection Database根据您的 IPCam 型号获取正确的 URL 捕获字符串。另见 Transcoding MJPEG to FLV or MP4 .

关于windows - VLC 保存流到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36447596/

相关文章:

Windows 批处理变量不会设置

r - 错误: 'dir' command not found while using System function in R

windows - 从一个批处理文件同时静默运行多个 .exe 文件

Windows 批处理文件回显特定行号

java - 由于 "input line is too long",在 Windows 上运行 .bat 文件时出现问题

javascript - 为什么我可以插入可读流?

windows - 如何在Windows中的bat脚本中将输出直接输出到txt文件

windows - 我可以通过双击阻止执行 Windows 批处理文件吗?

java - 写入 servlet 流

python - 如何将Python的日志输出重定向到Kivy标签?