流媒體伺服器全配置: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
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
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.
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
格式不能正常播放出現報錯
問題: 自行轉成 .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 trackmp4creator -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