[vlc-devel] Money for Enhancements

Vlad Lasky vlasky at hotmail.com
Sun Oct 29 08:58:20 CET 2006


Hi,

I previously posted this in the New Feature Requests forum, but was advised 
to send it to this email address so it would reach developers. I have 
updated it since my last post.

I am from the Faculty of Engineering at UTS and we are using VLC to 
implement remote labs for distance learning.

The faculty is prepared to pay developers to implement the following 
features that we need. If you are interested, please send me a private 
message/email.

Most of our systems have multiple Apple iSight firewire cameras (supported 
using Andrea Guzzo's dc1394 module) that are pointed at different 
experiments and use Macmice Micflex USB microphones to record the sounds 
produced by the equipment. VLC is started in VLM mode using a configuration 
file to setup each stream.

The current list of required features:

1. JPEG snapshots

VLC should be able to stream periodically updated JPEG snapshots, served 
over HTTP.

Perhaps this could be implemented using the MJPEG codec and a new mux that 
sends the last buffered frame, and then closes the connection.

For example, the following would produce an image that is updated every 
second, using a new mux 'singleframe'

setup stream1 output 
#transcode{vcodec=MJPG,vb=4000,fps=1}:std{access=http,mux=singleframe,url=:7070/stream1.jpg}"}


2. Ability to rotate image 90 degrees on server side

Some of our scenes need a portrait shot, not a landscape shot, so we want to 
rotate the camera image 90 degrees before streaming it.

Despite some comments to the contrary, this is NOT currently supported on 
the server side using vfilter transform.


3. Ability to source video and audio components of input stream from 
separate
locations

One idea for the VLM config syntax is:

setup stream11 input vinput=[device/url/file containing video data] 
ainput=[device/url/file containing audio data]


4. To allow different streams to share the same audio input, but use 
different video inputs

We use the microphone to record noise and sounds in the room, but each of 
the cameras is pointed at a different experiment. At the moment, we have to 
use a separate microphone for each camera.

At the moment, it is not possible to open a single OSS/ALSA device from 
multiple streams.

One solution is to combine this enhancement with enhancement number 3. That 
way, we can stream the audio track on its own via http, then include it as 
an audio input in another stream


5. To allow users to have a choice between a pure video stream, a pure audio 
stream or a combined video/audio stream

If an experiment requires video, but not audio, we don't want to waste 
bandwidth streaming both, likewise for an experiment that requires audio, 
but not video - each combination should have a separate stream name

Perhaps this can be done with the es module?


6. Fix Logging

VLC does not appear to create or write to its logfile when started with the 
following commandline:

vlc --intf telnet --vlm-conf /usr/local/etc/vlc.conf --logfile /var/log/vlc

7. Startup script

Include a vlc startup script that can be installed in /etc/init.d

8. VLM Syntax

I don't like the VLM syntax - it is very confusing and hard to maintain, but 
we can live with it for the time being.

Ideally, we'd like a format similar to the one used by Nathan Lutchansky's 
'spook' video streaming package, where instead of having a long chain on a 
single line, each module has its own configuration block with an input and 
output label that can easily be mixed and matched and sent to multiple 
destinations.

Here is an example of how a single stream consisting of a firewire camera 
and an OSS audio input could be configured:

e.g.

Input DC1394 {
Device /dev/video1394/0
Camera 0
fps 15
Output "dc1394_0"
}

Input OSS
{
Device /dev/dsp0
Samplerate 48000
Channels 1
output "mic_0"
}

Transcode
{
Input "dc1394_0"
Codec div3
Bitrate 256
Output "video_div3_0"
}

Transcode
{
Input "dc1394_0"
Codec mjpg
Bitrate 4000
Output "video_mjpg_0"
}

Transcode
{
Input "mic_0"
Codec mp3
Bitrate 32
Output "audio_mp3_0"
}

Std
{
Input-Video "video_div3_0"
Input-Audio "audio_mp3_0"
Mux asfh
access=mmsh
url :7070/stream1_av_medium.asf
}

Std
{
Input-Video "video_mjpg_0"
Mux asfh
access=mmsh
url :7070/stream1_v_medium.mjpg
}

Using this approach, if we wanted to create an audio-only http stream, we 
would add the following block

Std
{
Input-Audio "audio_mp3_0"
Mux asfh
access=mmsh
url :7070/stream1_a_medium.asf
}


Here is the current VLM configuration file that we use for 3 firewire 
cameras and 3 microphones
------
new camera1 broadcast enabled
setup camera1 input 
dc1394:/dev/video1394/0:camera=0:size=320x240:adev=/dev/dsp:channels=1:fps=15:brightness=100
setup camera1 output 
#duplicate{dst="transcode{vcodec=DIV3,vb=256,acodec=mp3,ab=32}:std
{access=mmsh,mux=asfh,url=:7070/stream1_av_medium.asf}",dst="transcode{vcodec=MJPG,vb=4000}:std

{access=http,mux=raw,url=:7070/stream1.jpg}"}

new camera2 broadcast enabled
setup camera2 input 
dc1394:/dev/video1394/0:camera=1:size=320x240:adev=/dev/dsp1:channels=1:fps=15:brightness=100
setup camera2 output 
#duplicate{dst="transcode{vcodec=DIV3,vb=256,acodec=mp3,ab=32}:std
{access=mmsh,mux=asfh,url=:7070/stream2_av_medium.asf}",dst="transcode{vcodec=MJPG,vb=4000}:std{access=http,mux=raw,url=:7070/stream2.jpg}"}

new camera3 broadcast enabled
setup camera3 input 
dc1394:/dev/video1394/0:camera=2:size=320x240:adev=/dev/dsp2:channels=1:fps=15:brightness=100
setup camera3 output 
#duplicate{dst="transcode{vcodec=DIV3,vb=256,acodec=mp3,ab=32}:std
{access=mmsh,mux=asfh,url=:7070/stream3_av_medium.asf}",dst="transcode{vcodec=MJPG,vb=4000}:std{access=http,mux=raw,url=:7070/stream3.jpg}"}

control camera1 play
control camera2 play
control camera3 play
----------

Thanks for your assistance.

Vlad Lasky
Computer Systems Engineer
Faculty of Engineering
University of Technology, Sydney

_________________________________________________________________
Want $250 of std talk, text & more for $49 a month? Go to  
http://a.ninemsn.com.au/b.aspx?URL=http%3A%2F%2Fadsfac%2Enet%2Flink%2Easp%3Fcc%3DTEL217%2E31371%2E0%26clk%3D1%26creativeID%3D44933&_t=758220942&_r=emailtaglinetelstra&_m=EXT

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



More information about the vlc-devel mailing list