Page 1 of 1

[SOLVED] command line record

Posted: 03 Oct 2011 15:09
by rainbowcrypt
Hi,
I know there is a lot of informations on the net about recording with vlc, but I can't record my streams.
I want to record dvb-t stream. Of course I want only one channel (program), but within this channel I want every audio/video/subtitles(teletext or dvb). And that's subtitles that give me some troubles!
I carefully read this : http://www.videolan.org/doc/streaming-h ... /ch09.html and this : http://www.videolan.org/doc/streaming-h ... /ch03.html

When I do, for exemple

Code: Select all

vlc dvb:// --ts-es-id-pid --dvb-frequency=506000000 --dvb-adapter=0 --dvb-bandwidth=8 --programs=513,519 --sout-mux-caching=1000 --sout-spu --sout="#duplicate{dst=std{mux=ts,dst=/usr/home/jmi/Documents/video/testF4.ts,access=file},select="program=519"}"
I have audio/video but no subtitles (that are teletext on this channel). I precise that "513" in "--programs=513,519" (513 is the first sid of this multiplex) is mandatory, otherwise the record is blank.

When I add

Code: Select all

dst=display,select="program=519"
in the duplicate parameter, I see the video (of course) and I have access to subtitles.
So it seems to me that the problem is the mux=ts method. I tried with some raw/dump-file parameters, but this lead me to ~kB recording file!

The only way to have audio/video/teletext-subtitles is to click on the "red button" when I directly look at the program. But I want to be able to do it with the command line (in order to use it in a script)
So the question is :
What does the "red button" do that command line can't do??
In other word : what is exactly the command behind this red button?

Thanks,

Re: command line record

Posted: 03 Oct 2011 15:26
by Jean-Baptiste Kempf
You don't need duplicate on your first line... Use --sout=select{program=519}:std={mux... or something of the like.

Re: command line record

Posted: 03 Oct 2011 16:33
by rainbowcrypt
thanks,
I already tried with "#standard" in place of "#duplicate" (since I do not duplicate, at this time, but in the future, maybe...) and it doesn't work.

I tried what you suggest, the problem is the "something of the like" :). So here are my tries with several combinations of # and "" :

Code: Select all

vlc dvb:// --ts-es-id-pid --dvb-frequency=506000000 --dvb-adapter=0 --dvb-bandwidth=8 --programs=513,519 --sout-mux-caching=1000 --sout-spu --sout=select{program=519}:std={mux=ts,dst=/usr/home/jmi/Documents/video/testF4.ts,access=file},select="program=519"} vlc dvb:// --ts-es-id-pid --dvb-frequency=506000000 --dvb-adapter=0 --dvb-bandwidth=8 --programs=513,519 --sout-mux-caching=1000 --sout-spu --sout=select{program=519}:standard{mux=ts,dst=/usr/home/jmi/Documents/video/testF4.ts,access=file} vlc dvb:// --ts-es-id-pid --dvb-frequency=506000000 --dvb-adapter=0 --dvb-bandwidth=8 --programs=513,519 --sout-mux-caching=1000 --sout-spu --sout="#standard{mux=ts,dst=/usr/home/jmi/Documents/video/testF4.ts,access=file},select="program=519"" vlc dvb:// --ts-es-id-pid --dvb-frequency=506000000 --dvb-adapter=0 --dvb-bandwidth=8 --programs=513,519 --sout-mux-caching=1000 --sout-spu --sout="#standard{mux=ts,dst=/usr/home/jmi/Documents/video/testF4.ts,access=file,select="program=519"}" vlc dvb:// --ts-es-id-pid --dvb-frequency=506000000 --dvb-adapter=0 --dvb-bandwidth=8 --programs=513,519 --sout-mux-caching=1000 --sout-spu --sout="#select{program=519}":"#standard{mux=ts,dst=/usr/home/jmi/Documents/video/testF4.ts,access=file,select="program=519"}" vlc dvb:// --ts-es-id-pid --dvb-frequency=506000000 --dvb-adapter=0 --dvb-bandwidth=8 --programs=513,519 --sout-mux-caching=1000 --sout-spu --sout="#select{program=519}:#standard{mux=ts,dst=/usr/home/jmi/Documents/video/testF4.ts,access=file}" vlc dvb:// --ts-es-id-pid --dvb-frequency=506000000 --dvb-adapter=0 --dvb-bandwidth=8 --programs=513,519 --sout-mux-caching=1000 --sout-spu --sout=select{program=519}:std{mux=ts,dst=/usr/home/jmi/Documents/video/testF4.ts,access=file} vlc dvb:// --ts-es-id-pid --dvb-frequency=506000000 --dvb-adapter=0 --dvb-bandwidth=8 --programs=513,519 --sout-mux-caching=1000 --sout-spu --sout "#select{program=519}:std{mux=ts,dst=/usr/home/jmi/Documents/video/testF4.ts,access=file}" vlc dvb:// --ts-es-id-pid --dvb-frequency=506000000 --dvb-adapter=0 --dvb-bandwidth=8 --programs=513,519 --sout-mux-caching=1000 --sout-spu --sout="#select{program=519}:std{mux=ts,dst=/usr/home/jmi/Documents/video/testF4.ts,access=file}"


The answer is :

Code: Select all

main stream output error: stream chain failed for `....' main input error: cannot start stream output instance, aborting
In fact, "select" is not in the "list of the modules currently available: " (source http://www.videolan.org/doc/streaming-h ... /ch03.html top of the page) which certainly explain why the stream chain fails?
BTW even if I don't "select" a program nor programs, and I do --sout="#standard", I still have no subtitles!

[EDIT]
Perhaps I should add something : there is no problem with dvb-subtitles, it's just the teletex-subtitles that are not recorded!
[\EDIT]

[EDIT2]
Ok, after writting the previous EDIT, I searched on google for "vlc stream teletext" and I found this page : http://wiki.videolan.org/VLC_command-line_help and the option :

Code: Select all

--ts-split-es, --no-ts-split-es Separate sub-streams (default enabled) Separate teletex/dvbs pages into independent ES. It can be useful to turn off this option when using stream output. (default enabled)
So I added "no-ts-split-es" to the command line, and it's now ok!!
So the command is :

Code: Select all

vlc dvb:// --ts-es-id-pid --dvb-frequency=506000000 --dvb-adapter=0 --dvb-bandwidth=8 --programs=513,519 --sout-mux-caching=1000 --sout-spu --no-ts-split-es --sout="#duplicate{dst=std{mux=ts,dst=/usr/home/jmi/Documents/video/testF4.ts,access=file},select="program=519"}"
I keep the "duplicate" thing for futur multi-recording.
I still not understand why I need to add the first program of the multiplex (here 513) to make it works, but it's not so important.

So problem solved! Thanks :mrgreen:
[\EDIT2]