Windows VLC将流保存到文件

Windows VLC将流保存到文件,windows,batch-file,stream,record,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/${n

我只是坚持创建一个用于录制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
:: 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
我从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。批处理是从本地管理员打开的

完整文件如下所示:

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
:: 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命令不正确:它应该是“源捕获-转码”格式,反之亦然。请跟随,另见。同样,命令输出取决于使用的VLC版本。较旧版本的VLC2.2.2可以从Cmd更好地工作,并允许在没有输出错误的情况下使用

通常,在尝试从批处理启动VLC之前,请尝试在Windows via中使用相同的转码选项,并查看它是否能够正确捕获和转码输出,以及CPU负载。更多信息,请参见命令示例。考虑转码到H264或较新的编解码器格式,以较小的文件大小。 在高CPU负载的情况下,另一种选择是尝试Windows的最新版本,因为与VLC相比,CPU负载更低,转码质量更高。通过他们的论坛查看正确的代码转换命令。注意,VLC也使用FFMPEG包,但使用的是旧版本。Windows FFMPEG版本使用DirectShow捕获USB网络摄像头输入,因此典型的命令看起来与Linux版本不同,但对于IPCams可能类似

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

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

根据您的IPCam型号,检查URL捕获字符串是否正确。另请参阅。

感谢@sambul35,以防有人需要Linux帮助。您可以使用此命令记录来自HTTP服务器的实时流并保存到文件:-

vlc "http://{http_server_uri}" --sout="#duplicate{dst=std{access=file,mux=avi,dst='{destination}/{filename}.avi'},dst=nodisplay}"

那么现在你是在用windows pc来做这件事吗?使用windows有很多原因,不仅仅是CCTV。是的,Windows服务器2k8 r2。