Getting Started with the Helix Sources(II)

本文为开发者提供了构建Helix DNA服务器源码的详细步骤。包括搭建构建环境,需安装CVS、Python等工具;获取并构建服务器源代码,设置分支、目标和配置文件;首次运行服务器,安装并启动;还给出了后续可采取的步骤,如联系邮件列表或IRC服务器。
 

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_IDOSCPUCOMPILERSERVER_10_1_STABLESERVER_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!

源码下载地址: https://pan.quark.cn/s/7a349ad53637 在地理信息系统(GIS)领域中,土地利用现状图被视为一种核心的数据可视化手段,其主要功能在于呈现特定区域的土地使用格局,涵盖农业、住宅、工业、绿地等多样化的土地利用类型。此类信息对于城市规划、环境分析、土地监管以及决策制定具有基础性作用。在编制土地利用现状图的过程中,符号库的构建与样式匹配环节是保障地图具备清晰度、精确性及视觉美感的核心步骤。所谓"样式匹配",是一种技术手段,旨在让用户能够将特定的符号或视觉样式与地图中的数据要素建立关联。在本资源中,提及的"样式匹配lyr"文件或许是一个ArcGIS(一种广受欢迎的GIS软件)所使用的图层样式文件,该文件内含了预设的图例符号及使用规范,用以区分不同的土地利用类别。用户若将此lyr文件导入至个人项目中,便能够迅速为土地利用现状图层赋予统一且专业的视觉表现。符号库则是指存储各类图形符号的集合,这些符号在地图上代表了不同的地理要素。对于土地利用现状图而言,每一类土地通常都会对应一个特定的符号,比如农田可能以绿色填充图案来表现,而建筑用地则可能采用灰色的实心形状。这些符号库对于统一地图的视觉呈现至关重要,有助于观者迅速把握地图所传递的信息。在ArcGIS软件中,用户能够通过"图层属性"界面来调控图层的视觉样式。在该界面中,用户可以选择"符号"面板来设定数据的可视化方式,或选择"标签"面板来管理要素的标注规则。借助"加载样式"功能,用户可以将"样式匹配lyr"文件中的样式规则应用到当前图层,以此规避逐一对每个土地利用类型进行符号的手动配置。不仅如此,为了达成卓越的可视化效果,可能还需对其他图层属性进行微调,例如调节透明度、设置比例尺依赖...
内容概要:本文围绕直流电机转速电流双闭环调速控制系统模型的研究,基于Matlab/Simulink平台实现了系统的建模仿真与动态性能分析。详细阐述了双闭环控制结构的设计原理,重点剖析转速环与电流环的协同控制机制,通过PI控制器实现对电机转矩和转速的精确调节,有效提升系统在负载扰动下的稳定性与响应速度。文中系统介绍了Simulink中各功能模块的搭建方法,包括电机本体模型、电流检测、转速反馈、调节器设计及PWM驱动等环节,并提供了关键参数整定策略与仿真结果验证,全面展示直流电机高性能调速控制的技术路径与工程实现细节。; 适合人群:具备自动控制原理、电力电子技术和Matlab/Simulink仿真基础的电气工程、自动化、机电一体化等专业的本科生、研究生,以及从事电机驱动与运动控制研发的工程技术人员。; 使用场景及目标:①用于高校课程设计、毕业设计或科研项目中直流电机控制系统的仿真建模与性能优化;②为工业现场高性能电机驱动系统的设计与调试提供理论依据与技术参考;③深入掌握双闭环PID控制在电机系统中的工程应用,提升系统动态响应、抗干扰能力和稳态精度。; 阅读建议:建议读者结合文中所述模型结构与参数设置,动手搭建Simulink仿真模型,重点理解内外环控制的耦合关系与PI调节器的动态调节过程,可通过改变负载条件和控制器参数进行对比实验,进一步探究先进控制策略(如自抗扰控制、模糊PID等)的改进潜力。
内容概要:本文系统研究了无人机启用的无线传感器网络中的节能数据收集问题,重点围绕基于Matlab的算法仿真与实现,涵盖了无人机三维路径规划、动态避障、多智能体协同任务分配等核心技术。研究融合多种智能优化算法,如粒子群优化算法(PSO)、灰狼优化算法(GWO)、遗传算法(GA)、Q-learning及混合优化策略,结合动态窗口法(DWA)等局部避障技术,实现复杂环境下无人机高效、低能耗的数据采集路径规划。同时,探讨了多无人机协同、卡车-无人机协同配送等场景下的任务优化模型,旨在提升数据收集效率并最大限度降低系统能耗,确保在满足数据完整性与实时性要求的前提下实现能源节约。; 适合人群:具备Matlab编程基础,从事无人机路径规划、无线传感器网络、智能优化算法、物联网数据采集等领域研究的科研人员、工程技术人员及高校研究生。; 使用场景及目标:①应用于复杂环境下的无人机辅助无线传感器网络数据采集系统设计;②为三维空间中无人机动态避障与节能路径规划提供算法支持与仿真验证;③服务于环境监测、智慧农业、灾害救援、智慧城市等需要低功耗、高可靠性数据收集的实际应用场景;④支持多智能体协同任务分配与优化调度的科研与工程实践。; 阅读建议:建议结合提供的Matlab代码深入实践,重点关注不同优化算法的参数设置、收敛特性及在具体路径规划任务中的表现差异,通过对比分析选择最适合特定应用场景的技术方案,并尝试拓展至更多现实约束条件下的仿真验证。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值