【4OpenCV】OpenCV和RTSP的綜合研究
一、RTSP是什麼?用來幹什麼?
RTSP(Real Time Streaming Protocol),RFC2326,實時流傳輸協議,是TCP/IP協議體系中的一個應用層協議,由哥倫比亞大學、網景和RealNetworks公司提交的IETF RFC標準。該協議定義了一對多應用程式如何有效地通過IP網路傳送多媒體資料。RTSP在體系結構上位於RTP和RTCP之上,它使用TCP或UDP完成資料傳輸。HTTP與RTSP相比,HTTP請求由客戶機發出,伺服器作出響應;使用RTSP時,客戶機和伺服器都可以發出請求,即RTSP可以是雙向的。RTSP是用來控制聲音或影像的多媒體串流協議,並允許同時多個串流需求控制,傳輸時所用的網路通訊協定並不在其定義的範圍內,伺服器端可以自行選擇使用TCP或UDP來傳送串流內容,它的語法和運作跟HTTP 1.1類似,但並不特別強調時間同步,所以比較能容忍網路延遲
可以看出,RTSP作為一個應用層協議,主要是因為它的網路適應性、忍耐性,使得在電視電話會議,特別是在現在網路直播上面得到非常廣泛應用。
二、影象處理專案需要如何使用RTSP?
對於影象處理程式來說,RTSP作為一種視訊格式,主要是作為影象處理演算法的輸入
這個時候可能會遇到幾個問題,首先是設定的問題。在基於DShow(非常巨大而且強大)的傳統接入方式下,我們可以直接對攝像頭的輸入進行設定(基於filiter),而對於RTSP來說,可能是缺少統一的方法,而必須依據廠商自己的工具(因為它有一個作業系統在裡面)。
而對於如何附件到生成結果上來,又相當於編寫RTSP服務,從而必須對它有比較深入的瞭解。
三、OpenCV呼叫RTSP的幾種方式。
1、OpenCV自己基於FFMPEG集成了呼叫,這是最快的方式;
#include "stdafx.h"
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
VideoCapturecap;
cap.open("rtsp://0.0.0.1/stream1");//呵呵,就這一句關鍵
MatCamera_CImg;
MatCamera_GImg;
cap.set(CV_CAP_PROP_FRAME_HEIGHT,768);
cap.set(CV_CAP_PROP_FRAME_WIDTH,1024);
if (!cap.isOpened())
return 1024;
while (1)
{
cap>> Camera_CImg;
if(Camera_CImg.empty())
break;
cvtColor(Camera_CImg,Camera_GImg, CV_RGB2GRAY);
imshow("input", Camera_CImg);
if (cvWaitKey(10) == 'q')
break;
}
system("pause");
return 0;
}
關於那個"呵呵“一句,我估計實際使用的時候,可能還有一些新的問題。同時我也非常認為,這種預設的方法,總是不專業。
2、基於DShow,構建FILTER(沒有深入研究)
開源的實現了RTSP協議的Directshow Filter比較少,一個開源的Filter:RTSP Renderer Filter,完成了一個小型RTSP 伺服器的功能。
https://blog.csdn.net/toshiba689/article/details/79410852
3、仿製專門的RTSP播放程式
這個地方,我有兩個推薦。
一個是 EasyPlayer-RTSP-Win forked from EasyDSS/EasyPlayer-RTSP-Win(https://github.com/jsxyhelu/EasyPlayer-RTSP-Win)
An elegant, simple, fast windows RTSP Player.EasyPlayer support RTSP(RTP over TCP/UDP),video support H.264/H.265,audio support G.711/G.726/AAC!EasyPlayer RTSP是一款精煉、高效、穩定的RTSP流媒體播放器,視訊支援H.264/H.265,音訊支援G.711/G.726/AAC,支援RTP over UDP/TCP兩種模式! http://www.easydarwin.org/
應該說全部中文,vs程式,而且關鍵是非常對口。下一步我將基於它來進一步研究。
一個是非常常見的VLC(https://github.com/videolan/vlc)
但是這個比較複雜,整合起來比較困難。當作軟體使用倒是不錯。
四、小結和擴充套件
隨著技術和需求的不斷髮展,對於視訊的呼叫越來越迫切。RTSP是其中一個非常重要的知識節點。認真研究,一定能夠有所收穫。
感謝閱讀至此,希望有所收穫。
來自為知筆記(Wiz)