[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