red5+obs+ffmpeg 推流實現單方直播 window +linux

red5  windows:

jdk :1.8   red5:1.0.8  (版本很重要。。)

一般來說,一個完整的流媒體服務系統需要三個部分組成:編碼器、流服務器和播放器。.

編碼器通過對內容來源(如MP3文件或者麥克風輸入)進行編碼,並將編碼過的內容發送到流服務器;流服務器再將它們發佈到Internet,這樣客戶端的播放器只要連接到流服務器就可以進行在線播放了。

主流開源流媒體服務器有哪些?
流媒體解決方案 Live555(C++)
流媒體平臺框架 EasyDarwin(C++)
實時流媒體播放服務器程序DarwinStreamingSrvr(C++)
流媒體實時傳輸開發包 jrtplib
多媒體處理工具 ffmpeg
多媒體編碼工具包Libav
Flash流媒體服務器 Red5(Java)
流媒體服務器 Open Streaming Server (Java)
FMS流媒體服務器(Adobe,收費的)
Wowza流媒體服務器(Java)
開源流媒體平臺FreeCast(Java)

商用系統
1.NTV Media Server G3
2.Flash Media Server5
3.Windows Media Server

Red5 服務器搭建
JDK自行安裝
下載Red5
https://github.com/Red5/red5-server/releases

http://www.red5.org/red5-server/

解壓到自己的一個能記住的文件夾中 eg:D\Red5

配置Red5相關參數
修改red5.properties配置文件..\conf\red5.properties

只需要配置HTTP 和RMTP節點的host和port即可 默認也行host配置成0.0.0.0 輸入局域網IP或者127.0.0.1都可以正常訪問

 

 

配置完成後,雙擊Red5目錄下的red5.bat即可啓動Red5服務器。
啓動完成後,輸入http://192.168.7.96:5080,出現畫面則表示成功。(如果不改配置文件,用http://localhost:5080即可)


視頻直播開始準備
下載demo
上圖可以看到install紅色的那行字。點擊進去。選擇OLFA 安裝

 

如果下載不成功請看這裏
確定webapps下面沒有oflaDemo文件夾。

下載地址鏈接: https://pan.baidu.com/s/1Qd0UggtEhBv5nbVxQGPSzQ 密碼: 4xqf

 

點擊進入後,可看到swplayer播放的本地視頻。視頻內容後面會說到。

 

直播和流媒體播放都要用到"oflaDemo",選擇後點擊"Install"安裝即可。
安裝完成後,在webapps下面出現oflaDemo文件夾。

設置信息發佈直播
進入發佈設置界面:http://localhost:port/demos/publisher.html    本地是http://localhost:5080/demos/publisher.html

查看Settings區域。選擇Video後在Device中選擇攝像頭,並點擊Start,出現視頻畫面(有可能會提示是否允許。選擇允許即可)

 

Server設置
回到Server畫面,在Location中輸入rtmp://localhost:1935/oflaDemo,地址與red5.properties中的rtmp協議的設置必須相同。
點擊Connect

右側出現NetConnection.Connect.Success ,說明連接服務器成功。

推送視頻流
切換到Video點擊Publish頁面中的Publish按鈕即可對外發布直播

點擊Publish頁面中的Publish按鈕即可對外發布直播。
View頁面就是觀看的直播,稍微有點延遲。
修改Name可以改變發佈的名稱。(相當於房間名)

 

查看視頻流
切換到Server點擊play即可看推送的視頻流

用自己的頁面觀看直播
1.需要jwplayer。爲了方便大家已經放在oflaDemo裏面。在上面的百度雲鏈接下載即可。

2.在webapps/oflaDemo下面建一個jwPlayer.html
(我使用了jwplayer來播放,下載地址:http://download.csdn.net/detail/sunroyi666/9668965
把jwplayer.js和player.swf放在同級目錄下)

修改相關內容 file的值是直播頁面的Name的值。streamer則爲Location裏面的URL

主要修改2個地方,streamer就是發佈頁面的rtmp的地址,file是發佈頁面中的Name。

<html>
<head>
<title>Red5 - OFLADemo</title>
<script type='text/javascript' src='jwplayer.js'></script>
</head>
<body>
<div id="player">
<script type='text/javascript'>
  jwplayer('player').setup({
    'flashplayer': 'player.swf',
    'file': '直播頁面的Name',
    'streamer': 'rtmp://自己服務的IP:1935/oflaDemo',
    'controlbar': 'bottom',
    'width': '848',
    'height': '360'
  });
</script>
</div>
</body>
</html>

 

使用瀏覽器觀看

輸入地址 http://localhost:port/oflaDemo/jwPalyer.html 即可查看

 

四. 流媒體播放
直播搞定以後,流媒體的視頻播放就簡單多了。
在oflaDemo下面的streams文件夾下,把需要的視頻文件放進去。(上傳功能可以自己做)

在jwPlayer.html中,把file改爲視頻文件名即可觀看。

用Red5流媒體播放還有一個優點在於,可以保證視頻的安全性。
客戶端無論是輸入http://192.168.7.96:5080/oflaDemo/(streams)/Avengers2.mp4
還是rtmp://192.168.7.96:1935/oflaDemo/(streams)/Avengers2.mp4
都無法直接下載視頻的源文件哦~
————————————————

參考鏈接:
https://blog.csdn.net/sunroyi666/article/details/52981639  (有OpenMeetings遠程視頻會議

https://blog.csdn.net/u010651369/article/details/80886676

OBS安裝:

接下來,我們研究一下推流的實現。推流的工具這裏我推薦兩個:OBS(Open Broadcaster Software)和VLC,以OBS爲例子,OBS下載地址:https://obsproject.com/選擇下載對應的版本。安裝完成後如下圖所示(當前的OBS版本爲20.0.1):

Red5之基於Red5的直播系統開發(二)

默認情況下,啓動OBS是黑屏的。我們在“來源”中點擊左下角的“+”,添加“顯示器捕獲”,就可以顯示當前的桌面,除此之外,還可以添加“音頻輸入捕獲”、“音頻輸出捕獲”等。

  點擊右下角的“設置”,界面如下圖所示:

Red5之基於Red5的直播系統開發(二)

我們先關注左邊欄的“流”設置,我們自定義流媒體服務器,URL爲:

rtmp://localhost/myOnline,與Red5的web端界面Locations一致,流名稱是自定義的,這裏設置值爲11111,可以任意取,如果有多人在推流,那麼這個流名稱不能重複。

當設置好後,點擊右下角的“確定”,回到OBS主界面。然後點擊右下角的“開始推流”,如下圖所示:

Red5之基於Red5的直播系統開發(二)

可以看到OBS在向Red5本地服務器推流,下面是推流的數據流。這裏就相當於是直播間的播主,當然也可以進行推流的錄製等,錄製的文件位置在“設置”的“輸出”中設置。

   推流的實現已經完成,那麼拉流呢?我們回到Red5的web端界面,將Names的值也設置爲11111,點擊connect,點擊play,可以看到Web端在同步播放OBS的視頻內容,就相當於直播一樣,完成了拉流的工作。

Red5之基於Red5的直播系統開發(二)

到這裏,Red5的基本推拉流工作已經可以實現了

再補充如下幾點吧。

  1.因爲RTMP是Red5最主要的協議和服務,該協議在視頻同步上是有延遲的,延遲大概在2~3秒左右。

  2.Red5是可以在手機移動端完成推流和拉流工作的,這裏推薦一款推拉流APP:易推流,

本人使用的是iphone手機,這個app可以直接在AppStore下載。手機端拉流的App還可以使用VLC,一樣效果很不錯。

     App打開的界面如下,在"直播地址"欄,添加自己的直播地址進行推流,然後在電腦端通過VLC拉流,當然你想用手機端進行拉流也可以。

Red5之基於Red5的直播系統開發(二)

 

---------------------------------------------------------------------------------------------

 

參考資料:

https://www.cnblogs.com/yanglily/p/6047130.html

http://www.zuidaima.com/blog/4130742917532672.htm

 

ffmpeg + RED5 RTSP轉換RTMP

 

在實際的項目開發中,需要網站平臺接入實時視頻流,實現遠程監控。使用海康的攝像機器;傳送的是rtsp格式的視頻流。之前採用flv網絡插件,但是chrome與ff升級之後,對vlc插件的支持不理想,於是想用ffmpeg的轉碼技術將rtsp碼流轉換成rtmp。

安裝ffmpeg,官網上下載的是免安裝版本,只要解壓到指定的文件夾就可以。然後在環境變量裏添加path的配置

 

PATH:/你的ffmpeg安裝目錄/bin

7、cmd打開命令行,輸入 ffmpeg -version 成功顯示版本信息,則表示安裝成功

 

ffmpeg -version

 

8、流媒體轉換器和流媒體的服務器都安裝好了,接下來就是轉轉轉啦。
在命令行裏輸入

ffmpeg -i  rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov  -f flv -r 25 -s 640x480 -ar 44100 rtmp://localhost/oflaDemo/hello
接着在red5目錄文件中的webapps\oflaDemo中index.html 文件,將jwplay的文件屬性更改成hello,訪問http://localhost:5080/oflaDemo/index.html,將會出現連接攝像頭的視頻信號。

紅框中更改成hello

 

注意:

1、oflademo文件夾是在installer界面安裝的demo程序
2、ffmpeg參數參考http://blog.csdn.net/leixiaohua1020/article/details/12751349
3、轉換成功後,明顯會有丟幀的情況,原因研究中


-----------------------------------------------------------------
參考鏈接:
https://www.jianshu.com/p/e3e90acfd41d
 

 

red5 :linux 

1,這個需要java的jdk,我是直接通過yum命令裝的

2,去github下載了red5

https://github.com/Red5/red5-server/releases

https://github.com/Red5/red5-server

講道理下載最新版的吧,我的jdk也是1.8的。(red5最好是1.0.8)

3,解壓,一般解壓目錄都是在usr/local/red5/樓下圖

4,設置爲可執行

cd /usr/local/red5  進入red5的目錄:

chmod +x *.sh  

5,安裝

red5.sh

由於這種執行方式不能關閉執行窗口  所以將其添加爲系統服務

6,編輯啓動腳本

vi /etc/init.d/red5

7,把下面寫進去,貌似都這樣寫的【這裏建議用xsell寫不然會造成windows多倆空格無法啓動red5】,

下面內容中的RED5_HOME根據自己的red5解壓目錄爲準,這裏是/usr/local/red5

#!/bin/bash  
# For RedHat and cousins:  
# chkconfig: 2345 85 85  
# description: Red5 flash streaming server  
# processname: red5  
# Created By: Sohail Riaz ([email protected])  
  
PROG=red5  
RED5_HOME=/usr/local/red5  
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

8,設置爲本地服務啓動【這裏你注意init.d路徑,是否有快捷方式啥的】

chmod +x /etc/rc.d/init.d/red5  
chkconfig --add red5  
chkconfig red5 on

9,red5用的端口是5080下行,1935上行,確認打開

10,啓動red5

/etc/init.d/red5 start 
/etc/init.d/red5 stop

11,在瀏覽器輸入

http://******:5080/    (注意***換成你的服務器ip)如果不能正常訪問,可以查看端口是否開啓,以及防火牆狀態。

在配合上面的OBS就可以了。。

-------------------------------

參考:

https://www.cnblogs.com/yanglily/p/6047130.html

https://blog.csdn.net/wozaiguyuan/article/details/53583470

 

ffepeg:linux

參考:https://blog.csdn.net/qq_38631503/article/details/80007128

https://blog.csdn.net/mydudu2005/article/details/84508962

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章