CentOS7下安裝配置流媒體伺服器Red5
背景:因工作需要,要研究一些流媒體伺服器相關的技術,主要是為了搭建直播所用的伺服器,本文是基於CentOS7搭建Red5流媒體伺服器,利用OBS推流工具可實現簡單的直播、觀看功能。
本文主要介紹流媒體伺服器red5的搭建,主要就是修改配置和新增到服務。
-
下載
我們可以直接從github官網下載最新版本的Red5-server,因為我們是在Linux系統搭建的環境,這裡選擇red5-server-1.0.9-RELEASE.tar.gz。點選跳轉下載頁面
下載完成之後,上傳至/use/local路徑下,然後就可以開始解壓安裝了。
[[email protected] ~]# cd /usr/local/
[ [email protected] 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
[[email protected] ~]# 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
解壓成功後進入目錄
[[email protected] local]# cd red5-server/ [[email protected] 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 [[email protected]['/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去測試,這裡就不再囉嗦了。