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):
默認情況下,啟動OBS是黑屏的。我們在“來源”中點擊左下角的“+”,添加“顯示器捕獲”,就可以顯示當前的桌面,除此之外,還可以添加“音頻輸入捕獲”、“音頻輸出捕獲”等。
? 點擊右下角的“設置”,界面如下圖所示:
我們先關注左邊欄的“流”設置,我們自定義流媒體服務器,URL為:
rtmp://localhost/myOnline,與Red5的web端界面Locations一致,流名稱是自定義的,這里設置值為11111,可以任意取,如果有多人在推流,那么這個流名稱不能重復。
當設置好后,點擊右下角的“確定”,回到OBS主界面。然后點擊右下角的“開始推流”,如下圖所示:
可以看到OBS在向Red5本地服務器推流,下面是推流的數據流。這里就相當于是直播間的播主,當然也可以進行推流的錄制等,錄制的文件位置在“設置”的“輸出”中設置。
?? 推流的實現已經完成,那么拉流呢?我們回到Red5的web端界面,將Names的值也設置為11111,點擊connect,點擊play,可以看到Web端在同步播放OBS的視頻內容,就相當于直播一樣,完成了拉流的工作。
到這里,Red5的基本推拉流工作已經可以實現了
再補充如下幾點吧。
? 1.因為RTMP是Red5最主要的協議和服務,該協議在視頻同步上是有延遲的,延遲大概在2~3秒左右。
? 2.Red5是可以在手機移動端完成推流和拉流工作的,這里推薦一款推拉流APP:易推流,
本人使用的是iphone手機,這個app可以直接在AppStore下載。手機端拉流的App還可以使用VLC,一樣效果很不錯。
???? App打開的界面如下,在"直播地址"欄,添加自己的直播地址進行推流,然后在電腦端通過VLC拉流,當然你想用手機端進行拉流也可以。
?
---------------------------------------------------------------------------------------------
?
參考資料:
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安裝目錄/bin7、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/red57,把下面寫進去,貌似都這樣寫的【這里建議用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 (sohaileo@gmail.com) 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 $RETVAL8,設置為本地服務啟動【這里你注意init.d路徑,是否有快捷方式啥的】
chmod +x /etc/rc.d/init.d/red5 chkconfig --add red5 chkconfig red5 on9,red5用的端口是5080下行,1935上行,確認打開
10,啟動red5
/etc/init.d/red5 start /etc/init.d/red5 stop11,在瀏覽器輸入
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
總結
以上是生活随笔為你收集整理的red5+obs+ffmpeg 推流实现单方直播 window +linux的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手机app开发可选技术——React N
- 下一篇: 真相,为什么大厂一边裁员,一边招人?