背景:因工作需要,要研究一些流媒體服務器相關的技術,主要是爲了搭建直播所用的服務器,本文是基於CentOS7搭建Red5流媒體服務器,利用OBS推流工具可實現簡單的直播、觀看功能。
本文主要介紹流媒體服務器red5的搭建,主要就是修改配置和添加到服務。
下載
我們可以直接從github官網下載最新版本的Red5-server,因爲我們是在Linux系統搭建的環境,這裏選擇red5-server-1.0.9-RELEASE.tar.gz。點擊跳轉下載頁面
下載完成之後,上傳至/use/local路徑下,然後就可以開始解壓安裝了。
[root@bogon ~]# cd /usr/local/ [root@bogon local]# ls bin etc games include lib lib64 libexec red5-server-1.0.9-RELEASE.tar.gz sbin share src
安裝
首先red5是基於java,所以安裝之前請先安裝jdk,我這裏已經安裝了jdk1.8
[root@bogon ~]# java -version openjdk version "1.8.0_65" OpenJDK Runtime Environment (build 1.8.0_65-b17) OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)
我們繼續,把剛纔上傳的red5-server-1.0.9-RELEASE.tar.gz先解壓
tar -zxvf red5-server-1.0.9-RELEASE.tar.gz
解壓成功後進入目錄
[root@bogon local]# cd red5-server/ [root@bogon red5-server]# ls commons-daemon-1.0.15.jar license.txt red5.bat red5.service red5-shutdown.sh work conf log red5-debug.bat red5-service.jar shutdown.token install-service.bat plugins red5-debug.sh red5.sh uninstall-service.bat lib red5 red5-server.jar red5-shutdown.bat webapps
進入目錄之後我們可以看到red5的目錄結構,顧名思義conf爲配置文件存放地址,red5.sh爲red5的啓動文件,我們進入conf文件夾,修改red5的配置文件。
vi conf/red5.properties
會打開配置文件:
# Socket policy policy.host=0.0.0.0 policy.port=843 # HTTP http.host=0.0.0.0 http.port=5080 https.port=5443 http.URIEncoding=UTF-8 http.max_headers_size=8192 http.max_keep_alive_requests=-1 http.max_threads=20 http.acceptor_thread_count=10 http.processor_cache=20 # RTMP rtmp.host=0.0.0.0 rtmp.port=1935 rtmp.io_threads=16 rtmp.send_buffer_size=65536 rtmp.receive_buffer_size=65536 ......(後面還有很多,這裏就不貼出來了)
我們需要修改http.host和rtmp.host爲電腦實際的IP地址,修改完成之後保存退出。
修改完成之後我們可以直接通過命令啓動red5服務。
./red5.sh
好的。我們可以看到控制檯已經開始飆起了日誌,幾秒之後看到日誌停了,就像這樣:
......(前面還有很多,這裏就不貼出來了) [INFO] [Loader:/oflaDemo] org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from ServletContext resource [/WEB-INF/red5-web.xml] [INFO] [Loader:/oflaDemo] org.red5.server.Context - Setting parent bean factory as core [INFO] [Loader:/oflaDemo] org.red5.server.scope.WebScope - Set server [Server@42441ae2map['/chat' -> 'default', '/live' -> 'default', '/vod' -> 'default', '/' -> 'default', 'localhost:5080/installer' -> 'default', 'localhost/installer' -> 'default']] [INFO] [Loader:/oflaDemo] org.red5.server.Server - Add mapping global: default host: context: oflaDemo oflaDemo appStart [INFO] [pool-4-thread-1] org.red5.server.tomcat.WarDeployer - Deploy wars with app start
此時我們開啓端口,測試一下。
firewall-cmd --permanent --zone=public --add-port=1935/tcp firewall-cmd --permanent --zone=public --add-port=5080/tcp firewall-cmd --reload
測試
端口開啓完畢,試一下能否進入red5的管理界面。地址爲你的IP加上端口號:5080
進入成功,說明red5的http服務是沒有問題的.
推流測試
我們來測試一下直播吧,利用開源推流工具OBS。
圖1設置推流地址爲RED5服務器地址,看圖2的右下角,綠色燈亮起表示推流成功。
拉流測試這次我使用的是VLC,打開網絡串流中輸入我們的拉流地址:rtmp://IP:1935/oflaDemo/串流碼。
好的,沒有問題,拉流成功。
添加red5到系統啓動項
但是,僅僅啓動成功還沒有達到我的目的,我可不想每次啓動服務都那麼麻煩,所以,我們要把red5的服務添加到啓動項中。
vi /etc/init.d/red5
在/etc/init.d/目錄中新建red文件,並添加以下內容:
#!/bin/bash # For RedHat and cousins: # chkconfig: 2345 85 85 # description: Red5 flash streaming server # processname: red5 # Created By: BoTao Zhao ([email protected]) PROG=red5 RED5_HOME=/usr/local/red5-server DAEMON=$RED5_HOME/$PROG.sh PIDFILE=/var/run/$PROG.pid # Source function library . /etc/rc.d/init.d/functions [ -r /etc/sysconfig/red5 ] && . /etc/sysconfig/red5 RETVAL=0 case "$1" in start) echo -n $"Starting $PROG: " cd $RED5_HOME $DAEMON >/dev/null 2>/dev/null & RETVAL=$? if [ $RETVAL -eq 0 ]; then echo $! > $PIDFILE touch /var/lock/subsys/$PROG fi [ $RETVAL -eq 0 ] && success $"$PROG startup" || failure $"$PROG startup" echo ;; stop) echo -n $"Shutting down $PROG: " killproc -p $PIDFILE RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$PROG ;; restart) $0 stop $0 start ;; status) status $PROG -p $PIDFILE RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|status}" RETVAL=1 esac exit $RETVAL
添加到服務
chmod +x /etc/rc.d/init.d/red5 chkconfig --add red5 chkconfig red5 on
添加到服務之後可以通過service red5 start來啓動red5服務,service red5 stop關閉服務,是不是非常方便了。
測試直播延遲
爲了測試直播延遲,我在obs中開啓了顯示器獲取,左側是拉流的畫面,右側是電腦本地的時間。
可見,延遲在2-3S之間。注:該測試在局域網中,非外網。
好了,在CentOS7環境下安裝配置流媒體服務器Red5到此結束了。當然測試推流和拉流還可以用red5自帶的demo去測試,這裏就不再囉嗦了。