Open Source Live Video Mixer/Internet TV Production Software
Posted: 09 Oct 2009 15:28
***Edit 28/6/10 - This has now been founded as an open source project. Please visit www.dustv.org and forum.dustv.org for more details on the project.***
Hi,
Ok massive post - sorry! I'm new to the board and was hoping I could gauge interest and also get some help and advice on a project I'm starting that will most likely be making heavy use of libVLC.
I'm a final year undergraduate Communications Engineer and I have decided to use my final year project to begin development on an open source software suite that’ll hopefully, once finished, allow the creation of professional style live Internet TV broadcasts by anyone with access to a video camera and a PC. I’ve hunted around but can’t find anything open source similar to this that currently exists, although if there is please let me know as I may have to rethink my project! I’m also fairly new to VLC and have no experience with libVLC or any of the technicalities of video codecs, streaming protocols, setting up open source projects etc - I have a lot to learn!! I may be talking rubbish in parts so please let me know if I am...please be kind !
I’m still in the early planning stages but at the moment the idea is to develop several pieces of software to perform the main functions of a TV production studio using consumer laptops, PCs and video cameras as the hardware and LANs and the Internet as the communications systems. The software suite would require the following:
OB (Outside Broadcast) Streaming Node - SN
Used to take audio and video from a video camera (probably via firewire), transcode and stream it via LAN/Internet to the “TV Production Server”. I will probably initially just use VLC on a laptop to do this but plan to later develop a customised program using libVLC.
TV Production Server - PS
This would be the main development of the project and will hopefully include the following functions:
1. Audio/Video Mixer - mix multiple live audio/video streams coming from the SNs into a single output stream for broadcast.
2. Graphics - animated graphics able to be overlaid onto the output stream (e.g. Logos, ticker bars, name titles etc.) for professional looking output.
3. VT (Video Tape Deck) – mixing of locally stored videos into the output stream. This could also be used to insert commercial breaks etc.
4. Recording – Allow recording of the output stream for archive/On Demand services
5. Broadcast Server – Stream the output to the world...!
These would all be installed on a main server PC in the studio with the idea that individual computers on the studio network could be used to control the different functions so that one laptop would control mixing, another graphics, another VT etc. so it can be laid out like a professional studio.
Here’s a diagram of a possible setup for a student TV channel or something:
I would assume most video streaming/encoding etc. would be done using libVLC however the main problem will be how to mix the different video streams as I doubt this would be possible at codec level? One idea I had would be to mix the video at the Operating System’s graphics level using OpenGL or similar and then capture this using a similar technique to screencasting to create the output stream. This would then allow many different codecs, resolutions etc. to be in the input streams without having to worry about compatibilities. I guess this would also make overlay of graphics a lot easier? Unfortunately, again, I have never programmed OpenGL/libVLC so don’t know how feasible this is? Any help/advice/comments would be great!!
Any ideas on what you think conceptually and technically about the project and also advice on if it’s worth setting up as an open source project yet etc. etc. would be a massive help!
Thanks for reading if you got this far!
Nick
Hi,
Ok massive post - sorry! I'm new to the board and was hoping I could gauge interest and also get some help and advice on a project I'm starting that will most likely be making heavy use of libVLC.
I'm a final year undergraduate Communications Engineer and I have decided to use my final year project to begin development on an open source software suite that’ll hopefully, once finished, allow the creation of professional style live Internet TV broadcasts by anyone with access to a video camera and a PC. I’ve hunted around but can’t find anything open source similar to this that currently exists, although if there is please let me know as I may have to rethink my project! I’m also fairly new to VLC and have no experience with libVLC or any of the technicalities of video codecs, streaming protocols, setting up open source projects etc - I have a lot to learn!! I may be talking rubbish in parts so please let me know if I am...please be kind !
I’m still in the early planning stages but at the moment the idea is to develop several pieces of software to perform the main functions of a TV production studio using consumer laptops, PCs and video cameras as the hardware and LANs and the Internet as the communications systems. The software suite would require the following:
OB (Outside Broadcast) Streaming Node - SN
Used to take audio and video from a video camera (probably via firewire), transcode and stream it via LAN/Internet to the “TV Production Server”. I will probably initially just use VLC on a laptop to do this but plan to later develop a customised program using libVLC.
TV Production Server - PS
This would be the main development of the project and will hopefully include the following functions:
1. Audio/Video Mixer - mix multiple live audio/video streams coming from the SNs into a single output stream for broadcast.
2. Graphics - animated graphics able to be overlaid onto the output stream (e.g. Logos, ticker bars, name titles etc.) for professional looking output.
3. VT (Video Tape Deck) – mixing of locally stored videos into the output stream. This could also be used to insert commercial breaks etc.
4. Recording – Allow recording of the output stream for archive/On Demand services
5. Broadcast Server – Stream the output to the world...!
These would all be installed on a main server PC in the studio with the idea that individual computers on the studio network could be used to control the different functions so that one laptop would control mixing, another graphics, another VT etc. so it can be laid out like a professional studio.
Here’s a diagram of a possible setup for a student TV channel or something:
I would assume most video streaming/encoding etc. would be done using libVLC however the main problem will be how to mix the different video streams as I doubt this would be possible at codec level? One idea I had would be to mix the video at the Operating System’s graphics level using OpenGL or similar and then capture this using a similar technique to screencasting to create the output stream. This would then allow many different codecs, resolutions etc. to be in the input streams without having to worry about compatibilities. I guess this would also make overlay of graphics a lot easier? Unfortunately, again, I have never programmed OpenGL/libVLC so don’t know how feasible this is? Any help/advice/comments would be great!!
Any ideas on what you think conceptually and technically about the project and also advice on if it’s worth setting up as an open source project yet etc. etc. would be a massive help!
Thanks for reading if you got this far!
Nick