流媒體平台搭建

來源:互聯網
上載者:User

標籤:rtsp   流媒體平台   

1       目標

希望建設一個流媒體平台(類似音樂平台),通過流媒體平台維護相關流媒體資源。

2       主要功能要求

         主要功能可以包括:流媒體內容維護(資訊維護、流媒體檔案上傳等)、支援RTSP(Real-Time Streaming Protocol,即時資料流媒體協議)和RTP/RTCP(Real-Time TranCPort Protocol/RTP Control Protocol,即時傳輸協議/RTP控制協議)進行流媒體播放。DSS給出的績效參數為:預設1000使用者同時線上,可以修改為最高9999,前提是頻寬足夠大。

3       設計實現方案

         由於部門沒有類似的項目建設案例,項目組人員不能掌握流媒體技術。要想在工期內完成項目的建設工作。通過互連網搜尋。找到一款開源流媒體平台項目Darwin Streaming Server。通過對DSS相關功能的二次開發,利用其串流播放能力。根據DSS項目給出的效能指標滿足需求文檔中的要求(未通過LR驗證)。

3.1     DSS開源產品介紹

         Darwin Streaming Server簡稱DSS。DSS是Apple公司提供的開源即時資料流媒體播放伺服器程式。整個程式使用C++編寫,在設計上遵循高效能,簡單,模組化等程式設計原則,務求做到程式高效,可擴充性好。並且DSS是一個開放原始碼的,基於標準的流媒體伺服器,可以運行在Windows NT和Windows 2000,以及幾個UNIX實現上,包括Mac OS X,Linux,FreeBSD,和Solaris作業系統上的。Darwin Streaming Server,提供音樂 (mp3) 與影音 (3gp、mp4、mov) 串流播放功能。

         較為詳細的功能介紹參見:

    http://hi.baidu.com/dmkj2008/item/a2085a30e0738e80c3cf2956

         轉寄功能:如果伺服器壓力較大或功能擴充,可以使用DSS Relay功能,視壓力測試結果而定。

         參考資源:

http://www.jsjyedu.cn/zxlw/48254_2.html

http://www.jtben.com/document/1120414

3.2     DSS搭建

2.1  安裝命令

tar zxf DarwinStreamingSrvr5.5.5-Linux.tar.gz

cd DarwinStreamingSrvrlinux-Linux

./Install

Please enter a new administrator user name: admin

Please enter a new administrator Password: your_password

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進程

2.5 error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

 

建議:在/etc/ld.so.conf.d/上建立動態庫相應的檔案設定檔*.conf, 

在該檔案中填上該動態庫的絕對路徑 

此例: 

vim /etc/ld.so.conf.d/ld.Darwin.so.conf 

/usr/local/lib

同時copy libstdc++.so.6 到/usr/local/lib

 

運行:ldconfig /etc/ld.so.cache

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 傳送串流資料 (視需求,本次設定為否)

 

以上,DSS搭建完成。

3.3     音頻編碼

3.3.1  軟體安裝

3.3.1.1 Acc聲音編碼

tar xvfz faac-1.28.tar.gz

cd faac-1.28

./configure --prefix=/usr/local --enable-shared  --without-mp4v2

Make

FAQ:

make 時報錯

if g++ -DHAVE_CONFIG_H -I. -I. -I../.. -I../../include   -Wall -g -O2 -MT 3gp.o -MD -MP -MF ".deps/3gp.Tpo" -c -o 3gp.o 3gp.cpp; \

 then mv -f ".deps/3gp.Tpo" ".deps/3gp.Po"; else rm -f ".deps/3gp.Tpo"; exit 1; fi

mpeg4ip.h:126: error: new declaration ?.onst char* strcasestr(const char*, const char*)?

vim +126 common/mp4v2/mpeg4ip.h

將此行刪除,儲存退出

char *strcasestr(const char *haystack, const char *needle); 

make clean

 

 

make install

 

3.3.1.2 amr_nb聲音編碼

tar xvf amrnb-7.0.0.2.tar.bz2

cd amrnb-7.0.0.2

./configure --prefix=/usr/local --enable-shared

make

make install

由於網路問題安裝不上,請跳過此步驟。

3.3.1.3 ffmpeg

    1、tar xvfj ffmpeg-0.4.9-p20051120.tar.bz2

  得到解壓後的目錄是ffmpeg-0.4.9-p20051120,名字太長,利用mv命令改為ffmpeg

mv ffmpeg-0.4.9-p20051120 ffmpeg

cd ffmpeg/libavcodec

mkdir amr_float   同時將解壓26104-700.zip的葉子檔案cp到 amr_float中

執行:

     declare -x    LD_LIBRARY_PATH="/usr/local/lib:/u01/software/stream/faac-1.28:/u01/software/stream/amr  nb-7.0.0.2"    

 

  2、配置

./configure --prefix=/usr/local/ffmpeg --enable-shared --enable-faac --enable-amr_nb --disable-ffplay

  其中:--enable-shared 是允許其編譯產生動態庫,在以後的編程中要用到這個幾個動態庫。--prefix設定的安裝目錄。

 

  3、編譯並安裝

  make

  make install

  4、安裝之後在/usr/local/ffmpeg會看到有三個目錄

  lib 動態連結程式庫位置

  include 編程要用到標頭檔

  bin 執行檔案所在的目錄

  5、為了以後方便編程,我們把lib中的三個連結庫libavcodec.so libavformat.so libavutil.so複製到/usr/lib下。把include目錄下的ffmpeg目錄複寫到/usr/include下。

    6、ln -s  /usr/local/ffmpeg/bin/ffmpeg /usr/bin/ffmpeg

    7、 vi /etc/ld.so.conf  添加/usr/local/lib

        儲存後,執行 ldconfig

3.3.1.4 安裝音頻流化軟體

音頻流化作用如下:

Hint tracks are a series of instructions in a mp4 container file that
tell a server how to transmit packets. Hint tracks always refer
to another track, most likely an audio or video media track.  

This series of instructions tells the server when to send the packet, 
what type of RTP header to add, if there is any extra data in the
packet, and how much data to send in the packet.  To save on space, 
a hint can contain a pointer to the media track, instead of duplicating
that data.

安裝流程:

 

tar  xvfz mpeg4ip-1.6.1.tar.gz

cd mpeg4ip-1.6.1

 

./bootstrap --prefix=/usr/local/mpeg4ip --enable-ffmpeg=/usr/local/ffmpeg --disable-player --disable-server

如果報錯如下:util/testnasm.sh: line 8: test: =: unary operator expected

Please:

Check for the following text in the "configure" file:

BILLSNASM_arg=`nasm -r | tr ‘.‘ ‘ ‘`

and replace the -r with -v

Save and run bootstrap again.

make

 

報錯如:t char* strcasestr(const char*, const char*

操作:

vim +126  include /mpeg4ip.h

 

make install

添加預設命令

[[email protected] ~]# cd /usr/bin/

[[email protected] bin]# ln -s /usr/local/mp

 [[email protected] bin]# ln -s /usr/local/mpeg4ip/bin/mp4info /usr/bin//mp4info

 

 

tar zxvf gpac-0.5.0.tar.gz

tar zxvf gpac_extra_libs-0.4.5.tar.gz

cd gpac

cp -r ../gpac_extra_libs/* extra_lib/

chmod +x configure

./configure

make

make lib

make apps

make install

whereis MP4Box

添加預設命令

[[email protected] bin]# cd /usr/bin

[[email protected] bin]# ln -s /usr/local/bin/MP4Box MP4Box

[[email protected] bin]# ll M*

Mail    MP4Box 

[[email protected] bin]# ll MP4Box

lrwxrwxrwx. 1 root root 26  3月 27 17:04 MP4Box -> /usr/local/gpac/bin/MP4Box

[[email protected] bin]# cd /home/tapapp/DarwinStreamingSrvrlinux-Linux/

[[email protected] DarwinStreamingSrvrlinux-Linux]# MP4Box -hint outfile.mp4

Hinting file with Path-MTU 1450 Bytes

Hinting track ID 1 - Type "mp4a:mp4a" (mpeg4-generic) - BW 56 kbps

Saving outfile.mp4: 0.500 secs Interleaving   

[[email protected] DarwinStreamingSrvrlinux-Linux]# mp4info outfile.mp4

./mp4info version 2.0.0

/home/tapapp/DarwinStreamingSrvrlinux-Linux/outfile.mp4:

ReadAtom: "/home/tapapp/DarwinStreamingSrvrlinux-Linux/outfile.mp4": atom type 〆nc is suspect

Track   Type    Info

1       audio   MPEG-4 AAC LC, 88.960 secs, 0 kbps, 8000 Hz

65536   hint    Payload (null) for track 1

ReadAtom: "/home/tapapp/DarwinStreamingSrvrlinux-Linux/outfile.mp4": atom type 〆nc is suspect

 

 

說明:對於一些特殊的檔案,先ffmpeg -i xxx.mp4 -vcodec copy -acodec copy xxx_new.mp4然後在執行MP4Box -hint xxx_new.mp4

3.3.2   Mp3格式音頻轉碼

轉成音頻編碼為aac的mp4格式檔案

ffmpeg -i sample.mp3 -acodec aac -ac 2 -ar 8000 -ab 96 -vol 200 outfile.mp4

轉成音頻編碼為amr_nb的mp4格式檔案

ffmpeg -i sample.mp3 -ac 1 -acodec amr_nb -ar 8000 -ab 96 -vol 200 test_amr.mp4

 

具體操作流程:

 650) this.width=650;" title="5`HNV{8WBU7AQB_WG493{%I.png " src="http://s1.51cto.com/wyfs02/M01/85/AC/wKioL1esGUeDhYjkAAAtyb_1-9M814.png-wh_500x0-wm_3-wmp_4-s_3302624824.png" alt="wKioL1esGUeDhYjkAAAtyb_1-9M814.png-wh_50" />

 

3.3.3   VLC產生sdp檔案

vlc -vvv sample_100kbit.mp4 --sout ‘#rtp{dst=10.4.121.194, msx=ts, port=1234, sdp=rtsp://10.4.121.194:554/test.sdp}‘

3.4     音頻檔案儲存體

按照linux檔案目錄存放:

$DSS_HOME/音頻編碼格式(amr,acc)/音頻分類編碼1(文史、搞笑等)/音頻分類二級編碼(詩詞散文、國外名著等)/書籍名稱編碼/產品包(可選)/音頻檔案.mp4

範例:$DSS_HOME /acc/1001/1001001/01/01.mp4

缺點:不支援中文

3.5      RTSP服務控制

         存在問題!

  已經通過socket轉寄方式處理

3.6     效能測試

3.6.1  StreamingLoadTool

命令:./ StreamingLoadTool –n203

內建測試載入器,使用者達到203後,測試命令報錯。

PS:-u 命令不好用,必須修改streamingloadtool.conf  的url

 

 

3.6.2  Live555

安裝live555 使用其工具rstpCLIENT 測試效能。

  ./genMakefiles           linux

    make

   make install

調用壓力工具指令碼./test2.sh 1000    test2為無提示成功指令碼  較快。可以通過DSS平台查看

                ./test1.sh 1000   test1 每2秒執行一次,較慢,有提示成功失敗。

3.6.3  LR測試

未測試。

可用的播放地址:

rtsp://10.4.121.56/sample_300kbit.mp4

 

本文出自 “呼吸雨後泥土的味” 部落格,請務必保留此出處http://tongl.blog.51cto.com/4470985/1836864

流媒體平台搭建

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.