How do I stream multiple inputs? [Fixed]

About encoding, codec settings, muxers and filter usage
ChrisHolmesOnline
Blank Cone
Blank Cone
Posts: 19
Joined: 13 Dec 2008 00:55

How do I stream multiple inputs? [Fixed]

Postby ChrisHolmesOnline » 15 Dec 2008 22:51

We have an Osprey-450 video capture card. It is capable of providing four independent inputs.

I want to multicast each input on a separate channel. I am currently capturing, transcoding, and multicasting one input stream on a multicast UDP channel via the command-line and this works fine. However, as soon as I try and start a second instance of VLC via the command-line, I get an exception. It appears that VLC is designed to only run one instance.

So my question is, how do I manage four separate capture inputs? I have read the streaming documentation; particularly the part about Multiple Streaming. But that is for taking one input stream and providing it on multiple channels. I have multiple inputs that need to be handled separately. How do I do that?
Last edited by ChrisHolmesOnline on 17 Dec 2008 00:31, edited 1 time in total.

thannoy
Big Cone-huna
Big Cone-huna
Posts: 601
Joined: 20 Mar 2008 09:44
VLC version: 0.9.8a & 1.0-git
Operating System: GNU/Linux Fedora10
Location: France
Contact:

Re: How do I stream multiple inputs?

Postby thannoy » 15 Dec 2008 23:35

Hi,

VLC is not limited to one instance, maybe only one process can access your capture card (can be the case on linux if your card exports only one device).
To manage several streams in one instance, the magic word is "VLM", you can search this word on the forum and the wiki for its usage.

ChrisHolmesOnline
Blank Cone
Blank Cone
Posts: 19
Joined: 13 Dec 2008 00:55

Re: How do I stream multiple inputs?

Postby ChrisHolmesOnline » 16 Dec 2008 00:14

So theoretically, I should be able to launch four instances of VLC and manage the four separate capture streams that way, correct?

I'm looking at VLM right now and have it running on my own machine just to see what the web GUI looks like. I'm not quite sure how it solves the problem though, since it requires adding new DTT/Satellites/Streams. I'm having a problem with VCL even giving me more than one stream right now...

thannoy
Big Cone-huna
Big Cone-huna
Posts: 601
Joined: 20 Mar 2008 09:44
VLC version: 0.9.8a & 1.0-git
Operating System: GNU/Linux Fedora10
Location: France
Contact:

Re: How do I stream multiple inputs?

Postby thannoy » 16 Dec 2008 00:44

Yes, you should be able to use four VLC instances. What says debug output?

NB1: VLM ca be used in command-line too, with a VLM config file if you didn't cross this feature.
NB2: DTT/Satellites/Stream and VCL (maybe a mistakenly written "VLM"?) are unknown to me.

ChrisHolmesOnline
Blank Cone
Blank Cone
Posts: 19
Joined: 13 Dec 2008 00:55

Re: How do I stream multiple inputs?

Postby ChrisHolmesOnline » 16 Dec 2008 00:50

I'm not sure what debug output says because it's a Windows crash, so I just get the Windows crash dialog.

Is there a way to set the logging so I can see the debug output?
VLM ca be used in command-line too, with a VLM config file if you didn't cross this feature.
Yeah, I saw that. I've been trying to find some examples. The two samples on the Wiki are pretty simplistic and I didn't want to struggle for a few hours trying to get the syntax right.
NB2: DTT/Satellites/Stream and VCL (maybe a mistakenly written "VLM"?) are unknown to me.
Yeah, I meant VLM.

thannoy
Big Cone-huna
Big Cone-huna
Posts: 601
Joined: 20 Mar 2008 09:44
VLC version: 0.9.8a & 1.0-git
Operating System: GNU/Linux Fedora10
Location: France
Contact:

Re: How do I stream multiple inputs?

Postby thannoy » 16 Dec 2008 01:21

To get debug on Windows, it shoulf be like this (1):

Code: Select all

vlc.exe -vvv --file-logging --logfile=YourVlcLogFilename yourOtherParameters
Not sure --logfile is really needed, maybe a default filename will be used.

Hope useful debugs are written before the crash.
1: http://wiki.videolan.org/VLC_command-line_help

ChrisHolmesOnline
Blank Cone
Blank Cone
Posts: 19
Joined: 13 Dec 2008 00:55

Re: How do I stream multiple inputs?

Postby ChrisHolmesOnline » 16 Dec 2008 16:55

Okay, here's what I've got for a command-line and the resulting logfile:

vlc -vvv --file-logging --logfile=errors.log -I --ttl=12 dshow:// vdev="Osprey-450 Video Device 1B" adev="Osprey-450 Audio Device 1B" size="vga" --sout="#transcode{vcodec=h264, vb=4096, scale=1, acodec=mpga, ab=1024, channels=2, audio-sync}:std{access=udp, mux=ts, dst=239.255.12.2222"}

I already have output from Video Device 1A streaming on port 1234, same multicast address and parameters. When I run this command, I get this logfile, and then it crashes:

Code: Select all

-- logger module started -- main debug: CPU has capabilities 486 586 MMX MMXEXT SSE SSE2 FPU main debug: looking for memcpy module: 3 candidates main debug: using memcpy module "memcpymmxext" main debug: waiting for thread completion main debug: thread 3744 (playlist) created at priority 0 (playlist/playlist.c:184) main debug: waiting for thread completion main debug: thread 3760 (preparser) created at priority 0 (playlist/playlist.c:210) main debug: looking for interface module: 1 candidate main debug: using interface module "hotkeys" main debug: thread 3784 (interface) created at priority 0 (interface/interface.c:231) main debug: looking for interface module: 1 candidate logger: VLC media player - version 0.8.6h Janus - (c) 1996-2008 the VideoLAN team logger: Warning: if you can't access the GUI anymore, open a command-line window, go to the directory where you installed VLC and run "vlc -I wx" logger: using logger... logger debug: opening logfile `errors.log' main debug: using interface module "logger" main debug: thread 3812 (interface) created at priority 0 (interface/interface.c:231) main debug: adding playlist item `size=vga' ( size=vga ) main debug: adding playlist item `adev=Osprey-450 Audio Device 1B' ( adev=Osprey-450 Audio Device 1B ) main debug: adding playlist item `vdev=Osprey-450 Video Device 1B' ( vdev=Osprey-450 Video Device 1B ) main debug: adding playlist item `dshow://' ( dshow:// ) main debug: looking for interface module: 3 candidates main debug: using interface module "wxwidgets" main debug: thread 3880 (manager) created at priority 0 (interface/interface.c:216) wxwidgets debug: Using last windows config '(-1,0,0,1600,1200)(0,676,299,355,94)(6,0,0,-1,150)' wxwidgets debug: id=0 p=(676,299) s=(355,94) wxwidgets debug: id=6 p=(0,0) s=(-1,150) main debug: nothing requested, starting main debug: creating new input thread main debug: waiting for thread completion main debug: creating statistics handler main debug: thread 4056 (input) created at priority 1 (input/input.c:265) main debug: stream=`transcode' main debug: looking for sout stream module: 1 candidate main debug: stream=`std' main debug: looking for sout stream module: 1 candidate main debug: set sout option: sout-standard-access to udp main debug: set sout option: sout-standard-mux to ts main debug: set sout option: sout-standard-dst to 239.255.12.42:2222 stream_out_standard debug: creating `udp/ts://239.255.12.42:2222' stream_out_standard debug: extension is 42:2222 stream_out_standard debug: extension -> mux=(null) stream_out_standard debug: using `udp/ts://239.255.12.42:2222' main debug: looking for sout access module: 1 candidate main debug: net: connecting to 239.255.12.42 port 2222 main debug: thread 4204 (sout write thread) created at priority 15 (udp.c:268) access_output_udp debug: udp access output opened(239.255.12.42:2222) main debug: using sout access module "access_output_udp" stream_out_standard debug: access opened main debug: looking for sout mux module: 1 candidate mux_ts debug: shaping=200000 pcr=70000 dts_delay=400000 main debug: using sout mux module "mux_ts" main debug: muxer support adding stream at any time stream_out_standard debug: mux opened main debug: using sout stream module "stream_out_standard" main debug: set sout option: sout-transcode-vcodec to h264 main debug: set sout option: sout-transcode-vb to 4096 main debug: set sout option: sout-transcode-scale to 1 main debug: set sout option: sout-transcode-acodec to mpga main debug: set sout option: sout-transcode-ab to 1024 main debug: set sout option: sout-transcode-channels to 2 main debug: set sout option: sout-transcode-audio-sync to (null) stream_out_transcode debug: codec audio=mpga 0Hz 2 channels 1024Kb/s stream_out_transcode debug: codec video=h264 0x0 scaling: 1.000000 4096kb/s main debug: using sout stream module "stream_out_transcode" main debug: `dshow://' gives access `dshow' demux `' path `' main debug: creating demux: access='dshow' demux='' path='' main debug: looking for access_demux module: 1 candidate dshow debug: found device: Osprey-450 Video Device 1C dshow debug: found device: Osprey-450 Video Device 1D dshow debug: found device: Osprey-450 Video Device 1A dshow debug: found device: Osprey-450 Video Device 1B dshow debug: using device: Osprey-450 Video Device 1C dshow debug: EnumDeviceCaps: output pin: Capture dshow debug: EnumDeviceCaps: output pin: Preview dshow debug: EnumDeviceCaps: output pin: CC dshow debug: EnumDeviceCaps: output pin: VBI dshow debug: EnumDeviceCaps: input pin: Analog Video In dshow debug: EnumDeviceCaps: trying pin Capture dshow debug: EnumDeviceCaps: input pin default format configured dshow debug: EnumDeviceCaps: input pin accepts chroma: I420, width:640, height:480, fps:29.970000 dshow debug: CaptureFilter::JoinFilterGraph dshow debug: connecting filters dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CapturePin::ConnectedTo [not connected] dshow debug: CapturePin::QueryPinInfo dshow debug: CaptureFilter::QueryFilterInfo dshow debug: CapturePin::QueryPinInfo dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CapturePin::QueryDirection dshow debug: CapturePin::QueryAccept [OK] (width=640, height=480, chroma=I420, fps=29.970000) dshow debug: CapturePin::ReceiveConnection [OK] dshow debug: CapturePin::Disconnect [OK] dshow debug: CapturePin::QueryDirection dshow debug: CapturePin::QueryAccept [OK] (width=640, height=480, chroma=I420, fps=29.970000) dshow debug: CapturePin::ReceiveConnection [OK] dshow debug: CapturePin::Disconnect [OK]
Last edited by ChrisHolmesOnline on 16 Dec 2008 20:32, edited 1 time in total.

ChrisHolmesOnline
Blank Cone
Blank Cone
Posts: 19
Joined: 13 Dec 2008 00:55

Re: How do I stream multiple inputs?

Postby ChrisHolmesOnline » 16 Dec 2008 17:15

This is what the logfile looks like on the A1 device (which is successful). What seems weird to me is that it first uses the C1 Video device, and then finally the A1 Video device.

Code: Select all

-- logger module started -- main debug: CPU has capabilities 486 586 MMX MMXEXT SSE SSE2 FPU main debug: looking for memcpy module: 3 candidates main debug: using memcpy module "memcpymmxext" main debug: waiting for thread completion main debug: thread 3744 (playlist) created at priority 0 (playlist/playlist.c:184) main debug: waiting for thread completion main debug: thread 3760 (preparser) created at priority 0 (playlist/playlist.c:210) main debug: looking for interface module: 1 candidate main debug: using interface module "hotkeys" main debug: thread 3784 (interface) created at priority 0 (interface/interface.c:231) main debug: looking for interface module: 1 candidate logger: VLC media player - version 0.8.6h Janus - (c) 1996-2008 the VideoLAN team logger: Warning: if you can't access the GUI anymore, open a command-line window, go to the directory where you installed VLC and run "vlc -I wx" logger: using logger... logger debug: opening logfile `a1.log' main debug: using interface module "logger" main debug: thread 3812 (interface) created at priority 0 (interface/interface.c:231) main debug: adding playlist item `size=vga' ( size=vga ) main debug: adding playlist item `adev=Osprey-450 Audio Device 1A' ( adev=Osprey-450 Audio Device 1A ) main debug: adding playlist item `vdev=Osprey-450 Video Device 1A' ( vdev=Osprey-450 Video Device 1A ) main debug: adding playlist item `dshow://' ( dshow:// ) main debug: looking for interface module: 3 candidates main debug: using interface module "wxwidgets" main debug: thread 3880 (manager) created at priority 0 (interface/interface.c:216) wxwidgets debug: Using last windows config '(-1,0,0,1600,1200)(0,676,299,355,94)(6,0,0,-1,150)' wxwidgets debug: id=0 p=(676,299) s=(355,94) wxwidgets debug: id=6 p=(0,0) s=(-1,150) main debug: nothing requested, starting main debug: creating new input thread main debug: waiting for thread completion main debug: creating statistics handler main debug: thread 4060 (input) created at priority 1 (input/input.c:265) main debug: stream=`transcode' main debug: looking for sout stream module: 1 candidate main debug: stream=`std' main debug: looking for sout stream module: 1 candidate main debug: set sout option: sout-standard-access to udp main debug: set sout option: sout-standard-mux to ts main debug: set sout option: sout-standard-dst to 239.255.12.42:1234 stream_out_standard debug: creating `udp/ts://239.255.12.42:1234' stream_out_standard debug: extension is 42:1234 stream_out_standard debug: extension -> mux=(null) stream_out_standard debug: using `udp/ts://239.255.12.42:1234' main debug: looking for sout access module: 1 candidate main debug: net: connecting to 239.255.12.42 port 1234 main debug: thread 4204 (sout write thread) created at priority 15 (udp.c:268) access_output_udp debug: udp access output opened(239.255.12.42:1234) main debug: using sout access module "access_output_udp" stream_out_standard debug: access opened main debug: looking for sout mux module: 1 candidate mux_ts debug: shaping=200000 pcr=70000 dts_delay=400000 main debug: using sout mux module "mux_ts" main debug: muxer support adding stream at any time stream_out_standard debug: mux opened main debug: using sout stream module "stream_out_standard" main debug: set sout option: sout-transcode-vcodec to h264 main debug: set sout option: sout-transcode-vb to 4096 main debug: set sout option: sout-transcode-scale to 1 main debug: set sout option: sout-transcode-acodec to mpga main debug: set sout option: sout-transcode-ab to 1024 main debug: set sout option: sout-transcode-channels to 2 main debug: set sout option: sout-transcode-audio-sync to (null) stream_out_transcode debug: codec audio=mpga 0Hz 2 channels 1024Kb/s stream_out_transcode debug: codec video=h264 0x0 scaling: 1.000000 4096kb/s main debug: using sout stream module "stream_out_transcode" main debug: `dshow://' gives access `dshow' demux `' path `' main debug: creating demux: access='dshow' demux='' path='' main debug: looking for access_demux module: 1 candidate dshow debug: found device: Osprey-450 Video Device 1C dshow debug: found device: Osprey-450 Video Device 1D dshow debug: found device: Osprey-450 Video Device 1A dshow debug: found device: Osprey-450 Video Device 1B [b]dshow debug: using device: Osprey-450 Video Device 1C[/b] //Why is it doing this? dshow debug: EnumDeviceCaps: output pin: Capture dshow debug: EnumDeviceCaps: output pin: Preview dshow debug: EnumDeviceCaps: output pin: CC dshow debug: EnumDeviceCaps: output pin: VBI dshow debug: EnumDeviceCaps: input pin: Analog Video In dshow debug: EnumDeviceCaps: trying pin Capture dshow debug: EnumDeviceCaps: input pin default format configured dshow debug: EnumDeviceCaps: input pin accepts chroma: I420, width:640, height:480, fps:29.970000 dshow debug: CaptureFilter::JoinFilterGraph dshow debug: connecting filters dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CapturePin::ConnectedTo [not connected] dshow debug: CapturePin::QueryPinInfo dshow debug: CaptureFilter::QueryFilterInfo dshow debug: CapturePin::QueryPinInfo dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CapturePin::QueryDirection dshow debug: CapturePin::QueryAccept [OK] (width=640, height=480, chroma=I420, fps=29.970000) dshow debug: CapturePin::ReceiveConnection [OK] dshow debug: CapturePin::GetAllocatorRequirements dshow debug: CapturePin::GetAllocator dshow debug: CapturePin::NotifyAllocator dshow debug: CapturePin::QueryPinInfo dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CapturePin::ConnectedTo [OK] dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryPinInfo dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CapturePin::QueryPinInfo dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CapturePin::ConnectedTo [OK] dshow debug: CaptureFilter::EnumPins dshow debug: found existing route for output 0 (type 12) to input 0 (type 2) dshow debug: crossbar at depth 0, found route for output 0 (type 12) to input 0 (type 2) dshow debug: filters connected successfully ! dshow debug: MEDIATYPE_Video dshow debug: selected video pin accepts format: I420 dshow debug: found device: Osprey-450 Audio Device 1A dshow debug: found device: Osprey-450 Audio Device 1B dshow debug: found device: Osprey-450 Audio Device 1C dshow debug: found device: Osprey-450 Audio Device 1D dshow debug: found device: Realtek HD Audio Input [b]dshow debug: using device: Osprey-450 Audio Device 1A[/b] // This seems correct? dshow debug: EnumDeviceCaps: output pin: Capture dshow debug: EnumDeviceCaps: input pin: Unbalanced dshow debug: EnumDeviceCaps: trying pin Capture dshow debug: EnumDeviceCaps: input pin default format configured dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:2, samples/sec:44100 bits/sample:16 dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:2, samples/sec:44100 bits/sample:16 dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:1, samples/sec:44100 bits/sample:16 dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:2, samples/sec:32000 bits/sample:16 dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:1, samples/sec:32000 bits/sample:16 dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:2, samples/sec:22050 bits/sample:16 dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:1, samples/sec:22050 bits/sample:16 dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:2, samples/sec:11025 bits/sample:16 dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:1, samples/sec:11025 bits/sample:16 dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:2, samples/sec:8000 bits/sample:16 dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:1, samples/sec:8000 bits/sample:16 dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:2, samples/sec:44100 bits/sample:8 dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:1, samples/sec:44100 bits/sample:8 dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:2, samples/sec:22050 bits/sample:8 dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:1, samples/sec:22050 bits/sample:8 dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:2, samples/sec:11025 bits/sample:8 dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:1, samples/sec:11025 bits/sample:8 dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:2, samples/sec:8000 bits/sample:8 dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:1, samples/sec:8000 bits/sample:8 dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:2, samples/sec:48000 bits/sample:16 dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:1, samples/sec:48000 bits/sample:16 dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:2, samples/sec:96000 bits/sample:16 dshow debug: EnumDeviceCaps: input pin accepts format: araw, channels:1, samples/sec:96000 bits/sample:16 dshow debug: CaptureFilter::JoinFilterGraph dshow debug: connecting filters dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CapturePin::ConnectedTo [not connected] dshow debug: CapturePin::QueryPinInfo dshow debug: CaptureFilter::QueryFilterInfo dshow debug: CapturePin::QueryPinInfo dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CapturePin::QueryDirection dshow debug: CapturePin::QueryAccept [OK] (channels=2, samples/sec=44100, bits/samples=16, format=araw) dshow debug: CapturePin::ReceiveConnection [OK] dshow debug: CapturePin::NotifyAllocator dshow debug: filters connected successfully ! dshow debug: MEDIATYPE_Audio dshow debug: selected audio pin accepts format: araw dshow debug: crossbar at depth 0, routed video output 0 to video input 0 dshow debug: Playing... dshow debug: CapturePin::QueryPinInfo dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CapturePin::QueryPinInfo dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CapturePin::QueryPinInfo dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CapturePin::QueryPinInfo dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CapturePin::ConnectedTo [OK] dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CapturePin::ConnectedTo [OK] dshow debug: CaptureFilter::SetSyncSource dshow debug: CaptureFilter::SetSyncSource dshow debug: CaptureFilter::Pause dshow debug: CaptureFilter::Pause dshow debug: CaptureFilter::Run dshow debug: CaptureFilter::Run main debug: selecting program id=0 main debug: using access_demux module "dshow" main debug: looking for a subtitle file in H:\Program Files\VideoLAN\VLC\ main debug: looking for packetizer module: 17 candidates main debug: using packetizer module "rawvideo" main debug: thread 5148 (decoder) created at priority 0 (input/decoder.c:159) main debug: looking for packetizer module: 17 candidates main debug: using packetizer module "packetizer_copy" main debug: thread 5160 (decoder) created at priority 2 (input/decoder.c:159) main debug: starting in sync mode main debug: `dshow://' successfully opened main debug: adding a new input stream_out_transcode debug: creating video transcoding from fcc=`I420' to fcc=`h264' main debug: looking for decoder module: 28 candidates main debug: using decoder module "rawvideo" main debug: looking for encoder module: 10 candidates main debug: using encoder module "x264" main debug: removing module "x264" stream_out_transcode debug: drift is too high, resetting master sync stream_out_transcode debug: decoder aspect is 576000:432000 stream_out_transcode debug: source pixel aspect is 1.000000:1 stream_out_transcode debug: scaled pixel aspect is 1.000000:1 stream_out_transcode debug: source 640x480, crop 640x480, destination 640x480, padding 640x480 stream_out_transcode debug: encoder aspect is 576000:432000 main debug: looking for encoder module: 10 candidates main debug: using encoder module "x264" main debug: adding a new input mux_ts debug: adding input codec=h264 pid=68 mux_ts debug: new PCR PID is 68 stream_out_transcode debug: drift is too high, resetting master sync main debug: adding a new input stream_out_transcode debug: creating audio transcoding from fcc=`s16l' to fcc=`mpga' main debug: looking for decoder module: 28 candidates araw debug: samplerate:44100Hz channels:2 bits/sample:16 main debug: using decoder module "araw" main debug: looking for encoder module: 10 candidates ffmpeg debug: libavcodec initialized (interface 3349504 ) ffmpeg warning: bitrate 1024 is not allowed in mp2 (mp2@00B21A10) ffmpeg warning: MPEG audio doesn't support bitrate=1024000, using 384000 ffmpeg debug: found encoder MPEG Audio layer 1/2 main debug: using encoder module "ffmpeg" main debug: adding a new input mux_ts debug: adding input codec=mpga pid=69 stream_out_transcode debug: drift is too high, resetting master sync main warning: late buffer for mux input (38754) main warning: late buffer for mux input (12264) [b]-- clipped for brevity --[/b] main warning: late buffer for mux input (46588) main warning: late buffer for mux input (78590) stream_out_transcode debug: late picture skipped (16167) main warning: late buffer for mux input (53588) main warning: late buffer for mux input (21101) main warning: late buffer for mux input (75588) stream_out_transcode debug: late picture skipped (24878) main debug: removing all interfaces main debug: thread times: real 0m8.812500s, kernel 0m0.000000s, user 0m0.000000s main debug: thread 3880 joined (interface/interface.c:258) main debug: removing module "wxwidgets" main warning: late buffer for mux input (82588) main warning: late buffer for mux input (25611) stream_out_transcode debug: late picture skipped (5023) main debug: thread times: real 0m8.843750s, kernel 0m0.031250s, user 0m0.000000s stream_out_transcode debug: drift is too high, resetting master sync main debug: thread 3812 joined (interface/interface.c:258) -- logger module stopped --
Last edited by ChrisHolmesOnline on 16 Dec 2008 20:32, edited 1 time in total.

thannoy
Big Cone-huna
Big Cone-huna
Posts: 601
Joined: 20 Mar 2008 09:44
VLC version: 0.9.8a & 1.0-git
Operating System: GNU/Linux Fedora10
Location: France
Contact:

Re: How do I stream multiple inputs?

Postby thannoy » 16 Dec 2008 20:24

Please, edit your previous posts to embed logs in "code" tags. It will make them and the entire topic much more readable.

Code: Select all

[code]should be like this, your logs between code tags to create scroll bars too.
[/code]

I will read your logs later, maybe someone else will have more time.
_Anthony

ChrisHolmesOnline
Blank Cone
Blank Cone
Posts: 19
Joined: 13 Dec 2008 00:55

Different problems now...

Postby ChrisHolmesOnline » 16 Dec 2008 20:52

I got some of it figured out. I'm using version 0.8.6i. So either the documentation for the DirectShow options is wrong (http://www.videolan.org/doc/streaming-h ... l#id317290) or things have changed with the 0.9.x versions (in which case the documentation might be correct).

What the documentation failed to mention is that you have to prepend the text :dshow- in front of the vdev and adev options. When I looked through the logfile I noticed VLC was using audio from the A1 device, and video from the C1 device, despite what I was specifying. That told me that somehow my command-line options weren't taking.

I fixed my command line and I was able to get two separate instances of VLC working. Thus, I am able to stream two different multicast channels from the box from two different inputs on the Osprey. Which is nice and what I was trying to do.

However, now I have a different problem (and this one may not be so easy to solve).

The way I have things setup is like so (trying to test all four Osprey inputs simultaneously):

I have a DVD player running and the video coming off it is split and plugged into the Osprey's 1A and 1C devices. The audio from the DVD player is plugged into the Osprey's 1A device (not split, so no audio going to C1). I then have a second DVD (DVD-B) player doing the same thing, it's video split and plugged into 1B and 1D, it's audio plugged into 1B only.

So what I should have on the Osprey for available inputs is this:

1A: Video & Audio
1B: Video & Audio
1C: Video
1D: Video

For simple testing purposes I am only trying to display data to the screen, so using the --sout=#display option. No multicasting, just using the DirectShow options

I can display just the video from inputs 1C or 1D no problem (thus I do not specify a :dshow-adev option). I can display video 1C + audio 1A no problem. I can also display video 1D + audio 1B no problem.

If I try and display video 1A + audio 1A, the VideoLAN app opens, but no video displays (I assume the audio is working, but I don't have speakers on the actual server box to tell). Same for video 1B and audio 1B; app opens but no video displayed.

If I try and display just the video for 1A or 1B (again, no :dshow-adev option), it crashes. So there appears to be a serious problem when trying to get video from 1A or 1B.

I do no believe the Osprey is faulty because I can view any combination of inputs with Windows Media Encoder. So if I specify video 1A and audio 1A with WME, it works. If I specify just the video for 1A with WME, it works as well.

I'm at a loss as to why video from 1A and 1B cause VideoLAN to crash.

thannoy
Big Cone-huna
Big Cone-huna
Posts: 601
Joined: 20 Mar 2008 09:44
VLC version: 0.9.8a & 1.0-git
Operating System: GNU/Linux Fedora10
Location: France
Contact:

Re: How do I stream multiple inputs?

Postby thannoy » 16 Dec 2008 21:14

I don't know anything about capture card, here are just some remarks:

Code: Select all

vlc -vvv --file-logging --logfile=errors.log -I --ttl=12 dshow:// vdev="Osprey-450 Video Device 1B" adev="Osprey-450 Audio Device 1B" size="vga" --sout="#transcode{vcodec=h264, vb=4096, scale=1, acodec=mpga, ab=1024, channels=2, audio-sync}:std{access=udp, mux=ts, dst=239.255.12.2222"}
I find "-I" weird without arguments (but VLC seems to find it ok:) ). However, it says an audio mp2 bitrate of 1024 kbps is mad, and that's true :).
Your destination is bad: "dst=239.255.12.2222" -> "239.255.12.42:1234"?

I don't know more about such video device logs or direchshow. Anything interesting in logs VLC write before crashing?

ChrisHolmesOnline
Blank Cone
Blank Cone
Posts: 19
Joined: 13 Dec 2008 00:55

Re: How do I stream multiple inputs?

Postby ChrisHolmesOnline » 16 Dec 2008 22:11

I don't know anything about capture card, here are just some remarks:

Code: Select all

vlc -vvv --file-logging --logfile=errors.log -I --ttl=12 dshow:// vdev="Osprey-450 Video Device 1B" adev="Osprey-450 Audio Device 1B" size="vga" --sout="#transcode{vcodec=h264, vb=4096, scale=1, acodec=mpga, ab=1024, channels=2, audio-sync}:std{access=udp, mux=ts, dst=239.255.12.2222"}
I find "-I" weird without arguments (but VLC seems to find it ok:) ). However, it says an audio mp2 bitrate of 1024 kbps is mad, and that's true :).
Your destination is bad: "dst=239.255.12.2222" -> "239.255.12.42:1234"?

I don't know more about such video device logs or direchshow. Anything interesting in logs VLC write before crashing?
What do you specifically find weird about the -I argument by itself? I got that off the documentation on using DirectShow, so that's all I know to do with it. (http://www.videolan.org/doc/streaming-h ... l#id317290). I'm not even sure what it does; I just assumed it was an argument I needed to set for DirectShow to work.

For the audio bitrate, yeah, I was playing around with it. I've got it set to 32 now.

The destination is indeed the second one: 239.255.12.42:1234. Is that a problem?

I'll post another log file shortly.

ChrisHolmesOnline
Blank Cone
Blank Cone
Posts: 19
Joined: 13 Dec 2008 00:55

Re: How do I stream multiple inputs?

Postby ChrisHolmesOnline » 16 Dec 2008 22:20

Here's the command I issued most recently, and the complete error log.

vlc --file-logging --logfile=errorlog.log -vvv -I -ttl=12 dshow:// :dshow-vdev="Osprey-450 Video Device 1A" :dshow-adev="Osprey-450 Audio Device 1A" size="vga" --sout="#transcode{vcodec=h264,vb=4096,scale=1,acodec=mpga,ab=32,channels=2,audio-sync}:std{access=udp,mux=ts,dst=239.255.12.42:2223}"

Code: Select all

-- logger module started -- main debug: CPU has capabilities 486 586 MMX MMXEXT SSE SSE2 FPU main debug: looking for memcpy module: 3 candidates main debug: using memcpy module "memcpymmxext" main debug: waiting for thread completion main debug: thread 3744 (playlist) created at priority 0 (playlist/playlist.c:184) main debug: waiting for thread completion main debug: thread 3760 (preparser) created at priority 0 (playlist/playlist.c:210) main debug: looking for interface module: 1 candidate main debug: using interface module "hotkeys" main debug: thread 3784 (interface) created at priority 0 (interface/interface.c:231) main debug: looking for interface module: 1 candidate logger: VLC media player - version 0.8.6h Janus - (c) 1996-2008 the VideoLAN team logger: Warning: if you can't access the GUI anymore, open a command-line window, go to the directory where you installed VLC and run "vlc -I wx" logger: using logger... logger debug: opening logfile `errorlog.log' main debug: using interface module "logger" main debug: thread 3812 (interface) created at priority 0 (interface/interface.c:231) main debug: adding playlist item `size=vga' ( size=vga ) main debug: adding playlist item `dshow://' ( dshow:// ) main debug: looking for interface module: 3 candidates main debug: using interface module "wxwidgets" main debug: thread 3856 (manager) created at priority 0 (interface/interface.c:216) wxwidgets debug: Using last windows config '(-1,0,0,1600,1200)(0,129,206,355,94)(6,0,0,-1,150)' wxwidgets debug: id=0 p=(129,206) s=(355,94) wxwidgets debug: id=6 p=(0,0) s=(-1,150) main debug: nothing requested, starting main debug: creating new input thread main debug: waiting for thread completion main debug: creating statistics handler main debug: thread 4028 (input) created at priority 1 (input/input.c:265) main debug: stream=`transcode' main debug: looking for sout stream module: 1 candidate main debug: stream=`std' main debug: looking for sout stream module: 1 candidate main debug: set sout option: sout-standard-access to udp main debug: set sout option: sout-standard-mux to ts main debug: set sout option: sout-standard-dst to 239.255.12.42:2223 stream_out_standard debug: creating `udp/ts://239.255.12.42:2223' stream_out_standard debug: extension is 42:2223 stream_out_standard debug: extension -> mux=(null) stream_out_standard debug: using `udp/ts://239.255.12.42:2223' main debug: looking for sout access module: 1 candidate main debug: net: connecting to 239.255.12.42 port 2223 main debug: thread 4180 (sout write thread) created at priority 15 (udp.c:268) access_output_udp debug: udp access output opened(239.255.12.42:2223) main debug: using sout access module "access_output_udp" stream_out_standard debug: access opened main debug: looking for sout mux module: 1 candidate mux_ts debug: shaping=200000 pcr=70000 dts_delay=400000 main debug: using sout mux module "mux_ts" main debug: muxer support adding stream at any time stream_out_standard debug: mux opened main debug: using sout stream module "stream_out_standard" main debug: set sout option: sout-transcode-vcodec to h264 main debug: set sout option: sout-transcode-vb to 4096 main debug: set sout option: sout-transcode-scale to 1 main debug: set sout option: sout-transcode-acodec to mpga main debug: set sout option: sout-transcode-ab to 32 main debug: set sout option: sout-transcode-channels to 2 main debug: set sout option: sout-transcode-audio-sync to (null) stream_out_transcode debug: codec audio=mpga 0Hz 2 channels 32Kb/s stream_out_transcode debug: codec video=h264 0x0 scaling: 1.000000 4096kb/s main debug: using sout stream module "stream_out_transcode" main debug: `dshow://' gives access `dshow' demux `' path `' main debug: creating demux: access='dshow' demux='' path='' main debug: looking for access_demux module: 1 candidate dshow debug: found device: Osprey-450 Video Device 1C dshow debug: found device: Osprey-450 Video Device 1D dshow debug: found device: Osprey-450 Video Device 1A dshow debug: found device: Osprey-450 Video Device 1B dshow debug: using device: Osprey-450 Video Device 1A dshow debug: EnumDeviceCaps: output pin: Capture dshow debug: EnumDeviceCaps: output pin: Preview dshow debug: EnumDeviceCaps: output pin: CC dshow debug: EnumDeviceCaps: output pin: VBI dshow debug: EnumDeviceCaps: input pin: Analog Video In dshow debug: EnumDeviceCaps: trying pin Capture dshow debug: EnumDeviceCaps: input pin default format configured dshow debug: EnumDeviceCaps: input pin accepts chroma: I420, width:852, height:480, fps:29.970000 dshow debug: CaptureFilter::JoinFilterGraph dshow debug: connecting filters dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CapturePin::ConnectedTo [not connected] dshow debug: CapturePin::QueryPinInfo dshow debug: CaptureFilter::QueryFilterInfo dshow debug: CapturePin::QueryPinInfo dshow debug: CaptureFilter::EnumPins dshow debug: CapturePin::QueryDirection dshow debug: CapturePin::QueryDirection dshow debug: CapturePin::QueryAccept [OK] (width=852, height=480, chroma=I420, fps=29.970000) dshow debug: CapturePin::ReceiveConnection [OK] dshow debug: CapturePin::Disconnect [OK] dshow debug: CapturePin::QueryDirection dshow debug: CapturePin::QueryAccept [OK] (width=852, height=480, chroma=I420, fps=29.970000) dshow debug: CapturePin::ReceiveConnection [OK] dshow debug: CapturePin::Disconnect [OK]
VideoLAN crashes then and that's all the log produces. I've got to believe there is some minor setting that is different between input device 1A & 1B vs. 1C and 1D. 1C and 1D work. They're all on the same physical card, and WM Encoder has no problems with any of the devices. Something fishy here for sure.

thannoy
Big Cone-huna
Big Cone-huna
Posts: 601
Joined: 20 Mar 2008 09:44
VLC version: 0.9.8a & 1.0-git
Operating System: GNU/Linux Fedora10
Location: France
Contact:

Re: How do I stream multiple inputs?

Postby thannoy » 16 Dec 2008 22:50

What do you specifically find weird about the -I argument by itself?
"-I" is used to force the main interface to use. "-I telnet" for example ask vlc to not launch GUI but listen like telnet for commands. You can ask for QT4 GUI, wx GUI, http, telnet, ncurses and other interfaces. But never seen it without the following interface name to use. (default is QT4 for legacy 0.9.*)

The destination is indeed the second one: 239.255.12.42:1234. Is that a problem?
Emm. That's not a problem. But before you mistakenly written this address. You did the same around the "-I" I think so I found weird your mistakenly written command-line.

Still in the last post:
vlc --file-logging --logfile=errorlog.log -vvv -I -ttl=12 ...etc
Nevermind.
I can't help you more on your crash, capture cards aren't in my skills.

good luck
_Anthony

ChrisHolmesOnline
Blank Cone
Blank Cone
Posts: 19
Joined: 13 Dec 2008 00:55

Re: How do I stream multiple inputs?

Postby ChrisHolmesOnline » 16 Dec 2008 23:10

Thanks Anthony.

I fixed the crashing. I figured there had to be some difference between capture devices 1A/B and 1C/D. So I opened up the Osprey config in Windows and started looking at the settings for each device. Devices A & B had a screen resize of 16x9. Devices C & D had it set to "square pixels", whatever the means. So I switched A & B to "square pixels" and bingo - no more crashes.

Appreciate the help Anthony!

One more question then: so if I don't set -I option, nothing should change right? Am I okay to not set that option?

-Chris

thannoy
Big Cone-huna
Big Cone-huna
Posts: 601
Joined: 20 Mar 2008 09:44
VLC version: 0.9.8a & 1.0-git
Operating System: GNU/Linux Fedora10
Location: France
Contact:

Re: How do I stream multiple inputs?

Postby thannoy » 16 Dec 2008 23:42

If you don't set "-I rc" option, default will be to show you QT4 GUI. If you use "-I rc" as said chapter 10, it will trigger a command-line interface suitable to give some commands to VLC (play, pause and more) from the console.
I think one or the other works well, just depends on your needs.

About square pixels weirdness, maybe that's related to 16:9 standard definition hack I have read about somewhere:
In France for example, TV was broadcasted in SD quality (standard definition). It was 4:3 ratio. More and more, it is HD which is 16:9 ratio.
But in the middle, I have read there were "16:9 SD" which is a contradiction. It was non-squared pixels to get 16:9 with SD streams.
I have it very far away in my mind, in case it helps.

Can you prefix the topic with "[fixed]"? It is a good habit to have :)

regards,
Anthony

ChrisHolmesOnline
Blank Cone
Blank Cone
Posts: 19
Joined: 13 Dec 2008 00:55

Re: How do I stream multiple inputs? [Fixed]

Postby ChrisHolmesOnline » 17 Dec 2008 00:33

Thanks Anthony.

I have two more questions if you don't mind:

(1) I am getting a little bit of stuttering and would like to clear that up. Will increasing the buffering improve that? Is there a way to do that? Is it: :dshow-caching=3000? Would that be sufficient to improve the quality?

(2) I think I read somewhere that I can set the number of threads to the number of processors and that may improve quality of my stream. How would I do that?

-Chris

thannoy
Big Cone-huna
Big Cone-huna
Posts: 601
Joined: 20 Mar 2008 09:44
VLC version: 0.9.8a & 1.0-git
Operating System: GNU/Linux Fedora10
Location: France
Contact:

Re: How do I stream multiple inputs? [Fixed]

Postby thannoy » 17 Dec 2008 10:40

More buffering can help for the beginning of the stream. Of you get latency, the cache will never go faster than the live so a bigger cache is only a later problem in my mind. Once it has been consumed for any odd reason, it doesnt help anymore. 3s is very sufficient i think and means 3 seconds of latency at the beginning (to fill the buffer with a 3s live stream).

Never read about threads setting you written. If you have several processors/CPUs on your computer, you can launch several VLC instances to be sure several streams can be spread accross CPUs.. for the receiver point of view, multi-core capable decoders are needed to use all CPU power in this case. I don't know more.


Return to “VLC stream-output (sout)”

Who is online

Users browsing this forum: No registered users and 2 guests