DSS Compile and Configuration

Linux编译安装Darwin Streaming Server 6.0.3

1、什么是Darwin Streaming Server

    目前主流的流媒体服务器有微软的windows media server、RealNetworks的Helixserver和苹果公司的Darwin Streaming Server. 微软的windows media server只能在windows2000 server和windows 2003 server下使用,不在考虑之列。RealNetworks的Helixserver是一款跨平台的软件,功能也很强大,但并非免费软件。

    Darwin Streaming Server简称DSS。DSS是Apple公司提供的开源实时流媒体播放服务器程序。整个程序使用C++编写,在设计上遵循高性能,简单,模块化等程序设计原则,务求做到程序高效,可扩充性好。并且DSS是一个开放源代码的,基于标准的流媒体服务器,可以运行在Windows NT和Windows 2000,以及几个UNIX实现上,包括Mac OS X,Linux,FreeBSD,和Solaris操作系统上的。

2、在Linux中编译安装Darwin Streaming Server

首先需要进行一些必要的准备工作:

1
apt-get install patch make gcc g++

准备好软件暂存的目录,并从官网下载软件的源码:

1
2
3
mkdir soft
cd soft
wget http://dss.macosforge.org/downloads/DarwinStreamingSrvr6.0.3-Source.tar

源码下载完成后,需要解压tar包,

1
tar xvf DarwinStreamingSrvr6.0.3-Source.tar

给源码安装补丁文件,进入DarwinStreamingSrvr6.0.3-Source目录,并打补丁:

1
2
3
cd DarwinStreamingSrvr6.0.3-Source
wget http://www.abrahamsson.com/dss-6.0.3.patch
patch -p1 < dss-6.0.3.patch

执行

1
./Buildit
Notes: Buildit 这一步可省略, 因为在buildtarball 中执行了如下步骤
Buildit clean
Buildit

编译完成后,我们来生成linux下的dss安装包


Notes:  warning: memset used with constant zero length parameter.

This problem is fixed like thus.


In CommonUtilitiesLib/SDPUtils.cpp

 ::memset(fFieldStr, sizeof(fFieldStr), 0); ==>    ::memset(fFieldStr, 0, sizeof(fFieldStr));


In CommonUtilitiesLib/OSFileSource.cpp:

::memset(&buf,sizeof(buf),0); ==>    ::memset(&buf, 0, sizeof(buf));

 

In QTFileTools/QTFileInfo.tproj/Makefile.Posix

#LIBS = $(CORE_LINK_LIBS) -lCommonUtilitiesLib  -lQTFileExternalLib ../../CommonUtilitiesLib/libCommonUtilitiesLib.a

LIBS = -lCommonUtilitiesLib  -lQTFileExternalLib ../../CommonUtilitiesLib/libCommonUtilitiesLib.a $(CORE_LINK_LIBS)

 

QTFileInfo: $(CFILES:.c=.o) $(CPPFILES:.cpp=.o) $(LIBFILES)
        $(LINK) -o $@ $(CFILES:.c=.o) $(CPPFILES:.cpp=.o) $(COMPILER_FLAGS) $(LINKOPTS) $(LIBS)


In Makefile.Posix

#LIBS = $(CORE_LINK_LIBS) -lCommonUtilitiesLib -lQTFileLib 
LIBS = -lCommonUtilitiesLib -lQTFileLib $(CORE_LINK_LIBS)


1
执行 ./buildtarball

生成DarwinStreamingSrvr-Linux.tar.gz

解压缩

1
2
tar -zxvf DarwinStreamingSrvr-Linux.tar.gz 
cd DarwinStreamingSrvr-Linux

对Install文件做修改

1
2
3
4
5
if [ $INSTALL_OS = "Linux" ]; then 
/usr/sbin/useradd -M qtss > /dev/null 2>&1 
else 
/usr/sbin/useradd qtss > /dev/null 2>&1 
fi

将-M修改成-m   或者改为 -g qtss -M qtss, 后者更合理和可行。

执行./Install

Please enter a new administrator user name: 【新管理员】

Please enter a new administrator Password: 【密码】

查看是否安裝成功

ps aux | grep Darwin(查看流媒体服务器的进程)

root … … … /usr/local/sbin/DarwinStreamingServer

qtss … … … /usr/local/sbin/DarwinStreamingServer

netstat -ntulp | grep Darwin(查看流媒体服务器的端口)

DSS Compile and Configuration_第1张图片

3、启动 Darwin Streaming Server

1
sudo /usr/local/sbin/DarwinStreamingServer

启动 Web 管理介面 (tcp port 1220)

1
sudo /usr/local/sbin/streamingadminserver.pl

ps. 以上两项在刚安装好的时候会自动启动,不需手动执行

小技巧:自动启动流媒体服务器的方法:

自动运行流媒体服务器序非常简单,把上述命令添加在/etc/rc.d/rc.local或/etc/rc.local脚本中即可。

最后在服务器输入 http://你的IP:1220/来访问web管理

DSS Compile and Configuration_第2张图片

默认的媒体文件存放在/usr/local/movies

你可以在web管理面板修改这个路径。

4、访问自己的流媒体服务

可以使用VLC media player这个软件,输入

rtsp://你的IP/sample_100kbit.mp4

来播放默认的测试视频。如果你的网速够给力的话效果还不错 :)

 

如: rtsp://192.168.66.147/sample_300kbit.mp4

注:vlc 播放不了 mov 文件

5. Additionally, add new media file

for adding new media file, you need create track hint for the new-added file by mp4creator (from mpeg4ip)

Example:

5.1 mp4info Battle1.mov

5.2 mp4creator --hint=1 Battle1.Mov

      mp4creator --hint-2 Battle1.Mov


complete example:

mp4info Battle2.3gp
mp4info version trunk-r479
Battle2.3gp:
Track   Type    Info
1       video   H264 [email protected], 1174.464 secs, 98 kbps, 176x144 @ 23.976044 fps
2       audio   AMR, 1174.342 secs, 13 kbps, 8000 Hz
/usr/local/movies# mp4creator --hint=1 Battle2.3gp
MP4ERROR: MP4File::FindIntegerProperty: no such property - moov.trak[0].mdia.minf.stbl.stsd.*.esds.decConfigDescr.objectTypeId
MP4ERROR: MP4File::FindIntegerProperty: no such property - moov.trak[1].mdia.minf.stbl.stsd.*.esds.decConfigDescr.objectTypeId
MP4ERROR: MP4File::FindIntegerProperty: no such property - moov.trak[2].mdia.minf.stbl.stsd.*.esds.decConfigDescr.objectTypeId

/usr/local/movies# mp4creator --hint=2 Battle2.3gp
MP4ERROR: MP4File::FindIntegerProperty: no such property - moov.trak[0].mdia.minf.stbl.stsd.*.esds.decConfigDescr.objectTypeId
MP4ERROR: MP4File::FindIntegerProperty: no such property - moov.trak[1].mdia.minf.stbl.stsd.*.esds.decConfigDescr.objectTypeId
MP4ERROR: MP4File::FindIntegerProperty: no such property - moov.trak[2].mdia.minf.stbl.stsd.*.esds.decConfigDescr.objectTypeId
MP4ERROR: MP4File::FindIntegerProperty: no such property - moov.trak[3].mdia.minf.stbl.stsd.*.esds.decConfigDescr.objectTypeId

 

你可能感兴趣的:(DSS Compile and Configuration)