2016-04-06 59 views
5

Ho appena bloccato la creazione di un file batch per il flusso di registrazione da CCTV. In precedenza questo funziona su server di Ubuntu in codice come questo:VLC salva il flusso sul file

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://[email protected]@cam_ip/cgi-bin/cmd/encoder?&${analog[$i]}&GET_STREAM" --http-reconnect --http-continuous --sout-mux-caching=1500 --udp-caching=6000 --tcp-caching=6000 

ho ricevuto flusso HTTP dalla macchina fotografica in MJPG, che posso aprire da cmd utilizzare questo

vlc.exe "http://[email protected]@cam_ip/cgi-bin/cmd/encoder?&$CHANNEL=1&GET_STREAM" 

Ma ho attaccato quando si cerca di salvarlo in un file l'aggiunta di questo comando precedente:

--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 è aperto, ma senza uscita video e file in percorso. Disco F è HDD locale, login e password è giusto per la cam. Il batch viene aperto dall'amministratore locale.

file completo si presenta così:

:: 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://[email protected]@cam_ip/cgi-bin/cmd/encoder?&$%analog%&GET_STREAM" --http-reconnect --http-continuous --sout-mux-caching=1500 --udp-caching=6000 --tcp-caching=6000 
+1

Quindi al momento stai utilizzando un PC Windows per farlo? – Jonas

+1

C'è un sacco di motivi per usare Windows, non solo CCTV. Quindi, sì - Windows Server 2k8 r2. –

risposta

1

Il comando VLC non è corretto: dovrebbe essere nel "catturare fonte - transcodifica" formato, non viceversa. Pls segue Streaming HowTo/Command Line Examples, vedere anche FLV support. Inoltre, l'output del comando dipende dalla versione VLC utilizzata. La versione VLC2.2.2 precedente potrebbe funzionare meglio da Cmd e consente di utilizzare VLM Config file senza errori di output.

In genere, prima di provare a lanciare VLC da un batch, provare a utilizzare le stesse opzioni di transcodifica in Windows tramite VLC GUI e verificare se è in grado di acquisire e transcodificare correttamente l'output e quale sarà il carico della CPU. Segui gli esempi di comando transcode, altro here. Prendi in considerazione la transcodifica in H264 o i nuovi formati di codec per file di dimensioni più ridotte.

In caso di carico elevato della CPU, in alternativa provare la versione FFMpeg Zeranoe più recente per Windows a causa del carico della CPU spesso inferiore e della qualità di transcodifica superiore rispetto a VLC. Guarda attraverso il loro forum per i comandi di transcodifica corretta examples. Nota, VLC usa anche il pacchetto FFMPEG, ma una versione precedente. Le build FFMPEG di Windows usano DirectShow per catturare l'ingresso della webcam USB, quindi i comandi tipici sembrano diversi da quelli di Linux, ma potrebbero sembrare simili per IPCam.

per un particolare modello IPCam un file batch capture flusso molto di base eseguito dalla cartella FFMPEG \ bin può apparire come questo (non testato, ma funziona per il mio modello IPCam con una stringa URL modificato):

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

altro tipico esempio di comando per una cattura 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 

Controllare Camera Connection Database per correggere le stringhe di cattura degli URL a seconda del modello IPCam. Vedi anche Transcoding MJPEG to FLV or MP4.