Changes between Version 90 and Version 91 of Documentation/VLC
- Timestamp:
- Dec 10, 2010, 2:42:33 PM (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Documentation/VLC
v90 v91 1 = '''aribamc'''Ariba Overlay Multicast VLC Plugin - Overlay-based Videostreaming using Ariba and MCPO Application-Layer Multicast =1 = Ariba Overlay Multicast VLC Plugin - Overlay-based Videostreaming using Ariba and MCPO Application-Layer Multicast = 2 2 3 3 [[Image(logotest.png)]] 4 4 5 === What is the plugin? ===6 7 The ''' vlc-mcpo''' plugin is an Open Source streaming module for the [http://www.videolan.org VLC media player]. It enables video streaming through the overlay-based virtual network substrate Ariba in combination with the MCPO application-layer multicast protocol. With '''vlc-mcpo''' you can deliver video streams to groups of users, similar to IP Multicast, but without any need of in-network multicast support. Also, through the use of Ariba, '''vlc-mcpo''' can cope with several protocol issues such as IPv4/IPv6 transitions, Network Address Translation (NAT), and many more networking problems in a self-organized and distributed manner.5 === What is the AribaMC plugin? === 6 7 The '''AribaMC''' plugin is an Open Source streaming module for the [http://www.videolan.org VLC media player]. It enables video streaming through the overlay-based virtual network substrate Ariba in combination with the MCPO application-layer multicast protocol. With '''AribaMC''' you can deliver video streams to groups of users, similar to IP Multicast, but without any need of in-network multicast support. Also, through the use of Ariba, '''AribaMC''' can cope with several protocol issues such as IPv4/IPv6 transitions, Network Address Translation (NAT), mobility, and many more networking problems in a self-organized and distributed manner. 8 8 9 9 For more information about Ariba, MCPO, or the SpoVNet project, please refer to: http://www.ariba-underlay.org , http://www.spovnet.de 10 10 11 11 === Setting up / installing === 12 13 1.0.6 --> Ubuntu 10.04 LTS 14 1.1.4 --> Ubuntu 10.10 15 1.1.5 --> aktuelle VLC version, aber nicht std. in Ubuntu 16 17 32 bit 18 64 bit 19 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 21 12 22 The ariba framework is currently available for Linux, therefor, the plugin is also Linux-based. As soon as further platforms are available it will be announced here. 13 23 14 24 A quick and simple way for testing and using the plugin (besides compilation) is the use of precompiled libraries, which we provide. In this section we describe how to set up an ''Ubuntu 9.10 or 10.04'' for this purpose. This should be adoptable to other Linux distributions easily. Instructions how to compile the plugin are provided in the Developers Guide below. 15 25 16 For running the vlc-mcpo plugin a number of packages are required on the target system:26 For running the AribaMC plugin a number of packages are required on the target system. Your might need different boost versions, use what's coming with your distribution. Log4cxx is this version or higher required. 17 27 18 28 {{{ … … 27 37 32bit linux: [ coming soon ][[BR]] 28 38 64bit linux: [ coming soon ] 29 30 Unpack the archive to {{{$HOME}}}. (If you choose another location, you have to adjust the path in the running script.) 31 32 Now you can link the running-script to {{{$HOME/bin}}} or {{{/usr/bin}}} via: [[BR]] 33 {{{ 34 cd $HOME/bin 35 ln -s $HOME/vlc-mcpo/run.sh vlc-mcpo 36 }}} 37 38 Or just run from where it is. 39 40 (Note: If you just created the {{{$HOME/bin}}} folder, you have to start a new bash.) 41 (Note: The following instructions assume you created one of links described above.) 39 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 40 41 Unpack the archive to e.g. {{{$HOME}}}. You will find two folders {{{aribalibs}}} and {{{vlclibs}}}. Set the {{{LD_LIBRARY_PATH}}} to aribalibs: 42 {{{ 43 set LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/user/aribalibs 44 }}} 45 and run VLC with 46 {{{ 47 vlc --plugin-path=/home/user/vlclibs 48 }}} 42 49 43 50 === A first test: === … … 45 52 Now it's time for a first simple test. 46 53 47 Run two instances of the modified vlc-players:[[BR]] 48 {{{ 49 LANG=en_US.UTF-8 vlc-mcpo & LANG=en_US.UTF-8 vlc-mcpo & 50 }}} 51 (Note: {{{LANG=en_US.UTF-8}}} sets the language of these two vlc-instances to English for easier following of the instructions below.) 52 53 Two vlc-windows should open, let's call them [S] and [R]. 54 Run two instances of the modified vlc-players. At best, use two different machines as there are some connection problems with Ariba when running two instances on the same machine[[BR]] 55 56 To follow the instructions here, you can switch the language to English: 57 {{{ 58 LANG=en_US.UTF-8 vlc --plugin-path=/home/user/vlclibs 59 }}} 60 61 When you now have two vlc-windows let's continue, we'll call them [S] and [R]. 54 62 55 63 [[Image(VLC_media_player.png)]] … … 57 65 * Receiver side [R] 58 66 * On [R] please click: Media > Open Network Stream... [[BR]] 59 * Then choose: Protocol: » MCPO« (Note: If you can only see protocols like: HTTP, HTTPS, UDP, etc but no MCPOthen the plugin wasn't loaded correctly into your vlc. Please refer to the trouble shooting section in this case.) [[BR]]67 * Then choose: Protocol: »AribaMC« (Note: If you can only see protocols like: HTTP, HTTPS, UDP, etc but no »AribaMC« then the plugin wasn't loaded correctly into your vlc. Please refer to the trouble shooting section in this case.) [[BR]] 60 68 * The address field should now look like this: {{{1234:localhost:5000}}} [[BR]] 61 69 * Press »play«. … … 65 73 * Server side [S] 66 74 * On [S], click: Media > Streaming... [[BR]] 67 * Add a video file. (For a first test we recommend the test-video [coming soon], or at least a video you're successfully able to stream via UDP. Just eliminate sources of error not connected to the vlc-mcpoplugin.) [[BR]]75 * Add a video file. (For a first test we recommend the test-video [coming soon], or at least a video you're successfully able to stream via UDP. Just eliminate sources of error not connected to the AribaMC plugin.) [[BR]] 68 76 * Press »Stream«. [[BR]] 69 77 * Press »Next«. [[BR]] 70 * Choose » MCPO«and press »Add«. [[BR]]78 * Choose »AribaMC« our of the list and press »Add«. [[BR]] 71 79 * Now you can see: Source: Port: 5000; Destination: Address: localhost, Port: 1234 [[BR]] 72 80 * Disable transcoding and press »Stream«. [[BR]] … … 76 84 77 85 === Usage === 78 In this section we describe the parameters of the mcpo-vlc plugin and some usage scenarios which demonstrate the strength of the mcpoapproach.79 80 Mcpo-vlcuses a Spontaneous Virtual Network (SpoVNet) for distributing the video content. Each SpoVNet have to consist of 0-1 senders and 0-N receivers. The connection procedure does not depend on the role (sender/receiver) one instance has. This can confuse a little in the beginning, as on most streaming protocols the role defines whether one instance is client or server.86 In this section we describe the parameters of the AribaMC plugin and some usage scenarios which demonstrate the strength of the AribaMC plugin approach. 87 88 AribaMC uses a Spontaneous Virtual Network (SpoVNet) for distributing the video content. Each SpoVNet have to consist of 0-1 senders and 0-N receivers. The connection procedure does not depend on the role (sender/receiver) one instance has. This can confuse a little in the beginning, as on most streaming protocols the role defines whether one instance is client or server. 81 89 82 90 ==== Parameters ==== 83 91 84 The mcpo-vlc plugin takes three connection parameters. {{{SourcePort:DestinationAddress:DestinationPort}}} (e.g. {{{1234:localhost:5000}}}) 85 86 The {{{SourcePort}}} provides an entry point for other instances to the SpoVNet our instance is in (or will be in). 87 To access this entry point {{{DestinationAddress}}} and {{{DestinationPort}}} must be set on the IP address (or domain name) and {{{SourcePort}}} of an instance in the targeted SpoVNet. 88 89 An instance which has not connected to such an entry point makes up a SpoVNet with only itself in it. 92 The AribaMC plugin takes three connection parameters in the GUI: 93 {{{SourcePort:DestinationAddress:DestinationPort}}} (e.g. {{{1234:localhost:5000}}}) 94 95 The {{{SourcePort}}} provides an entry point for other instances to the SpoVNet our instance is in (or will be in). To access this entry point {{{DestinationAddress}}} and {{{DestinationPort}}} must be set on the IP address (or domain name) and {{{SourcePort}}} of an instance in the targeted SpoVNet. An instance which has not connected to such an entry point makes up a SpoVNet with only itself in it. 96 97 While the GUI only provides limited configuration capabilities, you can use a configuration file that allows for more fine-grained configuration. The configuration file can only be loaded when using VLC with the command line. Setting the configuration file is currently different on sender and receiver side. For setting the config file of the sender use 98 {{{ 99 vlc --plugin-path=/home/user/vlclibs --sout-aribamc-config-file ./config.txt 100 }}} 101 and for the receiver side use 102 {{{ 103 vlc --plugin-path=/home/user/vlclibs --config-file ./config.txt 104 }}} 105 106 The configuration file can hold several parameters, the [wiki:Documentation/Configuration main documentation is here]. 107 108 109 110 111 112 113 To view further parameters of the AribaMC plugin do: 114 {{{ 115 ./vlc -p aribamc 116 }}} 117 118 which outputs 119 120 {{{ 121 VLC media player 1.0.6 Goldeneye 122 123 MCPO input (aribamc) 124 --caching <integer> Caching value in ms 125 --config-file <string> ariba config file 126 127 MCPO stream output (aribamc) 128 --sout-aribamc-caching <integer> 129 Caching value (ms) 130 --sout-aribamc-config-file <string> 131 ariba config file 132 }}} 90 133 91 134 ==== Creating a SpoVNet ==== 92 135 93 At first we need an initial SpoVNet, consisting of a single mcpo-vlcinstance. This instance can either be server or client but must be accessible from (at least) the second instance. (Means, it mustn't be blocked by a firewall or NAT.) On the first instance we have to set the {{{SourcePort}}}. {{{DestinationAddress}}} and {{{-Port}}} can be set but as long as there is no other instance listening there, setting this parameters has no effect.136 At first we need an initial SpoVNet, consisting of a single AribaMC instance. This instance can either be server or client but must be accessible from (at least) the second instance. (Means, it mustn't be blocked by a firewall or NAT.) On the first instance we have to set the {{{SourcePort}}}. {{{DestinationAddress}}} and {{{-Port}}} can be set but as long as there is no other instance listening there, setting this parameters has no effect. 94 137 95 138 On the second instance, {{{DestinationAddress}}} and {{{-Port}}} must be set adequate. It can also set the {{{SourcePort}}} to act as an entry point later. … … 209 252 210 253 == Developer Guide == 211 The ''Developer Guide'' describes how to compile VLC and the vlc-mcpoplugin, and how to insert the plugin's code into an existing VLC code.254 The ''Developer Guide'' describes how to compile VLC and the AribaMC plugin, and how to insert the plugin's code into an existing VLC code. 212 255 213 256 === Compile Ariba & MCPO === 214 257 215 In order to compile the vlc-mcpoplugin, you have to install ''Ariba'' and ''MCPO'' first. By following the instructions below, you compile and install them to {{{$HOME/local}}} in your home-directory. Further information are provided on the official Ariba-Installation page (http://ariba-underlay.org/wiki/BaseInstall).258 In order to compile the AribaMC plugin, you have to install ''Ariba'' and ''MCPO'' first. By following the instructions below, you compile and install them to {{{$HOME/local}}} in your home-directory. Further information are provided on the official Ariba-Installation page (http://ariba-underlay.org/wiki/BaseInstall). 216 259 217 260 On ''ubuntu 9.10 / 10.04'' the following packages are necessary: … … 247 290 === Getting the plugin code === 248 291 249 The source code package contains a modified vlc-1.0.6 including the vlc-mcposender code, the receive code and the gui modifications. If you want to compile a vlc-1.0.6 (same version as in the ubuntu 10.04 repository) you can continue reading the ''compile the modified VLC'' section.292 The source code package contains a modified vlc-1.0.6 including the AribaMC sender code, the receive code and the gui modifications. If you want to compile a vlc-1.0.6 (same version as in the ubuntu 10.04 repository) you can continue reading the ''compile the modified VLC'' section. 250 293 251 294 The following instructions help to insert the plugin code into an existing vlc source (e.g. from a different version than 1.0.6): … … 254 297 * Get the vlc source code you intend to modify. 255 298 * Insert the following folders from "our" source code: 256 * vlc/modules/access/ mcpo257 * vlc/modules/access_output/ mcpo299 * vlc/modules/access/aribamc 300 * vlc/modules/access_output/aribamc 258 301 * Activate the new folders by adjusting the following files. (You can make a {{diff}}} with our version of these files to see the changes.): 259 302 * vlc/configure.ac … … 261 304 * vlc/access_output/Modules.am 262 305 263 Note: The file {{{vlc/modules/access_output/ mcpo/mcpo.c}}} is based on {{{vlc/modules/access_output/udp.c}}}. You might to consider this, if you work on this code.306 Note: The file {{{vlc/modules/access_output/aribamc/mcpo.c}}} is based on {{{vlc/modules/access_output/udp.c}}}. You might to consider this, if you work on this code. 264 307 265 308 ==== GUI support ==== 266 For MCPO-Gui support please adjust the following files. You can see the changes by making a {{{diff}}} between your version of these files and the original ones.309 For AribaMC-Gui support please adjust the following files. You can see the changes by making a {{{diff}}} between your version of these files and the original ones. 267 310 * vlc/modules/gui/qt4/dialogs/sout.cpp 268 311 * vlc/modules/gui/qt4/components/open_panels.cpp … … 274 317 Probably you want to set the ariba logging output to "info": 275 318 {{{ 276 * on vlc/modules/access/ mcpo/McpoModule.cpp edit line 24319 * on vlc/modules/access/aribamc/McpoModule.cpp edit line 24 277 320 from: 278 321 logger->setLevel(log4cxx::Level::getWarn()); … … 280 323 logger->setLevel(log4cxx::Level::getInfo()); 281 324 282 * Equally on vlc/modules/access_output/ mcpo/McpoModule.cpp line 30.325 * Equally on vlc/modules/access_output/aribamc/McpoModule.cpp line 30. 283 326 }}} 284 327