`
yidongkaifa
  • 浏览: 4059679 次
文章分类
社区版块
存档分类
最新评论

流媒体服务器全配置:Darwin Streaming Server,ffmpeg安装和Mpeg4IP ,MP4Box Mp4 hint媒体流化

 
阅读更多

系统环境为CentOS 6.2 64位

一,准备工作


DSS主页:http://dss.macosforge.org/
下载安装包:wgethttp://dss.macosforge.org/downloads/DarwinStreamingSrvr6.0.3-Source.tar
安装参考:http://blog.csdn.net/offbye/article/details/4925941
http://www.cnblogs.com/MikeZhang/archive/2012/07/06/CentOS6InstallDarwin.html
http://topic.csdn.net/t/20020329/22/610169.html

http://bbs.phpchina.com/blog-48643-194956.html

http://blog.sina.com.cn/s/blog_691d51a40100l8ue.html


groupadd --system qtss
useradd -g qtss qtss

二,开始安装
tar-xvf DarwinStreamingSrvr6.0.3-Source.tar
mvDarwinStreamingSrvr6.0.3-Source DarwinStreamingSrvr6.0.3-Source.orig
https://weblion.psu.edu/svn/weblion/users/dcn113/dss-6.0.3.patch
patch-p0 < dss-6.0.3.patch
mvDarwinStreamingSrvr6.0.3-Source.orig DarwinStreamingSrvr6.0.3-Source
wgethttps://weblion.psu.edu/svn/weblion/users/dcn113/dss-hh-20080728-1.patch
patch-p0 < dss-hh-20080728-1.patch
cd DarwinStreamingSrvr6.0.3-Source
mv
Install Install.orig
wget
http://dss.macosforge.org/trac/raw-attachment/ticket/6/Install
chmod
+x Install
.
/Buildit
.
/Install

5、开机启动

vi /etc/rc.local

添加如下代码:perl /usr/local/sbin/streamingadminserver.pl


测试结果
安装成功后服务端程序自动运行,其它情况下也可以手动启动/usr/local/sbin/DarwinStreamingServer,
现在用vlc来测 试下DSS是否安装成功。
服务端可供播放的视频文件存放于/usr/local/movies/,
DSS配置文件是/etc/streaming /streamingserver.xml,
日志文件存在于/var/streaming/logs,可
登录http: //192.168.95.134:1220进行页面管理

windows下面推荐用vlc player来测试流媒体……绿色软件,啧啧,比quicktime和realplayer好多了

不是所有的视频文件都可以用Darwin来Streaming,根据FAQ,它只支持

QuickTime Movie (MOV), MPEG-4 (MP4), and 3GPP (3GP) “hinted” files.

也就是说要有hint track的视频文件.

Hint Track是QuickTime定义的一种索引轨道,我们可以认为就是索引

嗯,准备用的流媒体文件是3gp格式(aac+mp4),默认不带hint track,需要用一个工具处理,加上hint track

这个伟大又变态的工具就是mpeg4ip了,这个东西现在还有编译成功,只能用一个rpm包顶着,郁闷

从rpm安装mpeg4ip也很简单

由于网上提供的mpeg4ip的rpm包不太完整,首先你需要libmp4v2,这个本来包含在mpeg4ip源代码里面的,嗯,如果有rpm就好了,我懒得找,直接从源码编译

下载http://resare.com/libmp4v2/dist/libmp4v2-1.5.0.1.tar.bz2, 解压,编译,安装

然后到http://dries.ulyssis.org/apt/packages/mpeg4ip/info.html下载 mpeg4ip-1.5.0.1-1.fc4.rf.i386.rpm,强制安装 现在无法下载了

网上说的方法无效

# rpm -ivh –nodeps –force mpeg4ip-1.5.0.1-1.fc4.rf.i386.rpm 安装提示参数错误

完工

转换视频并加索引

# ffmpeg -i sample.wmv -acodec libfaac -vcodec mpeg4 sample.3gp
# mp4creator -hint=1sample.3gp
# mp4creator -hint=2 sample.3gp

按照几年前的方法编译安装mpeg4ip一直出错, 官网也没有找到下载,于是在网上找了个地址

http://blog.sina.com.cn/s/blog_691d51a40100l8ue.html

mpeg4ip.tar.gz安装
安装mpeg4ip.tar.gz需要安装SDL

mpeg4ip-1.6.1.tar.gz下载地址
http://dlwt.csdn.net/fd.php?i=210720578311723&s=05bcb1b814fc777ab6ae2cce23bf0022
mpeg4ip-1.5.0.1.tar.gz下载地址
http://nchc.dl.sourceforge.net/project/mpeg4ip/mpeg4ip/1.5.0.1/mpeg4ip-1.5.0.1.tar.gz

SDL安装方法
yum install SDL
yum install SDL-devel

mpeg4ip安装方法

[shell]#tar -zxf mpeg4ip-1.6.1.tar.gz
[shell]#cd mpeg4ip-1.6.1
[shell]#./bootstrap --prefix=/usr --enable-ffmpeg=/usr --disable-player --disable-server
[shell]#make
[shell]#make install




2.2 查看是否安装成功

id qtss

uid=501(qtss) gid=502(qtss) groups=502(qtss)

ps aux | grep Darwin

root ... ... ... /usr/local/sbin/DarwinStreamingServer

qtss ... ... ... /usr/local/sbin/DarwinStreamingServer

netstat -ntulp | grep Darwin

tcp 0.0.0.0:8001

tcp 0.0.0.0:554

tcp 0.0.0.0:7070

udp 127.0.0.1:6970

udp 192.168.0.1:6970

udp 127.0.0.1:6971

udp 192.168.0.1:6971

udp 127.0.0.1:6976

udp 127.0.0.1:6977

udp 127.0.0.1:6978

udp 127.0.0.1:6979

2.3 启动命令

启动服务(安装已经启动,不需要再启动)

启动 Darwin Streaming Server

/usr/local/sbin/DarwinStreamingServer

启动 Web 管理接口 (tcp port 1220) (安装已经启动,不需要再启动)

/usr/local/sbin/streamingadminserver.pl

2.4 关闭命令

Kill -9 Darwin Streaming Server进程

3 管理界面配置3.1 连入管理接口进行设定

开启浏览器, 连入http://darwin.streaming.server:1220/

第一次进入管理接口, 需进行以下设置:

MP3 Broadcast Password: 设定 MP3 广播密码

Secure Administration: Web 管理接口是否启用 SSL 安全联机 (视需求,本次设置为否)

Media Folder: 设定多媒体文件存放路径 (默认 /usr/local/movies,本次设置为默认,如若修改路径不会对目标目录产生影响)

Streaming on Port 80: 是否以 80 port 传送串流数据 (视需求,本次设置为否)

3.2 建立 MP3 音乐串流

支持格式: mp3

点选 Playlists → New MP3 Playlist

Name: myaudio

Mount Point: /myaudio

Play Mode: Sequential Looped (依序循环播放)

将 Available Content 里的 MP3 档案拖曳到右边窗格 (Items in This Playlist),

最后按 Save Changes 储存设定

Available Playlists → myaudio → Status 点选播放按钮即开始放送

3.3 建立视讯串流

支持格式: 3gp、mp4、mov

点选 Playlists → New Media Playlist

Name: myvideo

Mount Point: myvideo.sdp

Play Mode: Sequential Looped (依序循环播放)

将 Available Content 里的多媒体档案拖曳到右边窗格 (Items in This Playlist),

最后按 Save Changes 储存设定

Available Playlists → myvideo → Status 点选播放按钮即开始放送

3.4 收听及推流播放方式

以 MP3 播放软件收听 MP3 音乐串流

档案 → 开启 URL →http://darwin.streaming.server:7070/mp3_mount_point

以 QuickTime Player 收看影音串流

File → Open URL → rtsp://darwin.streaming.server/playlist (观看播放列表提供的内容)

File → Open URL → rtsp://darwin.streaming.server/filename.mov (指定观看某一支档案)

4 安装是报错排除方法

4.1 出现警告信息(Movie file does not match SDP)

- Movie set up failed: Movie file does not match SDP.
(file: /usr/local/movies/sample_300kbit.mov err: 16 Movie file does not match SDP.)
- PlaylistBroadcaster: Warning, movie tracks do not match the SDP file.

4.2 出现错误信息(error: 15)

There is (1) movie in the Playlist.

Ref Movie = /usr/local/movies/sc2.mp4
SDP file = /var/streaming/playlists/test4/test4.sdp
- SDP generation failed (error: 15).
Warnings: 0
Errors: 1

4.3 警告信息与错误信息解决方法

格式不能正常播放出现报错

问题: 自行转成 .mov .mp4 的档案无法串流播放 (产生 ERROR 15 错误)

原因: .mov 档案中没有指定 hint track

排除方法: 以 mp4creator (mpeg4ip 里的程序) 赋予 hint track

操作环境: CentOS 5

4.3.1 安装 ffmpeg (转档工具 & codecs)

参考ffmpeg安装文档

4.3.2 安装 mpeg4ip (用来赋予 hint track)

mpeg4ip.rpm 下载网页

rpm -ivh --nodeps --forcempeg4ip-1.5.0.1-1.fc4.rf.i386.rpm

4.3.3 转档 (若已用其他转档工具则跳过此步骤)

ffmpeg -i input.wmv -f mov output.mov

4.3.4 赋予 hint track

mp4creator -hint=1 output.mov

mp4creator -hint=2 output.mov

hint track 只要各执行一次就可以了, 不用理会这个错误讯息:
MP4ERROR: MP4File::FindIntegerProperty: no such property -moov.trak[1]...
执行多次反而会破坏这个档案

以上产生的 output.mov 即可由 Darwin Streaming Server 正常放送

Darwin Streaming Server配置:
http://blog.sina.com.cn/s/blog_677089db01016xc6.html
http://topic.csdn.net/t/20020329/22/610169.html

媒体流化:


安装MP4Box
yum install subversion
svn co https://gpac.svn.sourceforge.net/svnroot/gpac/trunk/gpac gpac

cd gpac

cp -r ../gpac_extra_libs/* extra_lib/
chmod +x configure
./configure
make
make install
cp bin/gcc/libgpac.so /usr/lib
ldconfig

给mp4加hint
MP4Box test.mp4 -hint

最近研究mp4文件的转码与分割合并,需要使用mp4box这个工具。目前这个工具合并到gpac开源项目中,如果需要下载安装的话需要到GPAC的官网去。

首先介绍下GPAC项目吧,这个项目的目标是致力实现一个mpeg4 system,成为MPEG-4标准的实现参考,合并现在一些标准到其框架下等,项目目前每天都有代码提交,比较活跃。其他信息可以到其主页查看:http://gpac.wp.institut-telecom.fr/

下面说下mp4box的安装,官网提供每日最新的编译安装包,支持windows、Linux、Andoid、Mac等平台,可以直接下载2进制格式直接使用。不过其提供的Linux二进制包是基于deb的,只支持ubuntn10.10以上版本。所以其他的Linux系统只能从源代码进行安装。

首先下载代码,需要使用svn进行同步:svn cohttps://gpac.svn.sourceforge.net/svnroot/gpac/trunk/gpac gpac

然后到http://sourceforge.net/projects/gpac下载其所依赖的三方库gpac extr libs,当前是最新的是0.4.5版本,把下载下来的压缩包解压,并将其中的子目录复制到gpac源代码目录的extra_lib/下。

按照官方文档的说明,此时只需要在gpac的源代码目录里,执行./configure;make;make install即可。不过根据不同的平台,config生成的makefile可能有问题,多数情况下编译会出各种问题。至少我在centos5.4和ubuntu8.04系统中都没顺利编译通过。

遇到的多数问题是缺少外部依赖,最重要的几个依赖为freetype 、freeglut以及zlib,这些依赖需要进入extra_lib目录,按照其中的说明文档逐个编译,在编译三方库的时候也不是很顺利,有时候不得不yum install和apt-get从源中下载,把大数的依赖都搞定了,问题算解决了一半。在编译gpac时依然编不过,不得不把编不过的模块在./configure时去掉,并把gpac配置生成为static,mp4box生成为非static。需要./configure --help仔细一下,经过一翻调整,gpac才生成最终的lib和mp4box以及mp4client,其他的应用依不能成功编过。不过我只要mp4box和mp4client,其他的东西并不关心,没有生成就算了。

mp4client的使用比较简单,它可以播放本地的mp4文件,远程http播放存在问题,一直不成功。

mp4box使用比较复杂,具有许多功能,它可以进行mp4文件的合并、切割、提取其中的track及相关信息,还可以对mp4文件的物理格式进行改写,对mp4文件的每个结构进行改写如版权、语言等等。具体可以查看:http://gpac.wp.institut-telecom.fr/mp4box/mp4box-documentation/

下面对一些较常用的选项进行说明:

mp4box一般并不对音频、视频等进行转码操作。

1 通用选项 mp4box -h general

-tmp dir指定生成临时文件的目录
-inter duration 将chunk的media数据按指定间隔进行交错,用于优化流传输或文件访问,所有meta数据放在文件头部,允许在下载的内容内回放。默认交错0.5s,若指定为0,则所有meta数据存在于文件头。
-tight 对媒体轨道执行基于采样的交错(生成文件较大)。在服务器侧为减少磁盘查找时间,用于hint文件时。
-flat 强制采用平坦存储,媒体数据不进行交错,meta数据在于文件结束。当使用-add创建新文件时,将不会创建临时文件
-frag ms 对媒体文件进行分段,分的小段中含有meta及media数据交错而不是存在文件开始或结束。分段将禁止交错。
-isma 把文件处理为isma规范格式
-3gp 移除mpeg4系统信息,转换成3gp规范,保留音、视、文本轨道等3gp支持的
-brand ABCD 设置主brand
-ab ABCD 设置从brand
-rb ABCD 移除从brand
-rem trackID 从文件中移除轨道
-par trackID=PAR
-lang [trackID=lang] 为轨道指定语言,若没有指定ID,则为全部轨道
-delay trackID=time 设置指定轨道延迟时间,单位为微秒
-name trackID=name 设置指定轨道的处理名,处理名有时用来识别内容
-cprt string: 为文件增加版权信息
-chap chap_file 将chap_fil中的chapter信息增加到目的文件中

2 文件转换 mp4box -h import (具体支持的文件可以查看官网网页)

文件转换语法如下:mp4box -add file1 -add file2 [-new] dest,通常情况下支持最多20个add


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics