搭建HTTP Live Streaming直播系统
? ? ??我的博客已轉移至 http://nmgfrank.com
? ? 最近,需要將蘋果的HTTP Live Streaming系統搭建起來。完全沒有頭緒,故第一步就是學習。
一、學習資料
官網資料
1.?http://developer.apple.com/resources/http-streaming/
具體的搭建方案
? ? ? ? 使用segmenter將現成的視頻文件分割,并生成列表文件。
1.?http://blog.csdn.net/zhoujunming/article/details/6694730
2.?http://blog.sina.com.cn/s/blog_6c13e14e0100r9b8.html
3.?http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/
二、使用Helix Universal Server和Helix Producer搭建直播系統
? ? ? ? ? ? ?1. http://scrolls.bokecc.com/?p=207? ?
? ? ? ? ? ? ? ? ? ? ““”
蘋果沒有官方的HLS直播服務器軟件和客戶端軟件。其它第三方公司的產品有: ·? TVersity ·? Helix Universal Server ·? Wowza Media Server ·? VLC Media Player version 1.2 我采用Helix Universal Server和Helix Producer(客戶端軟件)進行了直播測試。 若要做針對iOS平臺的直播,目前來看,只能采用此種方式。? ? ? ? ? ? ? ? ? ? ”“” ? ??
? ? ? ? ? ? ? ? ? ? ?因此我也選擇使用Helix Universal Server和Helix Producer來搭建直播系統。
? ? ? ? ? ? ? ?2. ?Helix Universal Server
? ? ? ? ? ? ? ? ? (1) ?下載與安裝
? ? ? ? ? ? ? ? ? ? ? ? ?http://www.realnetworks.com/helix/download-helix-products.aspx?
? ? ? ? ? ? ? ? ? ? ? ? ?在官方頁面下載Helix Universal Server與Helix Producer。
???????????????????????? Windows系統下,軟件的安裝過程會有詳細而明白的提示,十分方便,
???????????????????????? Linux操作系統中,
????????????????????????????? 將下載的tar.gz文件解壓得到bin文件。執行bin文件。
????????????????????????????? 1. 輸入證書的路徑,如果證書有效,就可以不斷地按【enter】鍵將其讀完。
????????????????????????????? 2. 選擇accept剛才閱讀過的內容。
????????????????????????????? 3. 然后程序會讓你填寫安裝路徑,默認為bin文件所在的文件夾。第一次安裝時,
?????????????????????????????? 由于enter點得太快,跳過了這一步。于是不得不再安裝一次!!
????????????????????????????? 4. 輸入用戶名和密碼。
????????????????????????????? 剩下就沒有太重要的內容了,憑著感覺安裝即可。
????????????????????????????? 安裝結束后,進入安裝目錄,
??????????????????????????????????? 輸入命令:sudo ./Bin/rmserver rmserver.cfg就可以將服務器運行起來。
??????????????????????????????????? 打開配置文件rmserver.cfg,找到管理端口,在我這里是<Var AdminPort="25567"/>?
??????????????????????????????????? 輸入鏈接:http://localhost:25567/admin/index.html 就可以進入系統的管理頁面。
? ? ? ? ? ? ? ? ? (2) ?官方文檔
? ? ? ? ? ? ? ? ? ? ? ??http://www.realnetworks.com/helix/download-helix-products.aspx
? ? ? ? ? ? ? ? ? ? ? ? 從上述鏈接對應的文章中,我們可以了解到如何搭建基于Helix Universal Server的系統,
? ? ? ? ? ? ? ? ? ? ? ? 其中,文章的第七章詳細介紹了如何將
? ? ? ? ? ? ? ? ? ? ? ? http://docs.real.com/docs/producer14/HelixProducer14.0.0_GettingStarted.pdf
? ? ? ? ? ? ? ? ? ? ? ? 上述鏈接對應的文章介紹了Helix Producer的使用方法。
? ? ? ? ? ? ? ? ? 3. 利用Helix Universal Server和Helix Producer在一臺機器上搭建直播系統(winxp操作系統)。
? ? ? ? ? ? ? ? ? ? ? ?(1) 安裝 Helix Universal Server和Helix Producer,安裝時均使用默認設置,另外 還要設置用戶名和密碼。
? ? ? ? ? ? ? ? ? ? ? ?(2) 運行Server
- 打開服務器自帶的管理頁面(Server Administrator)。
- 選擇Content Management ?-> ?Media Segmentation, ?將Enable Segmentation的狀態改為yes? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ?(3) 運行Helix Producer。
- 選中input標簽,設置輸入。選中USB/Capture Device,再選擇相應的信號源。
- 選中output標簽,設置輸出。點擊面板上的加號(Add output),然后進行對兩類參數進行設置。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? output servers:設定編碼后的數據發到哪個服務器上。主要有如下幾個參數:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Server Type(可能是producer向服務器傳送數據的方式):Helix Push.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Stream Name(數據流的名稱,在客戶端,可以通過這個名稱向服務器請求相應的數據流):test.mp4。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Server address(服務器地址,由于server在本地,我將這個值設定為127.0.0.1)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?HTTP Server Port(服務器設定的HTTP端口,默認為80):80.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Username,Password(Helix服務器在安裝之初設置的用戶名和密碼)。
- 點擊“Start Job”, 如果start成功,說明producer已經連接到服務器并且開始傳輸數據。
? ? ? ? ? ? ? ? 4. 觀察直播系統中的文件。
? ? ? ? ? ? ? ? ? ? ?(1) 通過鏈接http://127.0.0.1/m3ugen/broadcast/test.mp4可以獲得.m3u8文件(類似于index文件)。
? ? ? ? ? ? ? ? ? ? ?(2) 進入服務器管理頁面,選擇Content Management -> Content Browsing, 點擊Browse Content鏈接,就可以看到服務器上
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?的掛載點,以及掛載點下的資源。選擇iPhone掛載點,進入broadcast,,進入test.mp4就可以看到ts格式的片段文件。
? ? ? ? ? ? ? ? 5. ?播放。
? ? ? ? ? ? ? ? ? ? ?(1) 在播放器(例如vlc)中輸入地址 ?rtsp://127.0.0.1:554/broadcast/test.mp4, 可以看到直播的視頻。
? ? ? ? ? ? ? ? ? ? ?(2) 播放HTTP Streaming,使用蘋果客戶端(iPhone)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?用safari運行腳本:
<html>?
? ? <head>?
<meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
? ? ? ? ? ?</head> <body style="background-color:#FFFFFF; ">?
? ? <body>
? ? ? ? ? ? ? ? ? ? <center>?<video src="SERVER_ADD:SERVER_PORT/m3ugen/broadcast/test.mp4" controls autoplay ></video> </center>
? ? ?</body>?
</html>
三、使用免費的產品搭建直播系統
? ? ?上述方案的不足就是Helix的產品只有試用版。想用正版就得花錢。
? ? ?1. 學習資料
? ? ? ?使用VLC+mediastreamsegmenter+apache搭建HTTP Live Streaming系統:
? ? ? ? ? ? ? http://www.unmht.org/memo/en_ipod_stream.html
? ? ? ? ? ? ? ? ? ?http://jokru.org/apple-http-live-streaming-to-the-ipadiphone-w
? ? ? ? ?mediastreamsegmenter的使用方法:http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/mediastreamsegmenter.1.html
? ? ? ? ?對于搭建HTTP Live Streaming系統,官方的說明資料:http://developer.apple.com/library/ios/#technotes/tn2224/_index.html
? ? ?2.工具的選擇
? ? ? ? ?(1)視頻信號的采集與編碼。
?? ? ? ? ? ? ? ?mediastreamsegmenter能夠接收的數據:視奧頻-》H264;音頻-》AAC, 封裝于ts流中,
? ? ? ? ? ?通過UDP傳輸(似乎是這些要求,具體細節我其實也不清楚)。
? ? ? ? ? ?下面開始尋找能夠滿足這個要求的工具。
? ? ? ? ? ? ? ? 1)quicktime broadcaster ??
? ? ? ? ? ? ? ? ? ? broadcaster的下載地址:http://developer.apple.com/library/ios/#documentation/networkinginternet/conceptual/streamingmediaguide/Introduction/Introduction.html
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?安裝這個軟件后,用它向mediastreamsegmenter喂數據,segmenter報錯。因此,我認為(可能不對),
? ? ? ? ? ? ? ? ? ? ? ? ? ?這個工具不能滿足要求。
? ? ? ? ? ? ? ? ? ? ? ?2) VLC
? ? ? ? ? ? ? ? ? ? ? ? ? ?經過試驗,使用VLC可以成功地向mediastreamsegmenter喂數據。因此我選擇VLC作為視頻、音頻流的處理工具。
? ? ? ? ? ? ? ? (2)視頻流的分片工具
? ? ? ? ? ? ? ? ? ? 使用蘋果的mediastreasegmenter
? ? ? ? ? ? ? ? ?( 3 ) 服務器
? ? ? ? ? ? ? ? ? ? ?apache
? ? ? ?3. 具體架設方案。
? ? ? ? ? ? ? ? (1) 視頻、音頻信號的采集與編碼,使用rtsp協議將視頻播放出去。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 一臺PC(ip地址為192.168.1.101),裝備有攝像頭,麥克風,安裝有VLC.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1)打開vlc,,選擇 媒體->打開捕獲設備->捕獲設備。點擊播放。如果vlc能夠成功將攝像頭和麥克風捕獲的信號顯示出來,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 就可以進行下一步。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2)在VLC中選擇 媒體->串流->捕獲設備,點擊串流。接下來會彈出一個流輸出設置窗口。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 在“目標”中,選擇RTSP進行添加,接著數據端口號(默認5544)和路徑(我設置為 /test)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 在轉碼選項中,在“激活轉碼前打鉤”,檔案中,保持默認選項(Video-H264+AAC(MP4))。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 點擊“串流”,這時,該PC機的5544端口就開始提供rtsp直播服務了。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3) 驗證rtsp服務是否可用。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 打開一個新的VLC,選擇 ?媒體->打開網絡串流。輸入rtsp://127.0.0.1:5544/test, 如果可以成功地看到攝像頭捕獲
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 的影像,就說明rtsp服務是可用的。
? ? ? ? ? ? ? ? ?(2)視頻流的轉碼
? ? ? ? ? ? ? ? ? ? ? ? ? ? 一臺mac(我測試用的的視頻服務器都部署在這里,IP:192.168.1.109),安裝有vlc.
? ? ? ? ? ? ? ? ? ? ? ? ? ? 由于mediastreamsegmenter不能直接讀入rtsp服務器傳來的數據流,所以我們需要對數據進行一定的變換。
? ? ? ? ? ? ? ? ? ? ? ? ? ? 1)找到應用程序vlc的地址(一般默認在/Applications/VLC.app/Contents/MacOS下),進入文件夾。
? ? ? ? ? ? ? ? ? ? ? ? ? ? 2)輸入命令:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ./VLC --intf=dummy rtsp://192.168.1.101:5544/test ?'--sout=#transcode{fps=25,vcodec=h264,venc=x264{aud,profile=baseline,level=30, keyint=30,bframes=0,ref=1,nocabac},acodec=mp3,ab=56,audio-sync,deinterlace}:duplicate{dst=udp{mux=ts,dst=127.0.0.1:8000,access=udp}}'
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 下面大致介紹一下這條命令:
- ?--intf=dummy ? 表示不顯示VLC的窗口
- ?rtsp://192.168.1.101:5544/test 是vlc輸入流的來源,也就是我們之前搭建的rtsp服務器。
- ?--sout, 通過這個選項 對輸出進行具體的設置。
- ?ranscode{fps=25,vcodec=h264,venc=x264{aud,profile=baseline,level=30, keyint=30,bframes=0,ref=1,nocabac},acodec=mp3,ab=56,audio-sync,deinterlace} ? ?這一行命令對于視頻和音頻的轉碼格式進行設置(視頻和264,音頻aac), 但一些參數還不是很明白。? ? ? ? ??
- duplicate{dst=udp{mux=ts,dst=127.0.0.1:8000,access=udp}},將視頻、音頻流封裝為ts格式,使用udp傳輸,傳向本地服務器的8000端口。
? ? ? ? ? ? ? ? (3) 獲取ts流并進行分片
? ? ? ? ? ? ? ? ? ? ? ? ? ?1)medianstreamsegmenter
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 這個小程序一般默認安裝在mac的/usr/bin下。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 具體使用方法:http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/mediastreamsegmenter.1.html
? ? ? ? ? ? ? ? ? ? ? ? ? ? 2)使用命令
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /usr/bin/mediastreamsegmenter ?-s 3 -t 5 -D -f /usr/frank/stream 127.0.0.1:8000
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 判斷是否成功分片:如果終端顯示 : Finalized 存儲路徑 file Sequencex.ts,則說明分片成功了。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 說明:?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?-s 3 ?設定index文件中記錄幾個分片。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?-t ?5 設定多長時間(秒)產生一個分片,默認為10秒。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?-D 刪除過期的分片文件
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?-f?/usr/frank/stream設置存儲分片文件和index文件的文件夾
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?127.0.0.1:8000 設置獲取ts流的地址
? ? ? ? ? ? ? ? (4)使用apache提供服務.
? ? ? ? ? ? ? ? ? ? ? ? ? 第一次在mac下使用apache,難免會感到一絲生疏。學習資料:http://hi.baidu.com/hsbd2005/blog/item/7393a84f0017b5c7d1c86ad4.html
? ? ? ? ? ? ? ? ? ? ? ? ? mac自帶apache.
? ? ? ? ? ? ? ? ? ? ? ? ? 1) 啟動
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 使用命令:sudo apachectl start, 然后在瀏覽器中數據localhost進行查看,如果看到It works,說明apache可以正常工作。
? ? ? ? ? ? ? ? ? ? ? ? ? 2) 配置文件
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 配置文件默認路徑為 /etc/apache2/httpd.conf(對于文本的編輯,可以用 (vi 文件路徑),也可以用(sudo open -a TextEdit.app 文件路徑)).
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 可以看到 DocumentRoot ?"/Library/WebServer/Documents",也就是說,這是存放資源的默認路徑。
? ? ? ? ? ? ? ? ? ? ? ? ? ?3) 進入 /Library/WebServer/Documents, 建立文件夾httpstream,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?將mediastreamsegmenter的輸出指向這里: ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/usr/bin/mediastreamsegmenter ?-s 3 -D -f /Library/WebServer/Documents/httpstream 127.0.0.1:8000
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 在瀏覽器中輸入localhost/httpstream/prog_index.m3u8,如果能夠看到分片文件的列表,就說明成功了一半。 ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ?4) 寫腳本文件,在Library/WebServer/Documents/下創建一個index.html文件,具體內容如下:
<html>?
? ? <head>?
<meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
? ? ? ? ? ?</head> <body style="background-color:#FFFFFF; ">?
? ? <body>
? ? ? ? ? ? ? ? ? ? <center>?<video src="192.168.1.109/httpstream/prog_index.m3u8" controls autoplay ></video> </center>
? ? ?</body>?
</html>
(5) 直播效果
? ? ? ? ? ?在safari中輸入鏈接http://192.168.1.109/index.html,觀看直播。 ??
? ? ? ? ? ? 畫質很差,可能是一些參數設得不夠好。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ??
總結
以上是生活随笔為你收集整理的搭建HTTP Live Streaming直播系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全向移动小车运动控制_如何让机器人进行全
- 下一篇: 谷粒学苑 —— 3、后台系统前端项目创建