老闆提了一個需求,想讓網頁上播放景區監控的畫面,估計是想讓游客達到未臨其地,已知其境的狀態吧。 說這個之前,還是先說一下什麼是rtsp協議吧。 RTSP(Real Time Streaming Protocol),實時流傳輸協議,是TCP/IP協議體系中的一個應用層協議,由哥倫比亞大學、網景和Rea ...
老闆提了一個需求,想讓網頁上播放景區監控的畫面,估計是想讓游客達到未臨其地,已知其境的狀態吧。
說這個之前,還是先說一下什麼是rtsp協議吧。
RTSP(Real Time Streaming Protocol),實時流傳輸協議,是TCP/IP協議體系中的一個應用層協議,由哥倫比亞大學、網景和RealNetworks公司提交的IETF RFC標準。該協議定義了一對多應用程式如何有效地通過IP網路傳送多媒體數據。RTSP在體繫結構上位於RTP和RTCP之上,它使用TCP或RTP完成數據傳輸。HTTP與RTSP相比,HTTP傳送HTML,而RTP傳送的是多媒體數據。HTTP請求由客戶機發出,伺服器作出響應;使用RTSP時,客戶機和伺服器都可以發出請求,即RTSP可以是雙向的。(管他說的啥,反正就是攝像頭的協議,網頁不能直接播)。
跟後臺研究了幾天,決定的實現方式是:nginx搭的伺服器,ffmpeg轉碼,jwplayer播放。(未知的時候像讀天書,真要瞭解了,感覺也沒多難)。
什麼都不說了,捲起袖子玩玩吧。先搞個ffmpeg、nginx和jwplay。
1.先把nginx開了。
conf里我用的是這兩個埠,
1935不是http,但8080的www是呀, 先放個本地的mp4看看有沒有問題。
2再說說ffmpeg.
FFmpeg是一套可以用來記錄、轉換數字音頻、視頻,並能將其轉化為流的開源電腦程式。在這裡我只用到了它的視屏格式轉換功能,將rtsp協議的視頻流轉成rtmp(監控本身是rtsp協議,現在這個方案雖然用了jwplay,但也只是支持rtmp,因此要用ffmpeg轉碼)
舉個例子:
假如海康攝像頭的監控地址為(rtsp://admin:[email protected]/h264/ch1/main/av_stream)(帳戶,密碼,ip,埠,.....)
如圖就是地址不對導致的授權失敗。 話不多說,讓我們開了ffmpeg吧。 然後再轉一下rtmp 如果成功了會一直轉,不停歇: 至此,ffmpeg就先這樣吧 3 讓我們開了jwplayer key值一定要有,這是我以前覺的一切都沒錯,js也引了,可還是實現不了播放的一個原因。 jwplayer雖然是國外的還是很不錯的,可以自定義直播封面,插播廣告等,可惜有的功能要花錢。 最後刷下local, ok,海康的攝像頭再也不需要海康的軟體才能看直播了。 其實,實踐過程中還出過一些其它錯誤,時間拖的太長,我也記不清了。 一開始是想用websocket直接拿過來video直接播放rtsp的,由於後臺說的某些原因,就改用這個方案了。 我現在還是想用websocket,有時間了再看下吧。