现在的位置: 首页 > 综合 > 正文

Getting Started with the Helix Sources(II)

2013年09月22日 ⁄ 综合 ⁄ 共 24263字 ⁄ 字号 评论关闭
文章目录
 

Part 2: Building the Helix DNA Server Sources

Purpose

The purpose of this document is to give developers step-by-step instructions for obtaining and building the Helix DNA Server source code.

Note: It is assumed that you have already configured CVS as described in Part 1: Installing and Running CVS, and are ready to build the Helix DNA Server. Note that there are other technology-specific build guides, including guides for Helix DNA Server, Helix DNA Producer, and Helix Player.

Step-by-Step Instructions

In the following steps, what you type is in bold. When what you would type is pretty much the same on all platforms, then only the Unix example will be given. When there is a significant difference in what you type between platforms, an example of what to type on each platform will be given. In some cases below, some of the text printed on the screen has been shortened for brevity. Whenever this is done you will see ellipses (...) in the place that text was removed. Also note that when we set environment variables in the examples for Unix below, we are assuming the bash shell. The exact method for setting environment variables may differ depending on your platform and shell.

These steps are presented in the following sections:

  1. Setting Up Your Build Environment
  2. Obtaining and Building the Server Source Code
  3. Running the Server for the First Time
  4. Next Steps

A. Setting Up Your Build Environment

  1. The following build tools are necessary (based on the general Helix Tools Guidelines):

    • CVS (Concurrent Versions System): This is covered in Part 1: Installing and Running CVS.
    • Python: Version 1.5.2 or later Python can be obtained at http://www.python.org.
    • Ribosome: This is a set of programs written in the Python programming language which provide a common interface to retrieving and building programs from source code stored in a CVS repository. This is also covered in Part 1: Installing and Running CVS.
    • [Windows only]: A rm.exe executable, such as the one included in the Cygwin tools.
    • make: For some platforms, this comes with the system. If not, or if it seems to have problems, GNU make can be obtained from http://www.gnu.org/software/make/. Windows developers can use the nmake.exe that is included with Visual C++.
    • A supported build-platform: See the table of supported Operating Systems and compilers below.
  2. Set your SYSTEM_ID environment variable. The SYSTEM_ID environment variable tells the build system what kind of platform you are running on. Do not use the SYSTEM_ID setting from Part 1: Installing and Running CVS. The following SYSTEM_ID values should be used when building the server:

       

      SYSTEM_ID OS CPU COMPILER SERVER_10_1_STABLE SERVER_CURRENT
      aix-4.3-powerpc  AIX 4.3/5.x  PowerPC  IBM xlC ver. 5 
      experimental 
      experimental 
      freebsd-5.0-i586  FreeBSD 5.x  IA-32  gcc 3.3.x 
      yes 
      yes 
      freebsd-4.0-i586  FreeBSD 4.x  IA-32  gcc 2.95.[23] 
      yes 
      depreciated 
      hpux-11.0-parisc  HP/UX 11.0  HP-PA  HP ver 3.25 
      experimental 
      experimental 
      hpux-11.0-ia64  HP/UX 11.0  Itanium  HP ver x.y (TBD) 
      no 
      experimental (4) 
      linux-2.6-glibc23-i686  Linux 2.6.x (1)  IA-32  gcc 3.3.3 
      no 
      yes 
      linux-2.4-glibc23-i686  Linux 2.4.x (1)  IA-32  gcc 3.3.3 
      no 
      yes 
      linux-2.2-libc6-i586-server  Linux 2.4 (2)  IA-32  gcc 2.95.[23] 
      yes 
      depreciated 
      linux-2.6-glibc23-amd64  Linux  AMD64  gcc 3.2.2 
      no 
      experimental (4) 
      TBD  Mac OS X  PowerPC  TBD 
      no 
      experimental (4) 
      netbsd-1.6-i586  NetBSD 1.6  IA-32  gcc 2.95.3 
      no 
      experimental 
      openbsd-3.3-i586  OpenBSD 3.3  IA-32  gcc 2.95.3 
      no 
      experimental 
      sunos-5.8-sparc-server  Solaris 8 (3)  UltraSPARC  Sun WS 6up2 
      yes 
      yes 
      TBD  Solaris 8/9  UltraSPARC  gcc 3.3.x 
      no 
      experimental (4) 
      osf-5.1-alpha  Tru64 (OSF/1) 5.1  Alpha  C++ V6.2-024 
      experimental 
      experimental 
      win32-i386-vc6  Windows NT/2k/XP  IA-32  Visual C++ 6.0 
      yes 
      depreciated 
      win32-i386-vc7  Windows Server 2003  IA-32  VS.NET 2003 
      no 
      yes 

      (1) For example: Debian (sarge) with gcc 3.3.3.

      (2) For example: Red Hat 7.3 or Debian 3.0 (woody) with gcc 2.95.x.

      (3) Note that this is a different SYSTEM_ID than used by the Helix DNA Client when building on this platform.

      (4) Various parties are in the process of porting the server to these platforms, or adding support for different compiler and OS versions for already-supported platforms. Contact helix-server-dev@lists.helixcommunity.org for more information or to help, or to start a project for another platform.
       

  3. [Windows only]: Set your HOME environment variable. (On Unix systems, HOME will already be set.) You should not include a trailing slash on this environment variable since some versions of CVS fail when this occurs. On Windows, it might look like:

  4. c:/src> set HOME=C:

  5. Using your favorite text editor, create a .buildrc file in your HOME directory. See BUILD_ROOT/build/doc/buildrc.html for more information on .buildrc files. Make sure that you have at least the lines listed below in your .buildrc file.

  6. ~/src> cat ~/.buildrc
    AddMultiCVS("helix", ":ext:myusername@cvs.helixcommunity.org:/cvsroot")
    AddBIFPath("common", "[helix]common/build/BIF")
    AddBIFPath("server", "[helix]server/build/BIF")
    ~/src>

    If you have never used the build system before, you will need to create this file manually. If you have used it, but for other non-server Helix projects, the "server" line will need to be added.

  7. Create a new directory to hold the Helix source tree. You can create this directory wherever you want. One suggested technique is to create a directory that is a peer to my ribosome directory.

  8. ~/src> mkdir helix
    ~/src> cd helix
    ~/src/helix>

B. Obtaining and Building the Server Source Code

  1. For those who want to "cut to the chase", you can try the quick command-line approach:

    ~/src/helix> build -u -c -y -m SERVER_CURRENT -P helix-server-nodist servinst
    ...
    MD5 (debug/servinst_nodist_linux-2.2-libc6-i586-server.bin)e80c91980d30424c782df147799cfc8f
    ...
    ~/src/helix>

    You should use build --help to learn what those command-flags mean, and match them to the explanations below.

    Otherwise, continue with the following steps.

  2. Run the build system by typing build. The build system is a menu-driven Python script that can check out the required source code from CVS as well as compile it. In order for each of the following example steps to be clear and complete, we will run the build system, choose the option for that step, and exit. Of course, you don't have to exit and restart between each step.

  3. ~/src/helix> build
    Updating [common] BIF files...
    running 'cvs -d :ext:myusername@cvs.helixcommunity.org:/cvsroot checkout common/build/BIF' in
      '/home/myusername/src/ribosome/build/bif-cvs/helix' (as = None)
    cvs server: Updating common/build/BIF
    
    U common/build/BIF/helix.bif
    
    Updating [server] BIF files...
    cvs server: Updating server/build/BIF
    reading /home/myusername/src/ribosome/build/bif-cvs/helix/common/build/BIF/helix.bif file
    
    
    
    Build System Menu
    -> Current Directory: /home/myusername/src/helix
    [0] Set BIF branch (helix)
    [1] Set Target(s) (splay_mp3)
    [2] Set Profile (default)
    [3] run: build
    [4] Toggle make depend make depend & makefiles (-e -n)
    [5] Toggle release (-trelease)
    [6] Toggle 'make clean'  (-c)
    [7] Toggle clobber (Dangerous!) (-C)
    [8] Toggle halt-on-error (-p green)
    [9] Toggle verbose mode (-v)
    [10] Toggle static build (-tnodll)
    [11] Checkout source for selected target now
    [12] Set Tag/Branch/Timestamp
    [13] Help Page (full help in build/doc/index.html)
    [Q] Quit
    Enter selection or flags: _
  4. From the build system menu, set your BIF branch to SERVER_CURRENT. BIF files specify what CVS modules are available, where in CVS they exist, and their inter-module dependencies. SERVER_CURRENT is where most developers should usually work. (If you're familiar with CVS, this BIF configuration pulls the server source from the CVS HEAD). However, since this is the leading-edge of the codebase, occasionally builds or functionality may be broken. This is, after all, where the largest and most significant work items progress. If this occurs, developers should check with the helix-server-dev e-mail list. In some situations it may be preferable to work with the most recent STABLE branch, which is currently SERVER_10_1_STABLE.

    While every effort is made to keep SERVER_CURRENT reasonably stable at all times, temporary breaks here are much more likely than on a SERVER_xxx_STABLE branch. Note that the default BIF branch, 'helix', should not be used for building the server.

    Build System Menu
    -> Current Directory: /home/myusername/src/helix
    [0] Set BIF branch (helix)
    [1] Set Target(s) (splay_mp3)
    [2] Set Profile (default)
    [3] run: build
    [4] Toggle make depend make depend & makefiles (-e -n)
    [5] Toggle release (-trelease)
    [6] Toggle 'make clean'  (-c)
    [7] Toggle clobber (Dangerous!) (-C)
    [8] Toggle halt-on-error (-p green)
    [9] Toggle verbose mode (-v)
    [10] Toggle static build (-tnodll)
    [11] Checkout source for selected target now
    [12] Set Tag/Branch/Timestamp
    [13] Help Page (full help in build/doc/index.html)
    [Q] Quit
    Enter selection or flags: 0
    
    Select BIF or type ? to see a list: ?
    
    Available Branches
    [0] SERVER_10_1_STABLE
    [1] SERVER_10_1_STABLE-helix
    [2] SERVER_10_1_STABLE_COMMON
    [3] SERVER_9_0_STABLE
    [4] SERVER_9_1_STABLE
    [5] SERVER_CURRENT
    [6] SERVER_CURRENT_COMMON
    [7] helix
    
    
    Select BIF or type ? to see a list: 5

    More information about the available branches will be provided soon. For now, just use SERVER_CURRENT unless you have been advised differently. Note that this is a different BIF than used for building the Helix DNA Client, Helix DNA Producer or other projects.

  5. From the build system set the build target to servinst. This may have happened automatically when you selected the branch in the previous step. If not you will need to select it. The build targets are all listed in the file BUILD_ROOT/build/bif-cvs/helix/server/build/BIF/SERVER_CURRENT.bif and as you can see if you look at this file, there are a lot of targets. The most relavent targets are:

    1. servinst: The "Public" (no binary add-on distributions) server, supporting static content playback of .mp3 datatypes.
    2. servinstplus: The "Plus" (with binary add-on distributions) server, supporting static and live playback of numerous datatypes.

    We will choose the target servinst. If this target is not already selected by default, you can either choose this by typing the target name directly or by getting a listing and then entering the index which corresponds to the desired target. We will choose to look through the list and select the index of servinst:

  6. Build System Menu
    -> Current Directory: /src/helix
    [0] Set BIF branch (SERVER_CURRENT)
    [1] Set Target(s) (splay_mp3)
    [2] Set Profile (default)
    [3] run: build
    [4] Toggle make depend & makefiles (-e -n)
    [5] Toggle release (-trelease)
    [6] Toggle 'make clean'  (-c)
    [7] Toggle clobber (Dangerous!) (-C)
    [8] Toggle halt-on-error (-p green)
    [9] Toggle verbose mode (-v)
    [10] Toggle static build (-tnodll)
    [11] Checkout Source for Target
    [12] Help Page (full help in build/doc/index.html)
    [13] Quit
    Enter selection or flags: 1
    
    [0] List server targets...
    [1] List other targets...
    [2] List tools targets...
    [3] List dsg targets...
    [4] List core targets...
    [5] List client targets...
    [6] List player targets...
    [7] List all targets...
    
    Select target (Q exits, ? for list): 0
    
    [0] adminfs
    [1] authmgr
    [2] bascauth
    [3] dbmgr
    [4] httpfsys
    ...
    [107] servinst
    ...
    Select target (Q exits, enter for more):107
    
    
    Build System Menu
    -> Current Directory: /src/helix
    [0] Set BIF branch (SERVER_CURRENT)
    [1] Set Target(s) (servinst)
    [2] Set Profile (default)
    [3] run: build
    [4] Toggle make depend make depend & makefiles (-e -n)
    [5] Toggle release (-trelease)
    [6] Toggle 'make clean'  (-c)
    [7] Toggle clobber (Dangerous!) (-C)
    [8] Toggle halt-on-error (-p green)
    [9] Toggle verbose mode (-v)
    [10] Toggle static build (-tnodll)
    [11] Checkout source for selected target now
    [12] Set Tag/Branch/Timestamp
    [13] Help Page (full help in build/doc/index.html)
    [Q] Quit
    Enter selection or flags: _
  7. From the Build System Menu, set your profile:

    • For servinst use the helix-server-nodist profile.
    • For servinstplus use the helix-server-plus profile.

    This may happen automatically, depending on the BIF and target chosen previously. You will at least need to double-check that the correct profile has been selected. A profile is just a collection of defines that get passed to the compiler to optionally include certain features in the server. These profiles, of which you can make your own, help tailor your server to your environment. You can leave out certain features you don't need in order to save run-time memory and decrease the size of the executable. We won't go into what all these features are right now, but you can find more information about these features in the document that talks about helix feature defines. We want just enough features turned on to build a server which can stream MP3 files and the profile for this is called helix-server-nodist. The 'nodist' stands for 'no-distribution-binaries' which means that the server being built does not contain any pre-compiled binaries (libraries or plugins). You will find all of the different profiles in BUILD_ROOT/build/umakepf. So we run the build system again, set the profile, then exit.

  8. Build System Menu
    -> Current Directory: /home/myusername/src/helix
    [0] Set BIF branch (SERVER_CURRENT)
    [1] Set Target(s) (servinst)
    [2] Set Profile (default)
    [3] run: build
    [4] Toggle make depend & makefiles (-e -n)
    [5] Toggle release (-trelease)
    [6] Toggle 'make clean'  (-c)
    [7] Toggle clobber (Dangerous!) (-C)
    [8] Toggle halt-on-error (-p green)
    [9] Toggle verbose mode (-v)
    [10] Toggle static build (-tnodll)
    [11] Checkout Source for Target
    [12] Help Page (full help in build/doc/index.html)
    [13] Quit
    Enter selection or flags: 2
    
    
    [0] default
    [1] helix-client-all-defines
    [2] helix-client-all-defines-nodist
    [3] helix-client-local-audio-all
    [4] helix-client-local-mp3
    [5] helix-client-local-net-nodist
    [6] helix-client-local-net-ra
    [7] helix-client-local-net-ra-mp3
    [8] helix-client-local-net-ra-rv
    [9] helix-client-local-net-ra-rv-mp3
    [10] helix-client-local-nodist
    [11] helix-client-local-ra
    [12] helix-client-local-ra-mp3
    [13] helix-client-local-ra-rv
    [14] helix-client-local-ra-rv-mp3
    [15] helix-client-mobile-local-net-ra-rv-mp3
    [16] helix-client-mobile-openwave
    [17] helix-client-mobile1
    [18] helix-client-net-nodist
    [19] helix-client-net-ra
    [20] helix-client-net-ra-rv
    [21] helix-client-ppc
    Select profile (Q exits, enter for more): <enter>
    
    [22] helix-client-s60-advanced
    [23] helix-client-s60-basic
    [24] helix-producer-all-defines
    [25] helix-producer-nodist
    [26] helix-server-all-defines
    [27] helix-server-client-common
    [28] helix-server-nodist
    [29] helix-server-plus
    [30] trimedia-helix-client-net-ra
    Select profile (Q exits, ? for list): 28
    
    
    Build System Menu
    -> Current Directory: /home/myusername/src/helix
    [0] Set BIF branch (SERVER_CURRENT)
    [1] Set Target(s) (servinst)
    [2] Set Profile (helix-server-nodist)
    [3] run: build
    [4] Toggle make depend & makefiles (-e -n)
    [5] Toggle release (-trelease)
    [6] Toggle 'make clean'  (-c)
    [7] Toggle clobber (Dangerous!) (-C)
    [8] Toggle halt-on-error (-p green)
    [9] Toggle verbose mode (-v)
    [10] Toggle static build (-tnodll)
    [11] Checkout source for selected target now
    [12] Set Tag/Branch/Timestamp
    [13] Help Page (full help in build/doc/index.html)
    [Q] Quit
    Enter selection or flags: _

  9. By default, a 'debug' build will be created, which will leave the symbols intact as well as enable certain debugging code within the server (such as ASSERTs) and will disable compiler optimizations. To create a 'release' build, use option [5] Toggle release (-trelease). Note that when you select this option, it changes the text for option [3] run: build to be [3] run: build -trelease.

  10. Build the helix server installer by selecting menu option [3] run: build from the Build System Menu. After we do this, the build system will checkout modules and files from cvs.helixcommunity.org and then begin building them.

  11. Build System Menu
    [0] Set BIF branch (SERVER_CURRENT)
    [1] Set Target(s) (servinst)
    [2] Set Profile (helix-server-nodist)
    [3] run: build
    [4] Toggle make depend make depend & makefiles (-e -n)
    [5] Toggle release (-trelease)
    [6] Toggle 'make clean'  (-c)
    [7] Toggle clobber (Dangerous!) (-C)
    [8] Toggle halt-on-error (-p green)
    [9] Toggle verbose mode (-v)
    [10] Toggle static build (-tnodll)
    [11] Checkout source for selected target now
    [12] Set Tag/Branch/Timestamp
    [13] Help Page (full help in build/doc/index.html)
    [Q] Quit
    Enter selection or flags: 3
    Updating [common] BIF files...
    CVS(updated): common/build/BIF/helix.bif
    Updating [server] BIF files...
    CVS(locally modified): server/build/BIF/SERVER_CURRENT.bif
    reading bif="/home/myusername/src/build/bif-cvs/helix/server/build/BIF/SERVER_CURRENT.bif" file
    computing dependency tree
    
    Build System (V2.1)
    time: Fri Oct  3 15:59:10 2003
    outfile: build.out
    branch: SERVER_CURRENT
    platform: linux-2.2-libc6-i586-server
    distribution/archive from: linux-2.2-libc6-i586-server
    build Type: debug
    build options: debug
    profile: /home/myusername/src/build/umakepf/helix-server-nodist
    copy target: debug
    target(s): servinst
    ['default']
    ...
    getting files
    checking out repository source
    cvs module="server/installer/common/util" from cvs tag="HEAD" root="helix"
    cvs module="server/installer/common" from cvs tag="HEAD" root="helix"
    cvs module="common/runtime" from cvs tag="HEAD" root="helix"
    cvs module="common/dbgtool" from cvs tag="HEAD" root="helix"
    ...
    
    updating file="./common/include/platform.h" for platform="linux-2.2-libc6-i586-server"
    compiling
    from directory /home/myusername/src/helix
    entering directory common/system
    UNIXCompile(common/system): generating makefiles
    UMAKE: Umakefil -> Makefile in common/system
    UMAKE: Applying profile /home/myusername/src/build/umakepf/helix-server-nodist.pf
    UNIXCompile(common/system): making depend
    UNIXCompile(common/system): making all
    UNIXCompile(common/system): making copy
    leaving directory /home/myusername/src/helix/./common/system
    from directory /home/myusername/src/helix
    entering directory common/util
    UNIXCompile(common/util): generating makefiles
    UMAKE: Umakefil -> Makefile in common/util
    ...
    leaving directory /home/myusername/src/helix/./server/installer/hlxserver/nodist
    UMAKE: Umakefil -> Makefile in
    UMAKE: Applying profile helix-server-nodist.pf
    signing output binaries
    Build Complete: Tue Apr 22 22:37:03 2003
    MD5 (debug/adminfs.so)................737b0975a1ca5ff167faafb2188b9e7d
    MD5 (debug/authmgr.so)................5d678e3d69630e22a99719e8681484b8
    MD5 (debug/contlib.a).................01f11254df509e0fc7b1b5ea5c4a1e31
    ...
    MD5 (debug/servinst_nodist_linux-2.2-libc6-i586-server.bin)e80c91980d30424c782df147799cfc8f
    ...
    
    Build System Menu
    -> Current Directory: /home/myusername/src/helix
    [0] Set BIF branch (SERVER_CURRENT)
    [1] Set Target(s) (servinst)
    [2] Set Profile (helix-server-nodist)
    [3] run: build
    [4] Toggle make depend & makefiles (-e -n)
    [5] Toggle release (-trelease)
    [6] Toggle 'make clean'  (-c)
    [7] Toggle clobber (Dangerous!) (-C)
    [8] Toggle halt-on-error (-p green)
    [9] Toggle verbose mode (-v)
    [10] Toggle static build (-tnodll)
    [11] Checkout source for selected target now
    [12] Set Tag/Branch/Timestamp
    [13] Help Page (full help in build/doc/index.html)
    [14] run history: build
    [Q] Quit
    Enter selection or flags: q
    
    ~/src/helix>

C. Running the Server for the First Time

  1. For the SERVER_CURRENT branch, the server installer is called servinst_nodist_[platform].bin. The "plus" versions of the installer is called servinst_plus_[platform].exe. (For SERVER_9_1_STABLE and earlier branch builds they were named differently.) [platform] could any of the SYSTEM_IDs listed above. If a release build was compiled (option [5] was toggled) the server installer should be in the ~/src/helix/release/ directory. If a debug build was selected, the installer would be in the ~/src/helix/debug/ directory.

  2. Create a directory, such as ~/HelixServer, and copy the installer into the directory. Run the installer and follow its instructions to install the the Helix Server. On Unix it would looks like:

  3. ~/HelixServer> ./servinst_nodist_[platform].bin

    and on Windows it would looks like:

    c:/HelixServer> ./servinst_nodist_[platform].bin

    NOTE: For the RTSP Port enter 1554. If you use the default port 554 the on Unix the server would have to be run by a superuser since the RTSPPort is a privileged port (< 1024). Similarly, port 8080 should be selected for HTTP rather than the default port 80 unless a superuser will be running the server. Also, on Windows, when running the server for development purposes, we recommend NOT installing it as an NT Service.

  4. Once the server has been installed run the server by double clicking on the HelixServer icon on Windows or typing the following command line at the DOS prompt:

  5. c:/HelixServer> ./Bin/hlxserver hlxserver.cfg --debug --rss 10

    and on Unix:

    ~/HelixServer> 
    ./Bin/hlxserver hlxserver.cfg --debug --rss 10 2>&1 | tee Logs/stdout.txt
    
    ./Bin/hlxserver hlxserver.cfg --debug --rss 10 2>&1 | tee Logs/stdout.txt
    Helix DNA Server (c) 1995-2003 RealNetworks, Inc. All rights reserved.
    Version:   Helix DNA Server 10.1 (10.1.0.157) (Build -1/-1) [DEBUG]
    Platform:  linux-2.2-libc6-i586-server
    
    Option: Crash avoidance output enabled
    Option: Allow Core Dump
    Option: Show Debug Messages
    Option: Report Server Stats (10 seconds)
    Option: Maximum Crash Avoids = 1000
    Using Config File: hlxserver.cfg
    Creating Server Space...
    Server has allocated 256 megabytes of memory
    Starting PID 3350, procnum 1 (timer)
    Calibrating Timers...
        10ms Resolution: 0ms drift, Good Clock! :-)
        Timer Parameters: Interval 10, Resync every 4 ticks
    Starting PID 3351, procnum 2 (core)
    Starting Helix DNA Server 10.1 Core...
    2 CPUs Detected...
    Linux kernel version 2.4.18 detected
    Testing File Descriptors...
    Setting per-process descriptor capacity to 10977(16384), 11...
    Testing Mutex...(103.67 ops/usec)
    Testing AtomicOps...(9.75 ops/usec)
    I: Loading Plugins from /home/myusername/servertest/Plugins...
    I: slicensepln.so   0x401b3c80  RealNetworks Licensing Plugin
    D: 2685403136       0000010000000000
    I: mp3fformat.so    0x401e2d10  RealNetworks MP3 File Format Plugin
    D: 0                0000000000000100
    I: smlfformat.so    0x4020d270  RealNetworks SMIL File Format Plugin
    D: 2684355684       0000000000000100
    I: smplfsys.so      0x402282b0  RealNetworks Local File System
    D: 2684355051       0000000000000010
    I: httpfsys.so      0x40263bc0  RealNetworks HTTP File System with CHTTP Support
    D: 2684356122       0000000000000010
    I: httpfsys.so      0x40263bc0  RealNetworks RFC 2397 Data Scheme File System
    D: 2684354560       0000000000000010
    I: adminfs.so       0x402db6a0  RealNetworks Admin File System
    D: 2685403136       0000000000000010
    I: shelfsys.so      0x40331a84  RealNetworks Shell File System
    D: 2685403136       0000000000000010
    I: ramplin.so       0x40340aa0  RealNetworks Ramgen File System
    D: 2685403136       0000000000000010
    I: hxsdp.so         0x403561a8  RealNetworks SDP Stream Description Plugin
    D: 2684355073       0000000001000000
    I: authmgr.so       0x4038cb60  Helix Authentication Manager
    D: 2684355166       0000001000000000
    I: pplyplin.so      0x403d0670  RealNetworks Scalable Multicast Plugin
    D: 2685403136       0000000000000010
    I: qtbcplin.so      0x404229a0  RealNetworks QuickTime Live Broadcast Plugin
    D: 2685403136       0000000000100010
    I: tmplgpln.so      0x4045256c  RealNetworks Custom Logging Plugin
    D: 0                0000010000000000
    I: ppvallow.so      0x40492fe4  RealNetworks Pay Per View Allowance Plugin
    D: 2685403136       0000000100000000
    I: ppvbasic.so      0x404c608c  RealNetworks FlatFile Database Plugin
    D: 2685403136       0000010000000000
    I: bascauth.so      0x404e6880  RealNetworks Basic Authenticator
    D: 2685403136       0000010000000000
    I: dbmgr.so         0x405077d0  RealNetworks Database Manager
    D: 2685403136       0000001000000000
    I: smonplin.so      0x4052c620  RealNetworks System Monitor
    D: 2685403136       0000010000000000
    Starting PID 3352, procnum 3 (rmplug)
    D: Loading Non-MultiLoad 3352: RealNetworks Licensing Plugin
    Loading Helix Server License Files...
    Starting PID 3353, procnum 4 (rmplug)
    D: Loading Non-MultiLoad 3353: RealNetworks Scalable Multicast Plugin
    Starting PID 3354, procnum 5 (rmplug)
    D: Loading Non-MultiLoad 3354: RealNetworks QuickTime Live Broadcast Plugin
    Starting PID 3355, procnum 6 (rmplug)
    D: Loading Non-MultiLoad 3355: RealNetworks Custom Logging Plugin
    Starting PID 3356, procnum 7 (rmplug)
    D: Loading Non-MultiLoad 3356: RealNetworks System Monitor
    Starting PID 3357, procnum 8 (memreap)
    Starting PID 3358, procnum 9 (streamer)
    Starting PID 3359, procnum 10 (streamer)
    

    Note that the computer used for this example is a dual processor system running Linux.

    Also note that the command-line options --debug and --rss 10 will be highly useful in monitoring what your server is doing and in diagnosing problems you may encounter. The --debug option enables extra information to be printed to the console while the server runs, including periodic (60-second) statistics about the server (use --help to see other useful command-line flags). The --rss 10 increases the output interval of these statistics to be every 10 seconds. Adjust this interval as needed.

    A sample of RSS output is the following:

    Server Stats (03-Oct-03 16:22:46)
        Uptime: 0 days, 00:00:05
        Players: 0 (New Players: 0, 0.00/sec)
        Players by Protocol: 0% PNA, 0% RTSP, 0% MMS, 0% HTTP (0% Cloaked)
        Players by Transport: 0% TCP, 0% UDP, 0% MCast
        Net Devices: 0
        Memory Stats: 11167756 Bytes In Use (Allocation Cache Hit Ratio 17%)
        Memory Alloc: 13188412 Bytes (3219 Pages); MMapIO: 0 Bytes
        Recent Memory Stats: 21739 Mallocs, 9233 Frees, 4627 CacheMalloc 6702 CacheMiss
        Recent Memory Stats: 11329 CachedNew, 5245 CachedDel
        Recent Memory Stats: 0 PageFrees (0.00%), 3154 PageAllocs (14.51%)
        10 Second Memory Stats: 0 FreeListEntriesSearched (0.00 per Malloc)
        Memory Allocated OverHead: 0 Free Pages Outstanding, 18.1% Overhead
        Memory per Player: 0k
        Bandwidth Stats: Output 0.00 Mbps, 0.0 Kbps Per Player
        Bandwidth Stats: 100% Subscribed (0.00 Mbps), 100% Nominal (0.00 Mbps)
        Misc Recent Stats: Packets 0, Overload 0, NoBufs 0, OtherUDPErrs 0, Behind 0
        Misc Recent Stats: Resend 0, AggregatedPkts 0
        Misc Recent Stats: WouldBlocks 0, Accepts 0 (0.00/sec)
        Mutex Collisions: 7 / sec, ~0.000% CPU Spinning, ~4.225% Memory Ops
        Scheduler Items: 0 (With Mutex), 10 (Without Mutex)
        Network Items: Read 0 Write 0 | ThreadSafe Read 4 (100.00%)
        Misc: 0 File Objs, 0 IdlePPMs, 0 Forced Selects, 0 Sleepy Selects
        Misc: 0 AggSupport, 0.18ms ITimer[1] Drift/sec, 0 CAs
        Broadcast Reception: Inactive
        Broadcast Distribution: 0.00 Kbps, Packets 0
        Broadcast Core: 0 Dropped Packets, 0 Client Overflows
        Main Loop Iterations: 1/sec; PacketAggLevel: 1; CPU Usage: 4% / 4%
        MainLoopIts:       9    0    1    1    1    1    4    1    0    0    0
        Registered FDs:   16    0   23   15   15   15   15   17   15   17   17
        Elapsed Time: 10.00
    

    When encountering and reporting server issues, it is important to capture this information since it will often be necessary in order to debug your problems. More information about interpreting RSS and --debug information will be provided soon.

  6. Now start up a player, such as a network-enabled Helix DNA Client or the RealOne Player, and enter the URL for a clip in your server's Content directory. If the Helix Server's RTSP port is the default 554 the type in the following as the URL:

  7. rtsp://dev.foobar.org/realmp3.mp3

    and if the Helix Server's RTSP port is something other than 554, like for example 1554, then type in:

    rtsp://dev.foobar.org:1554/realmp3.mp3

    The client should buffer briefly and then start playing the requested content.

D. Next Steps

    After proceeding this far, you may have questions, problems or comments. You can contact many of the people involved with building the Helix DNA Server by:

    In closing, thank you for your interest in the Helix DNA Server project, and welcome to the team!

抱歉!评论已关闭.