1. 程式人生 > >流媒體伺服器全配置:Darwin Streaming Server,ffmpeg安裝和Mpeg4IP ,MP4Box Mp4 hint媒體流化

流媒體伺服器全配置:Darwin Streaming Server,ffmpeg安裝和Mpeg4IP ,MP4Box Mp4 hint媒體流化

系統環境為CentOS 6.2 64位 

一,準備工作






             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
mv DarwinStreamingSrvr6.0.3-Source DarwinStreamingSrvr6.0.3-Source.orig

patch -p0 < dss-6.0.3.patch
mv DarwinStreamingSrvr6.0.3-Source.orig DarwinStreamingSrvr6.0.3-Source
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就好了,我懶得找,直接從原始碼編譯

網上說的方法無效

# 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=1 sample.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  連入管理介面進行設定

第一次進入管理介面, 需進行以下設定:

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 音樂串流

以 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)

rpm -ivh --nodeps --force mpeg4ip-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配置: 

媒體流化:
安裝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系統只能從原始碼進行安裝。

          然後到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