天天看點

如何架設流媒體伺服器

一、前言

随着越來越多的朋友開始選擇ADSL、Cable Modem或FTTB+ LAN作為首要的上網方式,寬頻時代即将到來,這使我們“寬頻 ×××、影音聊天室、線上電影院、遠端教育”的夢想即将成為現實,而與其密切相關的“流媒體(Streaming Media)”也成了許多人談論的熱門話題,因為“流媒體”正是實作這些寬頻應用的技術動力。

寬頻時代的到來還使得網民們不再滿足于僅僅作為一項服務的閱聽人,他們需要更大規模的交流,從中展現個體的價值,是以,許多朋友開始用自己的計算機,搭建網絡廣播和點播站點。他們充滿着滿腔的熱情,但不可否認的是,中國網民先天技術上的不足,讓他們在建設這樣的站點時遇到重重險阻,以至于放棄。如何将這種熱情在技術的引導下成為動力,這正是我們家用電腦所要做的,是以,在今天,在這裡,我就将給大家介紹如何打造屬于自己的流媒體伺服器。

不過,在開始正式的流媒體伺服器架設之前,請讓我們先了解一下流媒體伺服器的基礎知識。

二、流媒體基礎知識

什麼是流媒體?

目前,在網絡上傳輸音/視訊等多媒體資訊有兩種解決方案,即http或ftp下載下傳以及流式傳輸。

http或ftp下載下傳使用标準的http和ftp協定,但由于多媒體資訊個頭巨大,下載下傳一個多媒體檔案一般需要幾分鐘或幾小時的時間,這就造成為了看一個并不知道内容的視訊,首先需要耗費可能比整個視訊都要長的時間來完成下載下傳。這些被下載下傳的檔案還必須在下載下傳前制作完成,放在網絡伺服器上,這樣造成的直接後果就是:網絡帶寬不斷提高,人們下載下傳的等待時間越來越少,但最終還是不能觀看網上現場直播。

流式傳輸時,聲音、影像或動畫等多媒體資訊由流媒體伺服器向使用者計算機連續、實時傳送,它首先在使用者端的電腦上建立一個緩沖區,于播放前預先下載下傳一段資料作為緩沖,使用者不必等到整個檔案全部下載下傳完畢,而隻需經過幾秒或十數秒的啟動延時即可進行觀看。當多媒體資訊在客戶機上播放時,檔案的剩餘部分将在背景從伺服器内繼續下載下傳。如果網絡連接配接速度小于播放的多媒體資訊需要的速度時,播放程式就會取用先前建立的一小段緩沖區内的資料,避免播放的中斷,使得播放品質得以維持。

流式傳輸除了能夠發送已經制作完成的檔案外,還可以通過采集伺服器實時采集現場音視訊,推送到流媒體伺服器端,實時提供給使用者。是以,流媒體除了能夠更好的承擔如下載下傳一樣的多媒體點播服務外,更能夠應用在現場直播、電視轉播、突發事件報道等多種對實時性傳輸要求較高的領域。

有關流媒體的廠商

流媒體的市場巨大,世界上許多優秀的廠商都加入此行列,現階段更是系統內建商競争的風水寶地。而在通用市場上,競争的公司主要有三個:Microsoft、RealNetworks、Apple,而相應的産品就是:Windows Media、Real Media、QuickTime。而近來,以開發Winamp著名的Nullsoft公司也在自己的MP3伺服器中加入了視訊支援,欲在流媒體市場分一杯羹。

由于Apple的伺服器和編輯軟體一般都以Mac為操作平台,Nullsoft的流媒體伺服器屬于新生不成熟事務,是以今天在這裡我主要給大家介紹一下Microsoft和RealNetworks的産品。

流媒體的傳輸協定

大家在觀看網上電影或者電視時,一般都會注意到這些檔案的連接配接都不是用http或者ftp開頭,而是一些rtsp或者mms開頭的東西,為什麼是這樣呢?實際上,這些和http和ftp一樣,都是資料在網絡上傳輸的協定,隻是它們是專門用來傳輸流式媒體的協定而已。下面,讓我們來看一下現在使用的主要的流媒體協定:

1. RTSP(Real Time Streaming Protocol),實時流媒體協定,它是由RealNetworks和Netscape共同提出的,現在用于RealNetworks的Real Media産品中;

2. PNM(Progressive Networks Audio),這也是Real專用的實時傳輸協定,它一般采用UDP協定,并占用7070端口,但當你的伺服器在防火牆内且7070端口被擋,且你的伺服器把SmartingNetwork設為真時,則采用http協定,并占用預設的80端口;

3. MMS(Microsoft Media Server protocol),這是微軟的流媒體伺服器協定,MMS 是連接配接 Windows Media 單點傳播服務的預設方法。

介紹了主要的三個,可能您還會問,Apple的QuickTime使用哪種協定呢?在多數情況下,QuickTime使用http協定,但實際上它也由标準的流媒體傳輸協定,這就是标準RTSP協定,而Real公司使用的RTSP是自己經過開發的。

在流媒體傳輸中,标準的協定就是RTP(Real time Transport Protocol,實時傳輸協定)、RTCP(Real-time Transport Control Protocol,實時傳輸控制協定)、RTSP(Real Time Streaming Protocol,實時流媒體協定)和RSVP(Resource Reserve Protocol, 資源預訂協定),廠商們的産品都是在這些協定的基礎上進行研究與開發,限于篇幅,在這裡我們就不再深入讨論了。

流媒體檔案和釋出格式

有了實時的傳輸協定,我們應該還能夠想到,隻有較小的檔案才适合網絡實時傳輸,那麼,流媒體檔案采用了什麼樣的壓縮算法呢?

而使用Windows作業系統的朋友可以看到,我們觀看網上流節目時,它們的字尾名一般是rm、asf、wmv等,這些就是流媒體的格式。流媒體檔案格式經過特殊編碼,不僅采用較高的壓縮比,還加入了許多控制資訊,使其适合在網絡上邊下載下傳邊播放,而不是等到下載下傳完整個檔案才能播放。

常見的流媒體格式大緻有以下幾種:

流媒體檔案格式擴充(Video/Audio) 媒體類型與名稱

asf               Advanced Streaming format. (Microsoft).

rm               Real Video/Audio 檔案 (Progressive Networks).

ra               Real Audio 檔案 (Progressive Networks).

rp               Real Pix 檔案 (Progressive Networks).

rt               Real Text 檔案 (Progressive Networks).

swf               Shock Wave Flash (Macromedia).

mov               QuickTime(Apple公司格式)

viv               Vivo Movie 檔案(Vivo Software).

另外還有一個wmv格式,是Windows Media Video的簡稱,它與asf檔案有稍許差別,wmv一般采用window media video/audio 格式,asf視訊部分一般采用Microsoft MPG4 V(3/2/1?),音頻部分是windows media audio v2/1,不過現在很多制作軟體都沒有把它們分開,是以直接更改字尾名就能夠互相轉換為對方格式。

制作完成的流媒體檔案需要釋出到網絡上才能夠被别人使用,這就需要以特定方式安排壓縮好的流媒體檔案,而安排流媒體檔案的格式就被成為流媒體釋出格式。常見的釋出格式主要有以下幾種:

流媒體釋出格式擴充 媒體類型和名稱

asf        Advanced Streaming format.

smil        Synchronised Multimedia Integration Language.

ram        RAM File.

rpm        Embedded RAM File.

asx        ASF Stream Redirector/ASF流轉向器檔案

xml        eXtensible Markup Language

MPEG-4與流媒體

說到流媒體就不能不提及MPEG-4。MPEG-4是目前讨論的焦點之一,隻因為它能夠在大的壓縮比下實作近似DVD品質的視訊和音頻效果,這也是許多朋友認為MPEG-4格式肯定比rm清晰的原因。但事實上并不是如此,MPEG-4隻是一種視訊編碼技術,它的清晰度也根據壓縮時所選擇的碼率的不同有較大的改變(我們見到的MPEG-4格式檔案通常為500Kbps壓縮生成,品質當然高了),并且,MPEG-4還有多種壓縮标準,如Microsoft的asf視訊部分就是基于MPEG-4的Discrete Cosine Transform (DCT),另外還有DivX的免費MPEG-4版本(開始是破解微軟的格式而來)。至于音頻部分,更是混亂,Microsoft采用windows media audio v2/1,DivX采用MP3或者更高品質的AC3等。相比而言,Real或者Apple的格式使用的是自己開發的編碼,在相同碼率,特别是低碼率下,不見得就比MPEG-4差,采取高碼率的rm格式照樣清晰可人,是以大家以後說rm格式清晰度差的觀念要改變一下:),至少也要加上條件。而且,最新的Helix Producer中的Real Video 9采用VP5壓縮格式進行編碼,這可比DivX優秀多了!

不過,流媒體伺服器開始向MPEG-4格式靠攏是不争的事實,Real最新的Helix就開始支援mp4格式檔案的服務,而RealOne Player更是隻需安裝一個插件便可實作MPEG-4格式的播放。

點播與廣播

在架設流媒體伺服器之前,我們一定要了解一些點播與廣播的知識。

點播是用戶端與伺服器之間的主動的連接配接,在點播連接配接中,使用者通過選擇内容項目來初始化用戶端連接配接,一個用戶端從伺服器接收一個媒體流(這個連接配接是唯一的,其它使用者不能占用),并且能夠對媒體進行開始、停止、後退、快進或暫停等操作,用戶端擁有流的控制權,就像在看影碟一樣。這種方式由于每個用戶端各自連接配接伺服器,伺服器需要給每個使用者建立連接配接,對伺服器資源和網絡帶寬的需求都比較大。

廣播指的是使用者被動接收流。在廣播過程中,用戶端接收流,但不能控制流,使用者不能暫停、快進或後退該流,廣播使用的資料發送手段有單點傳播與廣播。使用單點傳播發送時,伺服器需要将資料包複制多個拷貝,以多個點對點的方式分别發送到需要它的那些使用者,而使用廣播方式發送,資料包的單獨一個拷貝将發送給網絡上的所有使用者,而不管使用者是否需要,上述兩種傳輸方式會非常浪費網絡帶寬和伺服器資源,是以産生了多點傳播(多點傳播)技術。

多點傳播(多點傳播)吸收了上述兩種發送方式的長處,克服了上述兩種發送方式的弱點,将資料包的單獨一個拷貝發送給需要的那些客戶,多點傳播不會複制資料包的多個拷貝傳輸到網絡上,也不會将資料包發送給不需要它的那些客戶,保證了網絡上多媒體應用占用網絡的最小帶寬。但多點傳播不僅需要伺服器端支援,更需要有多點傳播路由器乃至整個網絡結構的支援。

單點傳播與多點傳播(多點傳播)

在上面我們已經了解了一些單點傳播群組播的概念,這也是現在流媒體方面讨論的焦點之一。以我的認識,點播與廣播是一組概念,它們和用戶端媒體互動的手段;單點傳播群組播又是另外一組概念,它們是流媒體資料在伺服器端和網絡上的傳輸方式。

單點傳播發送時,需要在用戶端與媒體伺服器之間需要建立一個單獨的資料通道,從一台伺服器送出的每個資料包隻能傳送給一個客戶機,每個使用者必須分别對媒體伺服器發送單獨的查詢,而伺服器必須向每個使用者發送所申請的資料包拷貝。這種巨大備援會造成伺服器沉重和網絡帶寬的沉重負擔,響應需要很長時間,甚至出現不能服務的情況。單點傳播可以用在點播和廣播上。

多點傳播發送時,伺服器将一組客戶請求的流媒體資料發送到支援多點傳播技術的路由器上,然後由路由器一次将資料包根據路由表複制到多個通道上,再向使用者發送。這時候,媒體伺服器隻需要發送一個資訊包,所有送出請求的用戶端都共享同一資訊包,并且資訊可以發送到任意位址的客戶機,沒有請求的客戶機不會收到資訊包,網絡上傳輸的資訊包的總量沒有廣播那麼多,大大提高了伺服器和網絡線路的使用率。不過多點傳播也有自己的特點,首先是必須要開始支援多點傳播技術的路由器,另外就是一般隻能用作廣播,因為用作點播會存在使用者控制問題。

好了,說了這麼多,您可能都嫌我煩了,那麼,就讓我們開始架設流媒體伺服器之旅吧。

三、流媒體伺服器硬體準備

流媒體伺服器和網站(Web)伺服器一樣,要經受許多人的同時通路,相比Web伺服器來說,由于多媒體檔案需要更強處理能力,其硬體裝置應超越一般用于Web的伺服器。是以,流媒體伺服器最好滿足以下硬體條件。

一顆強勁的“芯”。如果計算機CPU頻率太低,處理能力過慢,電腦在被多使用者通路時将我們無法進行其他任何操作(相信大家對那些網上視訊點播的網站經常當機身有體會,我們和他們建立的是一樣的伺服器,隻是規模小些罷了)。

大容量記憶體和硬碟。流媒體的制作和發送是系統資源的黑洞,擁有大容量記憶體是系統穩定運作的前提;而流媒體檔案體積較大,大量的媒體檔案需要更多的存儲空間。建議記憶體至少256MB,硬碟80G以上。

占用系統資源少的聲霸卡。好的聲霸卡有助于CPU占用率的降低,并且對錄音的品質有很大影響(用于網上直播),建議使用Creative的SB Live!或SB Audigy、Audigy 2系列,由于筆者自己的機器不做伺服器(隻用來做文章,沒錢更新啊),是以隻拿普通的內建來示範。

良好的視訊捕捉裝置。我們的直播節目源就來源于這塊裝置,推薦使用Leadtek(麗台)的WinFast TV2000 XP豪華版,它接收信号的能力和硬體壓縮的能力都是比較出衆的(因為筆者沒有條件,是以采集裝置用了螢幕捕捉,不過使用采集裝置的方法是相同的,是以請大家不要見怪)。

盡量高的帶寬。當然是上網速度越快越好,不過我們可以在流媒體伺服器中對連接配接數做一個限制,以免當機。

當然,上面是建設一個屬于自己的流媒體服務網站必須的硬體裝置,如果隻是和筆者一樣,隻是想在架設流媒體伺服器過程中學習一把,大可在現有機器的基礎上大膽測試。

四、架設流媒體伺服器之旅

準備好了硬體,下面就開始一步步教大家架設自己的流媒體伺服器。我将其分為Microsoft公司的Windows Media和RealNetworks的Real Media兩大部分,都包括直播與點播伺服器的建立,并在最後向大家介紹一下Apple的QuickTime和Nullsoft的流媒體伺服器。

由于Microsoft公司的Windows Media點播服務必須建立在Server版的作業系統上,是以筆者選取Windows .Net Enterprise Server 3647作為此次流媒體伺服器建立的系統平台。為了比較RealNetworks和Microsoft最新一代流媒體伺服器的優劣,筆者采用了它們最新的流媒體系統,以下是筆者使用的具體軟體:

作業系統:Windows .Net Enterprise Server 3647、Windows XP Service Pack 1

流媒體軟體:Windows Media Services 9.0(Windows .Net Server自帶)、Windows Media Encoder 9 Series Release Candidate(由于此軟體在.Net Server下運作不正常,故安裝在XP中,并且隻有此軟體安裝在XP中)、Windows Media Encoder 7.1、Windows Media Player 9.0 Build z903、Helix Universal Server 9.01 FOR Win2k(9.0.2.794)、Helix Producer Plus 9.0.1、RealOne Player 2.0 Build 6.0.11.853。

下面,就讓我們開始吧!不要走開哦!!!

WinMedia網上廣播服務

單純的使用Windows Media Encoder這個軟體即可實作網上廣播服務,不過,借助于Windows Media Services,利用Windows Media Encoder制作的流媒體檔案,我們的網絡廣播站功能将更為強大。下面,我們将利用Windows Media Encoder單獨建立廣播站,并将其納入Windows Media Services,實作更強大的功能。

1. 安裝Windows Media Services。

首先安裝Windows 2000 Server或者Windows .Net Server,然後打開“開始-控制台-管理工具-管理您的伺服器”或“開始-控制台-添加或删除程式-添加/删除Windows元件”(建議使用第二種),在其中勾取“Web應用程式伺服器”,也就是2000 Server中的IIS伺服器,單擊“下一步”進行添加;

添加IIS完畢後,再次啟動添加/删除Windows元件程式,并勾取Windows Media Service項,單擊詳細資訊,在其中選擇“用于Web的Windows Media Services Administrator”以啟動Windows Media Services的Web管理功能(2000中可能沒有這些選項,隻需要安裝Windows Media Services即可);

2. 安裝Windows Media Encoder。

從微軟網站下載下傳Windows Media Encoder 7.1(由于Windows Media Encoder 9.0無法在.Net Server下工作)進行安裝,至此,Windows Media服務的伺服器和編碼器都已經具備;

3. 從“開始-程式-Windows Media”  啟動Windows Media Encoder,在出現的向導界面中根據自己的需要選擇合适的選項,建議新手“使用建立會話向導廣播、捕獲或轉換檔案”,選擇後單擊确定;

4. 由于進行的是廣播,是以在下一個彈出的畫面中請選擇“在附屬裝置或計算機螢幕廣播實況事件”,這樣的選擇能夠讓Windows Media Encoder直接進行廣播或者将其加入Windows Media Service服務;

5. 在下一個畫面中選擇您進行視訊或音頻捕獲的裝置,筆者沒有視訊卡,是以隻能選擇“螢幕捕獲”,有視訊卡的朋友請選擇您的視訊卡;

6. 廣播信号必須通過一個有效的端口進行傳輸,是以必須對它進行設定。Windows Media Encoder預設的端口為8080,但由于這個端口經常被其它軟體占用,是以建議朋友們單擊“查找可用端口”以換成其它随機端口或者直接輸入沒有被占用的端口。我選擇了“3170”端口;

7. 然後就開始選擇我們進行廣播的流媒體品質,有一個公式您可以參考:流媒體配置檔案帶寬×最大連接配接使用者數=您的上行帶寬(不是下載下傳,是上傳)。您如果有2Mbps的上行帶寬,選擇了100Kbps的配置檔案,則允許同時20個觀衆看到您的廣播,由此可見,流媒體服務對帶寬的需求是巨大的;

8. 在這個視窗您可以選擇将進行廣播的流媒體存檔,以便于以後觀看或者進行點播,若隻是作為實況廣播服務,并且硬碟空間不大,您可以不選取;

9. “下一步”後,您可以選擇是不是添加微軟内置的歡迎、休息和再見檔案,我就沒要這些東西,誰給微軟免費作廣告,呵呵;

10. 然後,我們可以給我們的廣播節目添加上版權資訊,這些資訊在播放時,會出現在Windows Media Player中;

11. 彈出最後一個确認視窗後,我們最終的廣播界面就出現了,若是有視訊捕捉裝置,隻要單擊“開始”,我們的廣播站就運作起來,隻要在客戶機IE中輸入“mms://伺服器的:端口值”就會彈出media player播放電視。如我建立的廣播站位址就是“[url]mms://192.168.0.1:3170[/url],這些資訊您也可以直接在此界面的連接配接标簽中檢視;

12. 若是您和我一樣沒有視訊捕捉設定,或者想向使用者播放一段錄制好的視訊,請點選“會話-屬性”(此面闆能夠對所有設定過的資料進行調整),單擊“更改”按鈕,在彈出視窗中選擇視訊右邊的下拉框,單擊“查找檔案”,找到您預先錄制好的視訊檔案(支援asf、wmv、avi、mpg等格式);

13. 再回到廣播界面,點選開始,您的檔案就可以被網絡上的兄弟姐妹看到了,

若是想添加更多的檔案或裝置,請在以上視窗單擊“更改”旁的“建立”進行添加即可;

14. 您可能覺得到這裡我們就大功告成了,實際上遠遠沒有,這隻是最基本的直播廣播,我們還需要将其加入Windows Media Services的廣播服務中,以實作更強大的功能。請将你的滑鼠指向“開始-控制台-管理工具-Windows Media Services”,打開Windows Media管理器(2000 Server應該是一個Web界面)。選擇左邊的伺服器後,單擊操作菜單中的“添加釋出點(向導)”,經曆歡迎頁面後,會出現釋出點命名視窗,在其中輸入您願意使用的名字,我輸入的是“SOFTICP.COM_Broadcast”;

15. 在下一個視窗中,将讓您選擇所要釋出的内容類型,如果隻是單純的進行流媒體直播,就選擇“編碼器(實況流)”,若是想在實況流中加入其它制作好的檔案,請選擇“播放清單”,若是想建立視訊點播伺服器,請選擇“目錄中的檔案”。由于我有現成的制作好的檔案,是以選擇了“播放清單”;

16. 選擇完了釋出内容的類型,就要選擇釋出的方案,我們進行的是網絡廣播的服務,當然要選擇“廣播釋出點”。在接下來的視窗中,我們要選擇内容的傳遞方式,看到了吧,這次我們前面介紹的單點傳播群組播的基本概念起了作用,我們的網絡一般不支援多點傳播,是以要選擇“單點傳播”;

17. 若是您以前有建立好的播放清單檔案(wsx或htm檔案),直接在下一個視窗中選擇“現有播放清單”,若是沒有,請跟我一樣,“建立播放清單後進行添加”。在添加視窗中,可以添加檔案、編碼器的實況流、遠端釋出點的流媒體、ASP、CGI的動态源等多種媒體,并且還可以添加廣告資訊以及調整媒體的播放順序;

18. 完成播放清單的編輯後,點選“下一步”将播放清單儲存成檔案,并且在下一個視窗中可以選擇是否“循環播放”或“無序播放”這些流媒體。再經曆幾個确認框,您就完成了Windows Media流媒體廣播伺服器的建立,為了快捷,我們就将“完成此向導後啟動其它向導”前面的對勾去掉吧!

19. 伺服器啟動後,您就可以在Windows Media Player中輸入“mms://伺服器IP/釋出點名稱”觀看網絡廣播了。而在Windows Media Services的管理器中,我們可以随時監視流媒體的播放情況、添加/删除與調整播放清單、插入廣告、釋出公告(可以直接生成htm頁面)、調整該廣播站的屬性等操作,并可以随時通過下面的按鈕啟動與停止廣播站以及測試目前流媒體是否正常;

此圖是使用公告向導建立的釋出點公告網頁,是不是非常友善?

20. 我們還可以通過在浏覽器中輸入管理器的網址或者直接啟動管理工具中的“Windows Media Services(Web)”來對整個流媒體伺服器進行Web管理以及遠端管理,其管理界面與本地管理除了少幾個功能外,幾乎沒有差别。

遠端管理還可以對一個伺服器組多台伺服器進行管理。

 至此,我們的Windows Media網絡廣播伺服器已經完全建設完畢,您已經擁有了一個具有強大功能的網絡廣播站,是不是覺得不過瘾?因為還有許多優秀的影片想和朋友們共享,并且想讓他們能夠自由的觀賞自己喜歡的節目,不受你廣播時間表的限制?那麼,跟我來,我們在此基礎上再搭建一個Windows Media視訊點播伺服器。

繼續閱讀