[vlc-devel] (no subject)
Jeremy Vignelles
jeremy.vignelles at dev3i.fr
Thu Oct 12 15:56:06 CEST 2017
> Le 12 octobre 2017 à 12:04, Jeremy Vignelles <jeremy.vignelles at dev3i.fr> a écrit :
>
> > Le 12 octobre 2017 à 11:35, Rémi Denis-Courmont <remi at remlab.net> a écrit :
> >
> > Le 12 octobre 2017 12:17:00 GMT+03:00, "Jérémy VIGNELLES" <jeremy.vignelles at dev3i.fr> a écrit :
> >
> > > Use case
> > >
> > > ---
> > >
> > > I need a way to record permanently a CCTV camera in a rolling buffer
> > > of,
> > > say, 1 day. As far as I know, this is not possible currently with VLC.
> > >
> > > I have seen the ticket #561, opened 12 years ago, which asks
> > > for a similar feature.
> > >
> > > A "cycle" stream output plugin has been implemented, but it works in a
> > > different way : predefine a loop of files and write in them
> > > alternatively.
> > >
> > > My implementation differs from the "cycle" module in the way that
> > > nothing
> > > is overwritten, and it's up to an external hypervisor to retain or
> > > remove
> > > files as needed.
> > >
> > > How does it work
> > >
> > > ---
> > > MPEG-TS is a muxing format in which blocks are normally 188 bytes long
> > > (VLC can do "unaligned" blocks). Starting a file from any of the blocks
> > > gives a valid MPEG-TS stream.
> > >
> > > Based on that statement, the idea is to fill a file with blocks, until
> > > a
> > > limit is reached, and then switch between files between two blocks.
> > >
> > > MPEG-TS also has an option to specify a key, so that the stream can be
> > > encrypted, which is useful when working on sensitive stream, like in
> > > CCTV
> > > scenarios.
> > >
> > > Configuration parameters
> > >
> > > ---
> > > dst= in the sout chain specifies the directory to which files are
> > > written.
> > >
> > > The file name can be formatted using the
> > > --sout-segments-format specifier, which takes strftime format as
> > > argument
> > >
> > > --sout-segments-max-filesize limits the file size before
> > > which we need to switch files. Defaults to 94MB, which is a round
> > > number
> > > of 188-bytes blocks.
> > >
> > > Example usage
> > >
> > > ---
> > > vlc -vv
> > > --sout="#std{access=segments,mux=ts,dst=/path/to/recording/folder}" \
> > > --sout-segments-format "%Y%m%d%H%M%S.ts" --sout-max-filesize 1880000 \
> > > --sout-ts-crypt-audio --sout-ts-crypt-video --sout-ts-csa-ck
> > > 0123456789ABCDEF \
> > > rtsp://192.168.0.3/axis-media/media.amp
> > >
> > > Example replaying
> > > cat /path/to/recording/folder/*.ts | vlc --ts-csa-ck 0123456789ABCDEF -
> > >
> > > Or you can just play one by one.
> > >
> > > Caveats
> > >
> > > ---
> > >
> > > * The file format can only be precise in seconds, due to the way
> > > strftime
> > > works. If the max-filesize represents less than 1 second of video,
> > > there
> > > is a risk that two files have the same name, and thus, the second
> > > will be overwriting the first one
> > > * Obviously, it does only work with MPEG-TS stream and was optimized
> > > for that
> > > muxer. There is no check that the stream is actually muxed with
> > > MPEG-TS.
> > > * There is no guarantee that the first block in a file contains a
> > > I-frame.
> > > When replaying, there can be a latency before anything is shown on the
> > > screen.
> > >
> > > Closing
> > >
> > > ---
> > > Please send me your (kind) remarks about this code, about my usage
> > > example
> > > ("You could have done this that way!")...
> > >
> > > Regards,
> > > Jérémy VIGNELLES
> > >
> > > _______________________________________________
> > > vlc-devel mailing list
> > > To unsubscribe or modify your subscription options:
> > > https://mailman.videolan.org/listinfo/vlc-devel
> >
> > I don't see how the described functionality is any different from cycling with a single entry per cycle. The existing cycle module is perfectly able to output a different file at every iteration when combined with the file output module time format function.
> > --
> > Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.
> >
> > _______________________________________________
> > vlc-devel mailing list
> > To unsubscribe or modify your subscription options:
> > https://mailman.videolan.org/listinfo/vlc-devel
>
> Hi,
> I didn't know you could do that. What is the syntax to do that?
>
> ./vlc -vv --sout="#cycle{dst=std{mux=ts,access=file,dst=/c/Users/JeremyVignelles/Desktop/rec/%Y%m%d%H%M%S.ts},duration=30s}" --sout-file-format --sout-ts-crypt-audio --sout-ts-crypt-video --sout-ts-csa-ck 0123456789ABCDEF rtsp://root:pass@10.10.210.101/mpeg4/media.amp
>
> This line falls in an infinite loop...
>
> The only difference I see between my code and the cycle is the unit of the limit, and in my case I can use both, so I give up the idea of merging this plugin.
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
My bad, It's not in an infinite loop, it's in a very long loop because the gap before reaching the DTS by incrementing 30s is too big and requires many loops. I'm trying to make a patch for this.
More information about the vlc-devel
mailing list