https://mingtrace.tistory.com/440
C#을 이용해서 IP Camera View 제작 환경
회사 업무 관련하여서 C#을 이용하여 IP Camera를 보는 프로그램을 작성하게 되었어요.
IP Camera의 RSTP Address를 사용하여 View 기능을 구현했어요.
사용 환경
1. IDE : Visual Studio Professional 2013
2. IP Camera : EVC-2MD24S
3. DLL : FFmpeg.AutoGen, OpenCvSharp
4. .NET Framework Version : 4.6.1
영상 처리를 해주는 OpenCvSharp와 영상 재생을 위해서 FFmpeg를 NuGet 패키지에서 다운로드하여 참조했어요.


EVC-2MD24S IP Camera RTSP Address 획득은 웹브라우저를 이용하여 카메라에 접속하여,
SETUP의 NETWORK->RTSP->ONVIF에서 RTSP ADDRESS의 SUB STREAM을 이용하였어요.
C#을 이용해서 IP Camera View 소스
Test가 목적이었기 때문에,
폼 디자인은 영상이 출력될 PictureBox와 영상의 시작을 알리는 Button만 넣었어요.

그리고, 별도의 예외처리는 하지 않았다는 점을 참고해주세요.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using OpenCvSharp;
using FFmpeg;
namespace Camera_OpenCV
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
VideoCapture camera;
private void button1_Click(object sender, EventArgs e)
{
string RSTPaddr = "rtsp://192.168.100.101/stream2";
camera = new VideoCapture(RSTPaddr);
using(Mat cameraImage = new Mat)
{
while(true)
{
if (!camera.Read(cameraImage))
{
Cv2.WaitKey();
}
if (cameraImage.Size().Width > 0 && cameraImage.Size().Height > 0)
{
Bitmap bitmap = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(cameraImage);
pictureBox1.Image = bitmap;
}
if(Cv2.WaitKey(1) >= 0)
break;
}
}
}
}
}
C#을 이용해서 IP Camera View 소스 간단 설명
프로그램에 대해서 간단히 설명을 드릴게요.
OpenCv의 VideoCapture를 사용하여 RTSP 주소 IP Camera 영상 정보 가져오는 부분이에요.
camera = new VideoCapture(RSTPaddr);
Mat를 사용하여 IP Camera 영상을 저장하는 부분이에요.
using(Mat cameraImage = new Mat())
IP Camera의 영상을 PictureBox에 그리는 부분이에요.
Bitmap bitmap = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(cameraImage);
pictureBox1.Image = bitmap;
C#을 이용해서 IP Camera View 프로그램 동작
Test 확인을 위하여 VideoLAN 프로그램 VLC 미디어 재생기를 설치했어요.
https://mingtrace.tistory.com/441
프로그램을 동작시켜 봤어요.

정상적으로 동작하는 것을 확인했어요.
VLC 미디어 재생기와 비교를 해봤어요.

영상이 스트림이 되는 것은 제가 작성한 프로그램이 반응 속도는 빨랐어요.
- 한 분에게 부탁하여, 잠시 지나가 보라고 했었어요.

VLC의 기능이 많아서 그렇지 않을까 생각됩니다.
IP 카메라의 RTSP 주소를 이용하여,
NuGet 패키지 OpenCV와 FFmpeg를 사용하여 스트리밍을 재생하는 프로그램을 제작해 보았어요^^
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 16 | [노트].net core 윈도우에서 코딩후, 리눅스계열에서 실행하기! | proin | 2020.11.13 | 1 |
| » | C# - OpenCV를 이용한 IP Camera View 프로그래밍 | proin | 2020.08.20 | 1 |
| 14 | How to display a progressbar in taskbar in C# | proin | 2020.07.28 | 1 |
| 13 | [C#] IPC (Inter-Process Communication) | proin | 2020.07.24 | 1 |
| 12 | [C#] MDI 폼에서 자식폼이 열어 있을 때 앞으로 보내기 | proin | 2020.04.21 | 1 |
| 11 | How to programmatically create firebird database? | proin | 2020.03.30 | 1 |
| 10 | C# SqLite 사용하기 - 3편 | proin | 2020.03.12 | 1 |
| 9 | C# SQLite 사용하기 - 2편 | proin | 2020.03.12 | 1 |
| 8 | C# SQLite 사용하기 - 1편 | proin | 2020.03.12 | 1 |
| 7 | C#으로 SQLite 다루기 | proin | 2020.03.12 | 1 |
| 6 | C# 셀레니움으로 구글 로그인 하기 | proin | 2020.03.12 | 1 |
| 5 | C#으로 크롤링 하기 - 다음사이트 자동로그인 기능 | proin | 2020.03.12 | 1 |
| 4 |
.NET Framework: 488. TCP 소켓 연결의 해제를 알 수 있는 방법
| proin | 2020.03.10 | 1 |
| 3 | C#을 이용하여 간단한 1:N 비동기 채팅 프로그램을 만들어보자! - 서버편 | proin | 2020.03.06 | 1 |
| 2 |
C#을 이용하여 간단한 1:1 비동기 채팅 프로그램을 만들어보자 - 클라이언트편
| proin | 2020.03.05 | 1 |
| 1 | C#을 이용하여 간단한 1:1 비동기 채팅 프로그램을 만들어보자 - 서버편 | proin | 2020.03.05 | 1 |