[vlc] Re: VLC Input from Pipe

Angus Davis angus at tellme.com
Tue Nov 8 02:07:40 CET 2005


Peter Martin wrote:

>> What I am trying to do is send MPEG2TS data from the output of one 
>> program immediately into VLC for streaming without having to record 
>> it to a file.  I must just be missing something elementary.  Clearly 
>> the way I am invoking VLC is causing it to interpret the output from 
>> the other program as an input to its "Remote Control" interface -- 
>> should I be using a different interface?
>
> Yes, I use --intf=dummy to get this to work.

Thanks, that was helpful, but I am still not having success.   My syntax is:

cat stream.ts | vlc --intf=dummy --rc-fake-tty -vvv /dev/stdin --sout 
'#standard{access=http,mux=ts,url=10.0.1.197:8080}'

in lieu of "-vvv /dev/stdin/" I have also tried (none worked):
stream:///dev/stdin
file://dev/stdin
file://-

Here is the typical display of messages leading up to the seg fault:

[... ] ...
[00000231] main module debug: using sout stream module "stream_out_standard"
[00000254] main input debug: `stream:///dev/stdin' gives access `stream' 
demux `' path `/dev/stdin'
[00000254] main input debug: creating demux: access='stream' demux='' 
path='/dev/stdin'
[00000263] main demuxer debug: looking for access_demux module: 0 candidates
[00000263] main demuxer warning: no access_demux module matched "stream"
[00000254] main input debug: creating access 'stream' path='/dev/stdin'
[00000264] main access debug: looking for access2 module: 4 candidates
[00000264] access_file access debug: opening file `/dev/stdin'
[00000017] main module debug: using access2 module "access_file"
[00000266] main private debug: pre buffering
[00000266] main private debug: received first data for our buffer
[00000266] main private debug: prebuffering done 1400832 bytes in 0s - 
105149 kbytes/s
[00000254] main input debug: creating demux: access='stream' demux='' 
path='/dev/stdin'
[00000267] main demuxer debug: looking for demux2 module: 37 candidates
[00000267] main demuxer debug: looking for id3 module: 1 candidate
[00000267] id3 demuxer debug: checking for ID3 tag
[00000154] main module debug: using id3 module "id3"
[00000154] main module debug: unlocking module "id3"
Segmentation fault

When I run VLC with the filename, it does not fault, and at the moment 
where it faults using /dev/stdin, VLC using the filename would have printed:
[00000169] main module debug: using demux2 module "ts"
[00000267] ts demuxer debug: DEMUX_SET_GROUP 0 (nil)
[00000254] main input debug: starting in synch mode
[00000254] main input debug: `file://stream.ts' sucessfully opened

So, to summarize, this works fine:
vlc --intf=dummy --rc-fake-tty -vvv file://stream.ts --sout 
'#standard{access=http,mux=ts,url=10.0.1.197:8080}'

... yet this does not:
cat stream.ts | vlc --intf=dummy --rc-fake-tty -vvv stream:///dev/stdin 
--sout '#standard{access=http,mux=ts,url=10.0.1.197:8080}'

I get the sense that VLC is able to look at stream.ts and figure out 
which demuxer to use ("using demux2 module "ts"") yet when handing VLC 
this info from /dev/stdin, I need to do something to help VLC know that 
the data it is seeing should use that demuxer.  I will now investigate 
whether there is a command line option to specify the "demux2 module"

Any advice here on what I ought to be doing to get this to work?
-angus

-- 
This is the vlc mailing-list, see http://www.videolan.org/vlc/
To unsubscribe, please read http://www.videolan.org/support/lists.html



More information about the vlc mailing list