Difference between revisions of "MosaicExampleSetup"

From VideoLAN Wiki
Jump to navigation Jump to search
Line 44: Line 44:
 
  setup cam1 input v4l:/dev/video0:norm=PAL:channel=1:adev=/dev/audio
 
  setup cam1 input v4l:/dev/video0:norm=PAL:channel=1:adev=/dev/audio
 
  setup cam1 option rtsp-tcp
 
  setup cam1 option rtsp-tcp
  setup cam1 output #transcode{vcodec=mp4v,vb=512,scale=1}:duplicate{dst=mosaic-bridge{id=1,height=400,width=300},select=video,dst={transcode{acodec=mp3,ab=64,channels=1}:bridge-out{id=0}},select=audio}
+
  setup cam1 output #transcode{vcodec=mp4v,vb=512,scale=1}:duplicate{dst=mosaic-bridge{id=1,height=400,width=300},
 
+
select=video,dst={transcode{acodec=mp3,ab=64,channels=1}:bridge-out{id=0}},select=audio}
 +
 
  # second camera. Important: adev=/dev/null otherwise I couldn't get it to run
 
  # second camera. Important: adev=/dev/null otherwise I couldn't get it to run
 
  new cam2 broadcast enabled
 
  new cam2 broadcast enabled
 
  setup cam2 input v4l:/dev/video1:norm=PAL:channel=1:adev=/dev/null
 
  setup cam2 input v4l:/dev/video1:norm=PAL:channel=1:adev=/dev/null
 
  setup cam2 output #transcode{vcodec=mp4v,vb=512,scale=1}:duplicate{dst=mosaic-bridge{id=2,height=400,width=300}}
 
  setup cam2 output #transcode{vcodec=mp4v,vb=512,scale=1}:duplicate{dst=mosaic-bridge{id=2,height=400,width=300}}
 
+
 
  # set up for the background
 
  # set up for the background
 
  new background broadcast enabled
 
  new background broadcast enabled
Line 65: Line 66:
 
  setup background option fake-fps="8"
 
  setup background option fake-fps="8"
 
  setup background output #transcode{sfilter=mosaic,soverlay,vcodec=mp4v,acodec=mp3,ab=64,channels=1,scale=1}:bridge-in{id-offset=100}:std{access=http{mime=video/x-asf-stream},mux=asf,dst=:8080}
 
  setup background output #transcode{sfilter=mosaic,soverlay,vcodec=mp4v,acodec=mp3,ab=64,channels=1,scale=1}:bridge-in{id-offset=100}:std{access=http{mime=video/x-asf-stream},mux=asf,dst=:8080}
 
+
 
  # put it all together
 
  # put it all together
 
  control background play
 
  control background play
 
  control cam1 play
 
  control cam1 play
 
  control cam2 play
 
  control cam2 play

Revision as of 10:36, 22 October 2007

Example set-up for a conference: Plans

Problem description

For a conference we needed a web stream for participants who were not able to come. The set-up needed to be flexible as well transportable, since the conference took place at two venues which were several hundred meters apart. VLC was chosen because there was already a somehow working set-up available which was modified for this conference.

Hardware

We were using a dual-core AMD box (Athlon X2 4600+) with 1 GB of memory and only two PCI slots (Fujitsu Siemens PC). So nothing out of the ordinary. We had two PolyCom remote controllable cameras which can output SVIDEO signals which we feed into to BT878 based grabber cards.

Software

We used the vlc version coming with Ubuntu Gutsy 0.8.6c along with xawtv for direct control of the cameras (the encoding process and buffering of the clients usually introduce a lag of a few seconds which makes it hard to steer the camera efficiently.

Network distribution

One of our problems was that at one of the conference venues the network bandwidth was somehow limited and we feared to overload that network. We thus decided to stream only to a single dedicated box which is connected to a network with a much larger bandwidth. This box was restreaming the content to anyone interested.

Details

Needed devices

Video

Grabber cards registered their devices where the camera output can be viewed from:

/dev/video0
/dev/video1

The very first step is to check, if these are working. For this, start

xawtv -c /dev/video0

and we saw a blue window, because xawtv sets the input mode to composite not SVIDEO. To change this, right-click on the blue window, and change the input to SVIDEO. I have not found a possibility to change this via the command line.

If video0 is working, try the same with video1 it should work as well.

Audio

The grabber cards I used, do have audio input but I only got very bad quality. With the on-board audio I got a much better quality so this was used. If you are a fan of a graphical interface try to record input from /dev/dsp (need the OSS kernel modules) with audacity. Don't simply connect the output of the sound card to loudspeakers and the input of your microphone to the microphone input of your computer. The sound card may directly connect those two channels without the software having the possibility to record anything. If you find the input of the grabber cards are good enough, they are usually labeled /dev/dsp0 or something like this.

Setup

For a simple set-up with two equally sized images next to each other I use the following config file for vlc:

# first camera uses /dev/video0 and the on-board sound /dev/audio or /dev/dsp
new cam1 broadcast enabled
setup cam1 input v4l:/dev/video0:norm=PAL:channel=1:adev=/dev/audio
setup cam1 option rtsp-tcp
setup cam1 output #transcode{vcodec=mp4v,vb=512,scale=1}:duplicate{dst=mosaic-bridge{id=1,height=400,width=300},
select=video,dst={transcode{acodec=mp3,ab=64,channels=1}:bridge-out{id=0}},select=audio}

# second camera. Important: adev=/dev/null otherwise I couldn't get it to run
new cam2 broadcast enabled
setup cam2 input v4l:/dev/video1:norm=PAL:channel=1:adev=/dev/null
setup cam2 output #transcode{vcodec=mp4v,vb=512,scale=1}:duplicate{dst=mosaic-bridge{id=2,height=400,width=300}}

# set up for the background
new background broadcast enabled
setup background input fake:
setup background option mosaic-width=800
setup background option mosaic-height=300
setup background option mosaic-rows=1
setup background option mosaic-cols=2
setup background option mosaic-position=1
setup background option mosaic-order="1,2"
setup background option fake-file="back.gif"
setup background option fake-width=800
setup background option fake-height=300
setup background option fake-fps="8"
setup background output #transcode{sfilter=mosaic,soverlay,vcodec=mp4v,acodec=mp3,ab=64,channels=1,scale=1}:bridge-in{id-offset=100}:std{access=http{mime=video/x-asf-stream},mux=asf,dst=:8080}

# put it all together
control background play
control cam1 play
control cam2 play