GoalBit Media Player

GOALBIT is a Peer-to-Peer distribution system, capable of distributing high bandwidth live media content to all network peers while preserving its perceived quality

User Guide Created By David Childers

Research for this project is / was partially supported by Institut National de Recherche en Informatique - France Administración Nacional de Telecomunicaciones - Uruguay Universidad de la Republica - Uruguay


Creative Common License This body of work is released under the Attribution-ShareAlike version 3.0, Creative Common License. You may freely distribute or modify this work for commercial or non commercial purposes. If you choose to modify this work, you are required to comply with the Attribution-ShareAlike version 3.0, Creative Common License requirements. These requirements include: - You must attribute any derivatives of this work to David Childers. - If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license. For the complete legal code, please refer here: http://creativecommons.org/licenses/by-sa/3.0/legalcode


Foreward Project Members Introduction Motivation Architecture Debian Linux Installation Streaming Shoutcast / Icecast – Video / Audio Links To Additional Information

Foreward The GoalBit Media Player Project represents a dramatic improvement for Peer-to-Peer multimedia streaming. It provides the ability to pull stream data from multiple sources as well as the ability to restructure the Peer-to-Peer network for optimum data transfer. These advances eliminate the potential for stream failure due to lost data or network latency. I would like to thank these people: The GoalBit Media Player project members and Streamer 45 for providing software testing information. Pode ser que os seus sonhos se realizem. David Childers Sustaining Member

Society Motion Picture and Television Engineers

Discovery is seeing what everybody else has seen, and thinking what nobody else has thought. Albert Szent-Gyorgyi

Project Members Project Leader Rodriguez-Bocca, Pablo Principal Researchers [4] Cancela, Héctor Rodriguez-Bocca, Pablo Robledo, Franco Rubino, Gerardo Developement Engineers [7] De Vera, Daniel Rostagnol, Claudia Barrios, Andres Barrios, Matías Comas, Juan José Lacuesta, Sebastián Perdomo, Pablo Rodriguez, Laura Past Researchers and Engineers [11] Capdehourat, German Chadarevian, Andrés Couto da Silva, Ana Paul Fargeas, Gildas Fernández Ibarra, José Luis Fischer, Xavier Kassis, Roxanda Martínez, Marcelo Morón, Alexis Sabiguero, Ariel Stábile, Luis

Introduction GoalBit is a Peer-to-Peer distribution system, capable of distributing high bandwidth live media content to all network peers while preserving its quality. This project follows a BitTorrent like approach in which the media stream is broken down into partial streams. These partial streams are then relayed to other clients within the Peer-to-Peer network. In order to measure the peer's perceived quality, GoalBit uses the recently developed PSQA (Pseudo Subjective Quality Assessment) technology. Basic Features GoalBit is a free software project for video and audio streaming. It is released under the GNU General Public License. GoalBit runs on GNU / Linux, *BSD, Solaris, and Microsoft Windows. GoalBit uses BitTorrent streaming. GoalBit supports the following formats: Media File, Video acquisition (DV, webcam), HTTP/MMS/FTP, Shoutcast/Icecast, UDP/RTP, Unicast/Multicast, TCP/RTP Unicast, DVD, VCD, SVCD, etc. GoalBit supports various audio and video codecs: MPEG-1, MPEG-2, MPEG-4, DivX, WMV, Theora, VP3, VP6, Dirac, H.264, AAC, AAC+, MP3, Ogg, WMA. A full video delivery network monitoring suite is included. (The perceived quality of the client is automatically measured in real time.)

Motivation There is a steady growth of multimedia distribution systems being used on the Internet. This is a result of the increasing development of broadband access for residential users in addition to new business models for content producers. These producers use various methods for content distribution that depend on the size and popularity of the media being distributed. The majority of content producers use a traditional Content Delivery Network (CDN) structure (such as msnTV, YouTube, Jumptv, etc.). There are several mature Peer-to-Peer (P2P) systems (such as Joost, iMP, etc.) that are used to distribute both audio and video media as well. Peer-to-Peer architectures are virtual networks developed at the application level over the Internet infrastructure. The nodes in a P2P network are called peers, and they offer their resources (bandwidth, processing power, storing capacity) to the other nodes. These nodes share their resources because they are exchanging data that is common to all participants. When the number of participating nodes increase, the global resources of the Peer-to-Peer network also increase, which allows for greater content distribution potential. Peer-to-Peer networks are very popular and are widely used for file sharing and content distribution. Some examples of Peer-to-Peer networks include: BitTorrent, KaZaA, eMule, etc.

Architecture Inside the GoalBit Project there are five basic components (Fig. 1): the streaming server, the clients, the control server, the PSQA learning tool and the webstat application.

Fig. 1. Global architecture The streaming server distributes the media content over the P2P Delivery Network. It represents the primary node in the peer distribution architecture. Each client receives several partial streams from other clients that are located elsewhere. The client is able to reconstruct the complete media stream from the various partial streams that they receive. The client continuously measures information about the network distribution quality and reports this data to the control server. Each client receives instructions from the control server that specify which nodes to connect to and get the partial streams from. The control server automatically measures the perceived quality at the client side and predicts the best possible path for the Peer-to-Peer data transfer. It periodically rebuilds the structure of the distribution network based on these values. The PSQA software learning tool is used to predict the perceptual quality value within the network. The webstat application provides a web interface for the network topology and the client’s reports presentation.

Debian Linux Installation Opentracker Information Opentracker is an open bittorrent tracker. This tracker is open in a sense that everyone announcing a torrent is welcome to do so and will be informed about anyone else announcing the same torrent. Unless -DWANT_IP_FROM_QUERY_STRING is enabled (which is meant for debugging purposes only), only source IPs are accepted. The tracker implements a minimal set of essential features only. When tested, the software was capable of responding to more than 10000 requests per second on a Sun Fire 2200 M2 (thats where we found no more clients able to fire more of our testsuite.sh script). Some tweaks you may want to try under FreeBSD: sysctl sysctl sysctl sysctl kern.ipc.somaxconn=1024 kern.ipc.nmbclusters=32768 net.inet.tcp.msl=10000 kern.maxfiles=10240

License information: Although the libowfat library is under GPL, Felix von Leitner aggreed that the compiled binary may be distributed under the same beer ware license as the source code for opentracker. However, we like to hear from happy customers.

GoalBit Information Download the source code $ mkdir -p ~/svn/ $ cd ~/svn/ $ svn co https://goalbit.svn.sourceforge.net/svnroot/goalbit goalbit Prepare your environment Install 3rd party dependencies Not all of them are necessary, come back later if you have trouble in the compilation step # apt-get # apt-get # apt-get dev # apt-get # apt-get # apt-get # apt-get install autoconf cvs git git-core subversion sudo gdb build-dep vlc install libavcodec-dev libpostproc-dev libmpeg2-4-dev x264 libx264-dev libswscaleinstall install install install libfaac-dev libfaac0 libxvidcore4-dev libxvidcore4 liblame-dev libmp3lame0 libmp3lame-dev libqt4-dev libxpm-dev

Compile miniupnp This software is mandatory, it allows the opening of TCP ports in your router/firewall $ $ $ $ $ cd ~/svn/goalbit/build/contribs tar xvf miniupnpc-1.1.tar.gz cd miniupnpc-1.1/ make sudo make install

Compile Tracker $ $ $ $ cd ~/svn/goalbit/src/opentracker/libowfat/ make cd ~/svn/goalbit/src/opentracker/btv-opentracker/ make

Compile GoalBit cd ~/svn/goalbit/src/goalbit/ rm -rf autotools/ intl/ make clean ./bootstrap ./configure --enable-optimize-memory --enable-mostly-builtin --enable-debug \ --enable-sout --enable-httpd --enable-vlm --enable-dshow \ --enable-libcdio --enable-vcdx --enable-cdda --enable-vcd --enable-ogg --enable-mkv --enablemad \ --enable-vorbis --enable-speex --enable-x264 \ --enable-real --enable-realrtsp \ $ $ $ $ $

--enable-x11 --enable-xvideo --enable-glx --enable-opengl --enable-sdl --enable-freetype -enable-fribidi --enable-v4l2 \ --enable-directx --enable-fb --enable-caca --enable-oss --enable-esd --enable-alsa \ --enable-skins2 --enable-wxwidgets --enable-visual --enable-qt --enable-qt4 \ --enable-galaktos --enable-loader --enable-theora \ --disable-dvdread --disable-dvdnav \ --enable-ffmpeg --disable-live555 --enable-a52 --enable-libmpeg2 \ --enable-mozilla \ --disable-hal $ ./compile If you want to integrate the tracker with the GoalBit media player (experimental), add the following lines to the configuration. --enable-goalbit_btv_tracker --with-owfattree=/home/USER/svn/goalbit/src/opentracker/libowfat/ Try it! $ cd ~/svn/goalbit/src/goalbit/ $ ./goalbit -vvv

Streaming Shoutcast / Icecast – Video / Audio Installing The Tracker Software Download and run the latest version of the btv opentracker: http://goalbit.svn.sourceforge.net/viewvc/goalbit/build/dists/ For the windows version of the open tracker, the DLL file must be placed in the same directory as the btv-open tracker software. The tracker will run on port 6969 and is viewed as: http://your_ip_address:6969. Installing The GoalBit Software Download the latest version of GoalBit. http://goalbit.sourceforge.net/downloads.html Install the GoalBit software. Configuring The GoalBit Software Run GoalBit. Click on the Broadcast yourself tab. (Main screen) Another screen will open.

Configuring The Station Information Input all the channel / station information. - Channel identifier - Channel name - Channel description - Channel logo * If you substitute the logo, the replacement must be continuously accessible via the Internet.

Configuring GoalBit To Broadcast An Icecast / Shoutcast Stream Click on the Input parameters button (Broadcast yourself screen), another screen will open. Click on the the Network tab. Select the HTTP Protocol. Input the network address of the computer running the Shoutcast or Icecast media server. Shoutcast NSV Video - http://DNAS_server_ip_addrress:port_number/;stream_name.nsv MP3 Audio - http://DNAS_server_ip_addrress:port_number/ AAC Audio - http://DNAS_server_ip_addrress:port_number/ AAC+ Audio - http://DNAS_server_ip_addrress:port_number/ Icecast Theora Video - http://Icecast_server_ip_address:port_number/stream_name.ogg Ogg Audio – http://DNAS_server_ip_addrress:port_number/stream_name.ogg

Click the accept button after entering the stream information. Configuring The GoalBit Software To Connect To The Tracker Software Click on the Output parameters button (Broadcast yourself screen), another screen will open. Change only the tracker URL address. (This is the network address of the computer running the open tracker software.) Click the accept button after entering the tracker URL address.

Creating The GoalBit Torrent File Click on the Generate GoalBit file button (Broadcast yourself screen). The file that is generated must given to people or embedded on a web site so that they can listen to or view the station. Streaming The Content With GoalBit To start the P2P broadcast, click the play button and GoalBit will start after a few seconds. End users must install the GoalBit media player to watch the P2P streaming content.

Links To Additional Information Documentation for the Icecast / Shoutcast multimedia server. Icecast server www.icecast.org/docs.php Shoutcast server www.shoutcast.com/support Download and documentation for the Dirac and Theora video codecs. Dirac www.diracvideo.org (ffmpeg2dirac) converts media to dirac/ogg in the ogg format Theora www.theora.org (ffmpeg2theroa) converts media to theora/ogg in the ogg format Documentation for Nullsoft Video streaming. NSV www.scvi.net Software to source static video and audio files to the Icecast multimedia server. Ezstream www.icecast.org/ezstream.php