vlc搭建rtsp伺服器視頻教程
㈠ VLC播放器搭建伺服器(TCP和UDP方式)
伺服器操作流程
客戶端操作:
伺服器操作:
客戶端操作:
既有基於TCP的RTP,也有基於UDP的RTP,但抓包發現,VLC的RTP是基於UDP的。
操作模式與UDP一致。
VLC的http方式搭建的流媒體伺服器是用TCP方式進行數據傳輸的,操作方式與RTSP一致。
㈡ rtsp流瀏覽器播放方案
rtsp流在主流瀏覽器並不支持直接播放。比如大華的視頻流:rtsp://admin:123456@
192.168.10.129/cam/realmonitor?channel=1&subtype=0,用vlc可以直接播放。但在瀏覽器會報ERR_UNKNOWN_URL_SCHEME。那如何在瀏覽器中播放呢嘩備。
以下列出幾種方案。
1、安裝插件(chrome最新版基本都不支持)
類如:kurento,vlc插件(谷歌瀏覽器版本41以下),vgx插件(不支持高版本,chrome72.0版本可用)等。
2、安裝軟體(中間件,基本都付費)
類如:Appemit(調用vlc插件播放rtsp),可以免安裝的,目前只能windows,免費版會有提示。
猿大師中間件(底層調用VLC的ActiveX控制項,實現在主流瀏覽器網頁中內嵌播放多路RTSP的實時視頻流),中間件收費的。
PluginOK(牛插亂行毀)中間件。底層調用ActiveX控制項VlcOcx.dll。(商業用途需付費使用)
3、伺服器拉流轉發及協議轉換
示意圖如下所示:
推流--------------伺服器轉發--------------拉流
方法一覽:
a,vlc軟體串流到http協議 ,網頁顯示幾個視頻需啟動幾個vlc,只適合應急場景。
b,html5 + websocket_rtsp_proxy 實現視頻流直播 ,基於MSE(Media Source Extensions,W3C),擴展H5的功能。
步驟:伺服器安裝streamedian伺服器,客戶端通過video標簽播放。
原型圖:
價格:
c.基於nginx的rsmp轉發
基於nginx實現rtmp轉化,用flash實現播放。由於flash目前大多瀏覽器默認禁用,不推薦此方式。
步驟:安裝ffmpeg工具,安裝nginx。
另外nginx-rtmp-mole也支持HLS協議,可以搭建基於hls的直播伺服器。
d.rtsp轉hls播放帶猛,通過ffmpeg轉碼
步驟:安裝ffmpeg工具,ffmpeg轉碼。
形如:
ffmpeg -i "rtsp://admin:[email protected]/cam/realmonitor?channel=1&subtype=0" -c -f hls -hls_time 2.0 -hls_list_size 0 -hls_wrap 15 "D:/hls/test.m3u8"
缺點是直播流延時很大,對實時要求比較高的不滿足要求。
案例:基於EasyDarwin拾建轉碼伺服器。參考地址:https://blog.csdn.net/jyt0551/article/details/84189498
通過存儲的m3u8去讀取。
e.websocket代理推送,FFMPEG轉碼
此方法與a,b類似。但更實用。
以下提供兩種方案:
(1)Gin+WebSocket+FFMPEG實現rtsp轉碼,參考:https://juejin.cn/post/6844904024072798216
通過FFMPEG把rstp轉成http,ginrtsp作為轉發伺服器,但需要自己寫相應介面,需要了解go語言。
(2)node + ffmpeg + websocket + flv.js,參考:https://juejin.cn/post/6908641550046068744
步驟:在node服務中建立websocket;通過fluent-ffmpeg轉碼,將RTSP 流轉為flv格式;通過flv.js連接websocket,並對獲取的flv格式視頻數據進行渲染播放。
import WebSocket from 'ws'import webSocketStream from 'websocket-stream/stream'import ffmpeg from 'fluent-ffmpeg'// 建立WebSocket服務const wss = new WebSocket.Server({ port: 8888, perMessageDeflate: false })// 監聽連接wss.on('connection', handleConnection)// 連接時觸發事件function handleConnection (ws, req) { // 獲取前端請求的流地址(前端websocket連接時後面帶上流地址) const url = req.url.slice(1) // 傳入連接的ws客戶端 實例化一個流 const stream = webSocketStream(ws, { binary: true }) // 通過ffmpeg命令 對實時流進行格式轉換 輸出flv格式 const ffmpegCommand = ffmpeg(url) .addInputOption('-analyzeration', '100000', '-max_delay', '1000000') .on('start', function () { console.log('Stream started.') }) .on('codecData', function () { console.log('Stream codecData.') }) .on('error', function (err) { console.log('An error occured: ', err.message) stream.end() }) .on('end', function () { console.log('Stream end!') stream.end() }) .outputFormat('flv').videoCodec('').noAudio() stream.on('close', function () { ffmpegCommand.kill('SIGKILL') }) try { // 執行命令 傳輸到實例流中返回給客戶端 ffmpegCommand.pipe(stream) } catch (error) { console.log(error) }}
優點全部基於js。前端即可搞定。
參考:https://www.hu.com/question/29973696
㈢ linux嫻佸獟浣撴湇鍔″櫒linux嫻佸獟浣撴湇鍔″櫒鎼寤
嫻佸獟浣撶$悊杞浠訛紵
涓鐜扮戞妧嫻佸獟浣撶$悊緋葷粺杞浠舵槸涓涓娑電洊嫻佸獟浣撴湇鍔″櫒綆$悊銆佹暟鎹搴撴湇鍔″櫒綆$悊浠ュ強web鏈嶅姟鍣ㄧ$悊鍔熻兘鐨勭患綆$悊鍚堢郴緇熻蔣浠躲傝ョ郴緇熷彲渚挎嵎鐨勫規搗閲忚嗛戣繘琛屾坊鍔犲垹闄よ漿鍙戝瓨鍌ㄥ洖鏀捐漿鍙戠瓑綆$悊錛屽彲渚挎嵎鍦板疄鐜板崟瑙嗛戞簮鐨勬搗閲忕駭騫惰匡紝鍙瀹炵幇瑙嗛戝湪web緗戦〉涓婄殑鍛堢幇銆
鏀鎸乫lv銆乫lash瑙嗛戞牸寮忥紱鏀鎸丷TMP嫻佸獟浣撳崗璁
B/S鏋舵瀯
閫傚簲鏈嶅姟鍣╓indows鎿嶄綔緋葷粺(鍙瀹氬埗Linux鎿嶄綔緋葷粺鐗堟湰錛
linuxmplayer鍛戒護琛岃繍琛岃嗛戣緭鍑哄埌鎸囧畾灞忓箷錛
涓嬭澆瀹夎呮墦寮鎾鏀1銆佺櫥褰昅player鍜宭ive鐨勫畼鏂圭綉絝欙紝涓嬭澆Mplayer鐨勬簮浠g爜銆傚拰鐩稿叧濯掍綋鏍煎紡鐨勮В鐮佸櫒錛屼互鍙婃敮鎸丷TSP嫻佸獟浣撴牸寮忕殑Mplayer鎻掍歡銆
2銆侀栧厛瑙e帇緙╁厛鍓嶄笅杞界殑Mplayer-1.0pre3.tar.bz2鍘嬬緝鍖3銆佸畨瑁匨player榪欓噷鎵鏈夌殑杞浠跺寘閮戒笅杞藉埌鐩褰/usr/local/錛屽叿浣撶洰褰曟牴鎹鑷宸辨儏鍐靛畾涔夈侻Player鏄涓嬈懼紑婧愬氬獟浣撴挱鏀懼櫒錛屼互GNU閫氱敤鍏鍏辮稿彲璇佸彂甯冦傛ゆ捐蔣浠跺彲鍦ㄥ悇涓繪祦浣滀笟緋葷粺浣跨敤錛屼緥濡侺inux鍜屽叾浠栫被Unix緋葷粺銆佸井杞鐨勮嗙獥緋葷粺鍙婅嫻鏋滅數鑴戠殑MacOSX緋葷粺銆侻Player鏄寤哄熀浜庡懡浠よ岀晫闈錛屽湪鍚勪綔涓氱郴緇熷彲閫夋嫨瀹夎呬笉鍚岀殑鍥懼艦鐣岄潰銆
linuxlive555嫻佸獟浣撴庝箞鎾鏀撅紵
錛1錛夊厛涓嬭澆live555鐨勬簮鐮佸傦細live.2011.06.14a.tar.gz錛2錛夎В鍘嬫簮鐮乼ar-zxvflive.2011.06.14a.tar.gz錛3錛塩dlive錛4錛./genMakefileslinux-gdb錛5錛塵ake緇忚繃浠ヤ笂姝ラょ敓鎴愮殑live555MediaServer鍙浠ョ敤浜巊db璋冭瘯錛屽傛灉瑕佷嬌婧愪唬鐮佷腑鐨凞EBUG瀹忔湁鏁堬紝榪橀渶瑕佷慨鏀筶ive/config.linux-gdb鏂囦歡錛屽湪COMPILE_OPTS涓琛屼腑娣誨姞-DDEBUG鍗沖彲銆
㈣ 記:rtmp,rtsp,http視頻流播放
rtmp的視頻流使用video-js插件即可直接播放。
rtsp的視頻流無法直接櫻族在瀏覽器端播放,http的視頻流工作中需要播放格式為mjpeg的視頻流,所以,也無法直接播放。
通過使用插件vlc可以使以上兩類視頻流直接播放,即在電腦上安裝vlc插件,播放視頻時打開該插件,並且播放好友時瀏覽器版本不可使用新版本的,我使用的是chrom 30.0可以正常播放這兩類視頻。
如果有用戶名密碼,可以在協議後方加入。
但由於使用插件及瀏覽器版本限制,這種方式並不是首選,只能用作備用。
rtsp視頻流播放可以依據下方鏈接, 搭建nginx伺服器 ,將rtsp流轉成rtmp流脊襪弊後進行播放。
㈤ vlc怎麼播放rtsp伺服器上的媒體
打開「媒體——流」選項
點擊「添加」按鈕選擇流媒體文件,然後點擊「串流」按鈕
點擊「下一個」後,在「目標設置」界面選擇「RTSP」,然後點擊添加 + 按鈕
填上目標ip地址,並在「轉碼選項」中選擇相應的編碼類型(這個視情況而定),目標IP地址就是PC機器本機的IP地址
客戶端, 點擊「媒體——打開網路串流」,在彈出的框中輸入「rtsp://192.168.1.2:1234/tcp1」,點擊「播放」按鈕即可。