red5+obs+ffmpeg 推流实现单方直播 window +linux
red5? windows:
jdk :1.8? ?red5:1.0.8? (版本很重要。。)
一般來說,一個完整的流媒體服務系統(tǒng)需要三個部分組成:編碼器、流服務器和播放器。.
編碼器通過對內(nèi)容來源(如MP3文件或者麥克風輸入)進行編碼,并將編碼過的內(nèi)容發(fā)送到流服務器;流服務器再將它們發(fā)布到Internet,這樣客戶端的播放器只要連接到流服務器就可以進行在線播放了。
主流開源流媒體服務器有哪些?
流媒體解決方案 Live555(C++)
流媒體平臺框架 EasyDarwin(C++)
實時流媒體播放服務器程序DarwinStreamingSrvr(C++)
流媒體實時傳輸開發(fā)包 jrtplib
多媒體處理工具 ffmpeg
多媒體編碼工具包Libav
Flash流媒體服務器 Red5(Java)
流媒體服務器 Open Streaming Server (Java)
FMS流媒體服務器(Adobe,收費的)
Wowza流媒體服務器(Java)
開源流媒體平臺FreeCast(Java)
商用系統(tǒng)
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相關參數(shù)
修改red5.properties配置文件..\conf\red5.properties
只需要配置HTTP 和RMTP節(jié)點的host和port即可 默認也行host配置成0.0.0.0 輸入局域網(wǎng)IP或者127.0.0.1都可以正常訪問
?
?
配置完成后,雙擊Red5目錄下的red5.bat即可啟動Red5服務器。
啟動完成后,輸入http://192.168.7.96:5080,出現(xiàn)畫面則表示成功。(如果不改配置文件,用http://localhost:5080即可)
視頻直播開始準備
下載demo
上圖可以看到install紅色的那行字。點擊進去。選擇OLFA 安裝
?
如果下載不成功請看這里
確定webapps下面沒有oflaDemo文件夾。
下載地址鏈接: https://pan.baidu.com/s/1Qd0UggtEhBv5nbVxQGPSzQ 密碼: 4xqf
?
點擊進入后,可看到swplayer播放的本地視頻。視頻內(nèi)容后面會說到。
?
直播和流媒體播放都要用到"oflaDemo",選擇后點擊"Install"安裝即可。
安裝完成后,在webapps下面出現(xiàn)oflaDemo文件夾。
設置信息發(fā)布直播
進入發(fā)布設置界面:http://localhost:port/demos/publisher.html? ? 本地是http://localhost:5080/demos/publisher.html
查看Settings區(qū)域。選擇Video后在Device中選擇攝像頭,并點擊Start,出現(xiàn)視頻畫面(有可能會提示是否允許。選擇允許即可)
?
Server設置
回到Server畫面,在Location中輸入rtmp://localhost:1935/oflaDemo,地址與red5.properties中的rtmp協(xié)議的設置必須相同。
點擊Connect
右側(cè)出現(xiàn)NetConnection.Connect.Success ,說明連接服務器成功。
推送視頻流
切換到Video點擊Publish頁面中的Publish按鈕即可對外發(fā)布直播
點擊Publish頁面中的Publish按鈕即可對外發(fā)布直播。
View頁面就是觀看的直播,稍微有點延遲。
修改Name可以改變發(fā)布的名稱。(相當于房間名)
?
查看視頻流
切換到Server點擊play即可看推送的視頻流
用自己的頁面觀看直播
1.需要jwplayer。為了方便大家已經(jīng)放在oflaDemo里面。在上面的百度云鏈接下載即可。
2.在webapps/oflaDemo下面建一個jwPlayer.html
(我使用了jwplayer來播放,下載地址:http://download.csdn.net/detail/sunroyi666/9668965
把jwplayer.js和player.swf放在同級目錄下)
修改相關內(nèi)容 file的值是直播頁面的Name的值。streamer則為Location里面的URL
主要修改2個地方,streamer就是發(fā)布頁面的rtmp的地址,file是發(fā)布頁面中的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流媒體播放還有一個優(yōu)點在于,可以保證視頻的安全性。
客戶端無論是輸入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安裝:
接下來,我們研究一下推流的實現(xiàn)。推流的工具這里我推薦兩個: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本地服務器推流,下面是推流的數(shù)據(jù)流。這里就相當于是直播間的播主,當然也可以進行推流的錄制等,錄制的文件位置在“設置”的“輸出”中設置。
?? 推流的實現(xiàn)已經(jīng)完成,那么拉流呢?我們回到Red5的web端界面,將Names的值也設置為11111,點擊connect,點擊play,可以看到Web端在同步播放OBS的視頻內(nèi)容,就相當于直播一樣,完成了拉流的工作。
到這里,Red5的基本推拉流工作已經(jīng)可以實現(xiàn)了
再補充如下幾點吧。
? 1.因為RTMP是Red5最主要的協(xié)議和服務,該協(xié)議在視頻同步上是有延遲的,延遲大概在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轉(zhuǎn)換RTMP
?
在實際的項目開發(fā)中,需要網(wǎng)站平臺接入實時視頻流,實現(xiàn)遠程監(jiān)控。使用海康的攝像機器;傳送的是rtsp格式的視頻流。之前采用flv網(wǎng)絡插件,但是chrome與ff升級之后,對vlc插件的支持不理想,于是想用ffmpeg的轉(zhuǎn)碼技術將rtsp碼流轉(zhuǎn)換成rtmp。
安裝ffmpeg,官網(wǎng)上下載的是免安裝版本,只要解壓到指定的文件夾就可以。然后在環(huán)境變量里添加path的配置
?
PATH:/你的ffmpeg安裝目錄/bin7、cmd打開命令行,輸入 ffmpeg -version 成功顯示版本信息,則表示安裝成功
?
ffmpeg -version
?
8、流媒體轉(zhuǎn)換器和流媒體的服務器都安裝好了,接下來就是轉(zhuǎn)轉(zhuǎn)轉(zhuǎn)啦。
在命令行里輸入
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,將會出現(xiàn)連接攝像頭的視頻信號。
紅框中更改成hello
?
注意:
1、oflademo文件夾是在installer界面安裝的demo程序
2、ffmpeg參數(shù)參考http://blog.csdn.net/leixiaohua1020/article/details/12751349
3、轉(zhuǎn)換成功后,明顯會有丟幀的情況,原因研究中
-----------------------------------------------------------------
參考鏈接:
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,設置為可執(zhí)行
cd?/usr/local/red5? 進入red5的目錄:
chmod?+x?*.sh??
5,安裝
red5.sh
由于這種執(zhí)行方式不能關閉執(zhí)行窗口? 所以將其添加為系統(tǒng)服務
6,編輯啟動腳本
vi /etc/init.d/red57,把下面寫進去,貌似都這樣寫的【這里建議用xsell寫不然會造成windows多倆空格無法啟動red5】,
下面內(nèi)容中的RED5_HOME根據(jù)自己的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)如果不能正常訪問,可以查看端口是否開啟,以及防火墻狀態(tài)。
在配合上面的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
總結(jié)
以上是生活随笔為你收集整理的red5+obs+ffmpeg 推流实现单方直播 window +linux的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手机app开发可选技术——React N
- 下一篇: 真相,为什么大厂一边裁员,一边招人?