Video streaming software


Published on

  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Video streaming software

  1. 1. Video Streaming Software VLC VideoLAN Client is a cross-platform media player and streaming server. “VLC (initially VideoLAN Client) is a highly portable multimedia player for various audio and video formats (MPEG-1, MPEG-2, MPEG-4, DivX, mp3, ogg, ...) as well as DVDs, VCDs, and various streaming protocols. It can also be used as a server to stream in unicast or multicast in IPv4 or IPv6 on a high- bandwidth network.” VLC works like a media player, but has had the ability to stream output bolted on. To stream output you define the command line as a huge ‘chain’ telling the program what to do at each step. Eg: to stream a file from disk, convert the video to MPEG-4 (1024kb/s), the audio to MPEG audio (not MP3 however, at 192kb/s) and send it via udp to the the all-hosts multicast address, you’d do something like: vlc Y:002-That-guy-stole-my-shoes.mpg --sout=”#transcode{vcodec=mp4v,vb=1024,scale=1,acodec=mpga,ab=192,cha nnels=2}” --duplicate “{dst=std{access=udp,mux=ts,url=[ff02::1]:1234}}” VLC shows its media player roots by only allowing one processing one video at a time. So if you wanted to stream several (different) video sequences at the same time, you’d need to run VLC several times. This doesn’t apply to outputs so much – VLC can stream to multiple hosts using IPv4/v6 multicast and do this using several protocols at one: you could be streaming to a one multicast group using raw udp, another using mms, another using rtp etc. But still the original video is the same. VLC does support a large amount of input types (V4L, PVR, file, UDP etc), formats (AVI, MPEG, QT) and codecs (MPEG-1/2/-4, DivX, Cinepak etc), the ability to transcode from one format to another, and many different output protocols (udp, mms, http, rtp, file etc). Supporting all these formats does have a cost though – there are a huge number of dependencies required to compile/install VLC. This makes compiling with the features you want very difficult. VLS VideoLAN Server was the original streaming solution from VideoLAN. It is no longer in active development, as focus has changed to further developing VLC. VLS has does not have as good support for codecs, containers and outputs as VLC does. VLS mainly supports MPEG-based formats such as -2 PS and TS and -4. The outputs are also limited – only MPEG-2 TS can be streamed via udp. VLS is configured via a config file rather than by the command line. You define input ‘programs’ and output ‘channels’. Assuming you did not set some input/output combinations to autoplay, you use the telnet interface to start programs by joining
  2. 2. them with an output channel. This config file allows VLS to stream multiple files/inputs at the same time, rather than requiring multiple program instances like VLC. VLS does not support transcoding input formats. Only the V4L interface allows video to be encoded. This only supports MPEG-2/4 and MP3. When running VLS, the latest SVN branch should be used as this includes V4L support – this was removed from VLS around v0.5 but is required to stream from Video4Linux inputs. Automake 1.4 does not work with the bootstrap program that comes with the SVN version of VLS. When the final vls executable comes to being linked there are errors. Upgrading to automake 1.6 (and autoconf too) allows the configure script to work properly. Windows Streaming Media Server The Server dia/default.mspx This is the media server that is supplied with all versions (except 64-bit) of Windows 2003 server. It has an easy-to-use interface for administering the system, supports video-on-demand and broadcasting (via multicast) of streams. It also supports IPv6. The problem with it is that the system will on accept inputs that are in proprietary Microsoft Windows Media formats. There is no support for MPEG whatsoever. This is a problem if it is used with the Hauppauge PVR as the only thing it will produce is a MPEG-2 TS. The system will also not transmit video directly from a DirectShow input. However, the system supports an external video encoder – as long as the encoder can export video in a Windows Media format via a HTTP-like interface the server will accept it. However whenever tried with an encoder other than Windows Media Encoder 9 it would refuse to connect using HTTP. The server can view streams using the MMS protocol (which VLC can output), but will refuse to stream from an MMS input. Windows Media Encoder 9 r/default.aspx This encoder will support most video formats and transcode them to a Windows Media format. The encoder can read from a file, another video stream, or from a DirectShow device (eg a TV card). The encoder will then ‘push’ the output to a client or to the Windows Streaming Media Server using either the MMS or HTTP protocol. The encoder also supports MPEG inputs, although refused every file saved from the PVR 350. It also refused to read from the device using the DirectShow interface.
  3. 3. Helix Universal Server discreteserver/ This is the media server that is developed by RealNetworks, Inc. It is the most professional-looking server tested and includes a huge amount of options, including the broadcasting of adverts! The output formats are limited to proprietary Real formats and protocols. As a result, the output ought to be viewable (only?) on their RealPlayer software. It does not support input from a capture device, nor does it support IPv6. Darwin Streaming Server This is the open source version of Apple’s QuickTime Streaming Server that allows the transmission of streaming media to clients via the RTP and RTSP protocols. There are few configuration options for DSS, and in fact I never got it to stream video once… It also does not support capture from external devices (only file input) nor does it support IPv6 or multicasting. Apache Although primarily used as a web server, Apache can be easily used as a video-on- demand (VOD) server for unicast clients with the help of the Mozilla VLC plugin. HTTP provides the ability to seek within a file – this is normally used for resuming broken downloads, but here can be used to seek within a video stream stored on the web server. When the VLC plugin is embedded within a web page the user can view the stream and use the controls to seek within it. Both Mozilla (tested with v1.6) and Apache support IPv6. Apache needs to be specially configured to support files >2GB as files made by the PVR 350 can easily reach this size. The plugin is very buggy and frequently crashes Mozilla. The plugin does not work with Internet Explorer or other browsers. Also the seeking feature is lost when using Windows Media Player using the HTTP interface. SAP/SDP The normal way for clients to subscribe to multicast services is by ‘connecting’ to that address using VLC. As IP addresses (and especially v6 addresses) can be difficult to remember, you can add a channel information service which makes connecting to broadcasts easy. VideoLAN has implemented a channel information service based on the SAP/SDP standard – the SAP announces are send via the network (multicasted) saying which program is running on what address/port. On the client side, VLCs receive these announces and automatically add the announced programs to their playlists. The user then double-clicks on the program and can start watching immediately.
  4. 4. VLC can send the SAP announces associated with the programs it is streaming. VLS can’t do that but an independent program, the mini-SAP-server can send the announcements for the programs sent by VLS.