1. 程式人生 > >CentOS7下安裝配置流媒體伺服器Red5

CentOS7下安裝配置流媒體伺服器Red5

背景:因工作需要,要研究一些流媒體伺服器相關的技術,主要是為了搭建直播所用的伺服器,本文是基於CentOS7搭建Red5流媒體伺服器,利用OBS推流工具可實現簡單的直播、觀看功能。

本文主要介紹流媒體伺服器red5的搭建,主要就是修改配置和新增到服務。

  • 下載

我們可以直接從github官網下載最新版本的Red5-server,因為我們是在Linux系統搭建的環境,這裡選擇red5-server-1.0.9-RELEASE.tar.gz。點選跳轉下載頁面

wKioL1lvMj6Th2uEAAD5wIcoLy4335.png-wh_50

下載完成之後,上傳至/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

wKiom1lwJiKBqiLyAADsoZchx0g474.png-wh_50

進入成功,說明red5的http服務是沒有問題的.

  • 推流測試

我們來測試一下直播吧,利用開源推流工具OBS。

wKiom1lwJ-eScN-nAABO7M79vFI943.png-wh_50

wKioL1lwKAHwG4udAATDbvc6WCA858.png-wh_50

圖1設定推流地址為RED5伺服器地址,看圖2的右下角,綠色燈亮起表示推流成功。

  • 拉流測試

拉流測試這次我使用的是VLC,開啟網路串流中輸入我們的拉流地址:rtmp://IP:1935/oflaDemo/串流碼。

wKiom1lwOKjBSyiQABGg_EOzk6Y314.png-wh_50

好的,沒有問題,拉流成功。

  • 新增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中開啟了顯示器獲取,左側是拉流的畫面,右側是電腦本地的時間。

wKiom1lwTi3BPoDuAAvEjEcM2Wo074.png-wh_50

可見,延遲在2-3S之間。注:該測試在區域網中,非外網。

好了,在CentOS7環境下安裝配置流媒體伺服器Red5到此結束了。當然測試推流和拉流還可以用red5自帶的demo去測試,這裡就不再囉嗦了。