1、Red五、OBS、VLC簡介
Red5的主要功能和Macromedia公司的FMS相似,提供基於Flash的流媒體服務的一款基於Java的開源流媒體服務器。它由Java語言編寫,使用RTMP做爲流媒體傳輸協議,這與FMS徹底兼容。它具備流化FLV、MP3文件,實時錄製客戶端流爲FLV文件,共享對象,實時視頻播放、Remoting等功能。用Red5替換FMS後,客戶端不用更改可正常運行。
OBS免費開源軟件,用於視頻錄製和直播,功能特色:css
- 直播 RTMP 流媒體,兼容各大直播平臺
- 支持OBS直播相關插件
- 性能穩定
- 編碼使用H264(X264)和AAC
- 無限數量的場景和來源
- 基於GPU的高性能遊戲流媒體遊戲捕獲
- 支持DirectShow捕獲設備(攝像頭、採集卡、等)
- MP4或者FLV文件輸出
VLC多媒體播放器(最初命名爲VideoLAN客戶端)是VideoLAN計劃的多媒體播放器。它支持衆多音頻與視頻×××及文件格式,並支持DVD影音光盤,VCD影音光盤及各種流式協議。它也能做爲unicast或 multicast的流式服務器在IPv4或 IPv6的高速網絡鏈接下使用。它融合了FFmpeg計劃的×××與libdvdcss程序庫使其有播放多媒體文件及加密DVD影碟的功能。
2、背景
因工做須要,進一步瞭解直播推流的過程,研究流媒體服務器的相關技術。本文是基於CentOS7搭建Red5流媒體服務器,利用OBS推流工具、VLC播放器工具實現的簡單的直播、觀看功能。
3、直播的流程
錄製——編碼——網絡傳輸——解碼——播放
好了,瞭解這麼多下來咱們就來實際的操做。
4、下載
官網下載red5-server-1.0.6-RELEASE,能夠在centos裏面wget下載,也能夠windows下下載上傳到linux,此處再也不贅述,本文以上傳的方式安裝。https://github.com/Red5/red5-server/releases
5、安裝
前面已經說過Red5是基於Java的,首先先看系統是否安裝Java
[root@localhost tmp]#rpm -qa | grep java
查看java的版本
[root@localhost tmp]# java -version
無輸出則沒有安裝,須要先手動安裝
[root@localhost tmp]# yum install java-1.7.0-openjdk
[root@localhost tmp]# java -version
java version "1.7.0_191"
OpenJDK Runtime Environment (rhel-2.6.15.4.el7_5-x86_64 u191-b01)
OpenJDK 64-Bit Server VM (build 24.191-b01, mixed mode)
將Red5上傳至/usr/local/下解壓縮
[root@localhost local]# tar -zxvf red5-server-1.0.6-RELEASE-server.tar.gz
進入到 red5-server-1.0.6-RELEASE/目錄,編輯配置目錄conf下的red5.properties文件
vi red5-server-1.0.6-RELEASE//conf/red5.properties
![Centos7 Red5 OBS推流 VLC拉流](http://static.javashuo.com/static/loading.gif)
將圖片紅色標記的ip地址改成本地實際的服務器地址,修改完成以後保存退出。
修改完成以後咱們能夠直接經過 red5-server-1.0.6-RELEASE/下的shell腳本啓動red5服務。
[root@localhost red5-server-1.0.6-RELEASE]# ./red5.sh
......前面省略
[INFO] [Launcher:/installer] org.red5.server.Server - Add mapping global: default host: localhost:5080 context: installer
[INFO] [Launcher:/installer] org.red5.server.scope.WebScope - Webscope already registered
[INFO] [Launcher:/installer] org.red5.server.service.Installer - Installer service created
[INFO] [Launcher:] org.red5.server.Context - Setting parent bean factory as core
[INFO] [Launcher:] org.red5.server.scope.WebScope - Set server [Server@25b5de71map['/chat' -> 'default', '/vod' -> 'default', 'localhost:5080/installer' -> 'default', 'localhost/installer' -> 'default', '/live' -> 'default']]
[INFO] [Launcher:] org.red5.server.scope.Scope - Scope null name reset to: disallowed
[INFO] [Launcher:] org.red5.server.Server - Add mapping global: default host: context: null
[INFO] [Launcher:] org.red5.server.scope.Scope - Invalid scope name, null is not allowed
[WARN] [Launcher:] org.red5.server.scope.Scope - Invalid scope rejected: Scope [name=null, path=/default, type=APPLICATION, autoStart=true, creationTime=1538117994743, depth=1, enabled=true, running=false]
[WARN] [Launcher:] org.red5.server.scope.Scope - Scope not added to parent
[INFO] [Launcher:] org.red5.server.scope.WebScope - Webscope already registered
[INFO] [Launcher:/chat] org.red5.server.scope.WebScope - Webscope already registered
等Red5啓動完畢,打印的信息爲啓動的日誌。
使用netstart命令找到java啓動的端口1935,5080,在防火牆中放行對應的端口,或者直接關掉防火牆。
![Centos7 Red5 OBS推流 VLC拉流](http://static.javashuo.com/static/loading.gif)
CentOS7中使用的防火牆爲firewalld
查看firewalld的狀態
[root@localhost ~]# firewall-cmd --state
running
啓動和關閉防火牆
[root@localhost ~]# service firewalld start|stop|restart
查看防火牆的規則
[root@localhost ~]# firewall-cmd --list-all
插線端口是否開放
firewall-cmd --query-port=8080/tcp
開放1935,5080端口
firewall-cmd --permanent --add-port=5080/tcp
firewall-cmd --permanent --add-port=1935/tcp
移除端口
firewall-cmd --permanent --remove-port=8080/tcp
#重啓防火牆(修改配置後要重啓防火牆)
firewall-cmd --reload
參數解釋:
一、firwall-cmd:是Linux提供的操做firewall的一個工具;
二、--permanent:表示設置爲持久;
三、--add-port:標識添加的端口;
OK,這樣流媒體服務器就搭建好了,能夠直接在瀏覽器輸入:http://192.168.89.132:5080訪問了
![Centos7 Red5 OBS推流 VLC拉流](http://static.javashuo.com/static/loading.gif)
下來咱們來用OBS推個流驗證下服務器,流這塊的URL就是播放留地址:rtmp://192.168.89.132/live/自定義的名字
![Centos7 Red5 OBS推流 VLC拉流](http://static.javashuo.com/static/loading.gif)
設置好以後,添加場景和來源點擊開始推流
![Centos7 Red5 OBS推流 VLC拉流](http://static.javashuo.com/static/loading.gif)
點擊開始推流,看右下角標記的綠色變更,說明推流正常
![Centos7 Red5 OBS推流 VLC拉流](http://static.javashuo.com/static/loading.gif)
下來使用VLC拉流,訪問流地址rtmp://192.168.89.132/live/123
能夠播放,OK沒問題,拉流成功。