0
두 개의 웹캠에서 찍은 결합 된 비디오 스트림을 opencv에서 처리 한 후 (두 프레임 결합) 안드로이드 응용 프로그램으로 스트리밍하려고합니다.비디오 RTSP를 사용하여 Opencv에서 처리 한 후 PC에서 Android로 스트리밍
여기 RTSP를 사용하여 opencv에서 Android로 비디오 스트림을 보내려고합니다 (gstreamer 파이프 라인 사용).
그러나 클라이언트 (파일 이름은 live.sdp)로 .sdp 파일 구성을 보내는 방법에 갇혀 있습니다. 그리고 여기까지 제가 사용한 코드가 있습니다. 네트워크 내부
vlc live.sdp
하지만를 사용하여 내가 로컬 폴더 안에 VLC에서 스트림을 재생할 수 있습니다
v=0
m=video 5000 RTP/AVP 96
c=IN IP4 localhost
a=rtpmap:96 MP2T/90000
//basic
#include <iostream>
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
//opencv libraries
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/opencv.hpp"
using namespace cv;
using namespace std;
int main(int argc,char **argv){
Mat im1;
Mat im2;
VideoCapture cap1(1);
VideoCapture cap2(2);
VideoWriter video;
video.open("appsrc ! videoconvert ! x264enc noise-reduction=10000 tune=zerolatency byte-stream=true threads=4 ! mpegtsmux ! rtpmp2tpay send-config=true config-interval=10 pt=96 ! udpsink host=localhost port=5000 -v"
, 0, (double)20,Size(1280, 480), true);
if(video.isOpened()){
cout << "Video Writer is opened!"<<endl;
}else{
cout << "Video Writer is Closed!"<<endl;
return -1;
}
while(1){
cap1.grab();
cap2.grab();
bool bSuccess1 = cap1.read(im2);
bool bSuccess2 = cap2.read(im1);
Size sz1 = im1.size();
Size sz2 = im2.size();
Mat im3(sz1.height, sz1.width+sz2.width, CV_8UC3);
Mat left(im3, Rect(0, 0, sz1.width, sz1.height));
im1.copyTo(left);
Mat right(im3, Rect(sz1.width, 0, sz2.width, sz2.height));
im2.copyTo(right);
video << im3;
//imshow("im3", im3);
if(waitKey(10) == 27){
break;
}
}
cap1.release();
cap2.release();
video.release();
return 0;
}
그리고 .sdp 파일 구성
, , 사용하여 ,vlc rtsp://localhost:5000/live.sdp