Last updated: 2026๋ 1์
Video Capture SDK .NET vs Medialooks MFormats SDK
ํ์ดํ๋ผ์ธ ์์ง vs ํ๋ ์ ๊ธฐ๋ฐ ์บก์ฒ ๋น๊ต
VisioForge Video Capture SDK .NET๊ณผ Medialooks MFormats SDK ์ค ์ ํํ๋ ๊ฒ์ ๊ทผ๋ณธ์ ์ผ๋ก ๋ค๋ฅธ ๋ ๊ฐ์ง ์ํคํ ์ฒ ๋ชจ๋ธ ๊ฐ์ ๊ฒฐ์ ์ ๋๋ค. Video Capture SDK๋ ์์ค, ์ฒ๋ฆฌ ๋ฐ ์ถ๋ ฅ์ ์ ์ธ์ ์ผ๋ก ๊ตฌ์ฑํ๋ ํ์ดํ๋ผ์ธ ๊ธฐ๋ฐ ์์ง์ ์ฌ์ฉํ๊ณ , MFormats๋ ๊ฐ ํ๋ ์์ ์๋์ผ๋ก ๊ฐ์ ธ์ ๋ผ์ฐํ ํ๋ ํ๋ ์ ๊ธฐ๋ฐ ๊ทธ๋ฉ-ํ๋ก์ธ์ค-์ถ๋ ฅ ๋ฃจํ๋ฅผ ๋ฐ๋ฆ ๋๋ค. ์ด ๊ฐ์ด๋์์๋ ์ํคํ ์ฒ, ๊ธฐ๋ฅ, ํ๋ซํผ ์ง์, ๊ฐ๊ฒฉ ๋ฐ ์ค์ ์ฝ๋๋ฅผ ๋น๊ตํ์ฌ ํ๋ก์ ํธ์ ์ ํฉํ ์ ํ์ ํ ์ ์๋๋ก ํฉ๋๋ค.
์์ฝ
| ์ธก๋ฉด | Video Capture SDK .NET | MFormats SDK |
|---|---|---|
| ์ํคํ ์ฒ | ๋์ผ ์์ง: ๋ค์ดํฐ๋ธ DirectShow/Media Foundation + ๋ด์ฅ FFmpeg ํ์ดํ๋ผ์ธ | COM ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ํ๋ ์ ๊ธฐ๋ฐ ๊ทธ๋ฉ-ํ๋ก์ธ์ค-์ถ๋ ฅ ๋ฃจํ |
| ํ๋ซํผ ์ง์ | Windows, macOS, Linux, Android, iOS (5๊ฐ ํ๋ซํผ) | Windows๋ง ์ง์ |
| ๊ฐ๊ฒฉ | ์ฐ 250-500 EUR (๊ตฌ๋ ) ๋๋ 1,500 EUR ํ/์๊ตฌ ๋ผ์ด์ ์ค | ~4,508๋ฌ๋ฌ/๊ฐ๋ฐ์ยท๋ (๊ตฌ๋ ํ์) |
| ์ต์ ์ฉ๋ | ํฌ๋ก์คํ๋ซํผ ์บก์ฒ ์ฑ, ๋ค์ค ์ถ๋ ฅ ํ์ดํ๋ผ์ธ, ๋น๋์ค ํจ๊ณผ, ๊ฐ์ง | ๋ฉํฐ๋ฒค๋ SDI ๋ฐฉ์ก, HTML5 CG ์ค๋ฒ๋ ์ด, ์ฌ์๋ชฉ๋ก/ํ๋ ์ด์์ ์ํฌํ๋ก |
| SDI ํ๋์จ์ด | Blackmagic DeckLink ์ง์ | Blackmagic, AJA, Bluefish444, Deltacast ๋ฉํฐ๋ฒค๋ SDI |
| UI ํ๋ ์์ํฌ | WinForms, WPF, MAUI, Avalonia, Uno, Console, Blazor | WinForms, WPF, Console |
| ๋ผ์ด์ ์ค ๋ชจ๋ธ | ์๊ตฌ ๋๋ ์ฐ๊ฐ ๊ตฌ๋ ; ๋ง๋ฃ ํ์๋ ์๋ | ์ฐ๊ฐ ๊ตฌ๋ ๋ง; ๊ตฌ๋ ๋ง๋ฃ ์ ์ํฐ๋งํฌ ์ถ๊ฐ |
| ์ง์ | ์ ์ฉ ํฐ์ผ ์์คํ , ์ฐ์ SLA | ์ด๋ฉ์ผ ์ง์, ํฌ๋ผ |
์ํคํ ์ฒ ์ฌ์ธต ๋ถ์
Video Capture SDK .NET ์ํคํ ์ฒ
Video Capture SDK๋ ํ์ดํ๋ผ์ธ ๊ธฐ๋ฐ ์ค๊ณ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์์ค, ์ฒ๋ฆฌ ๋จ๊ณ ๋ฐ ์ถ๋ ฅ์ ์ ์ธ์ ์ผ๋ก ๊ตฌ์ฑํฉ๋๋ค. ์์ง์ ๋ด๋ถ ํํฐ ๊ทธ๋ํ๋ฅผ ์๋์ผ๋ก ์กฐ๋ฆฝํ๋ฉฐ ์ค๋ ๋ฉ, ๋๊ธฐํ ๋ฐ ๋ฒํผ ๊ด๋ฆฌ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ๋์ผ ์์ง์ ๋ค์ดํฐ๋ธ ์ฅ์น ์ก์ธ์ค๋ฅผ ์ํ DirectShow/Media Foundation๊ณผ ๊ณ ๊ธ ์ฝ๋ฑ ๋ฐ IP ์นด๋ฉ๋ผ ์์ง์ ์ํ ๋ด์ฅ FFmpeg ํ์ดํ๋ผ์ธ์ ๋ํํฉ๋๋ค.
- โถ์ ์ธ์ ํ์ดํ๋ผ์ธ ๊ตฌ์ฑ: ์์ฑ ์ค์ , StartAsync() ํธ์ถ
- โถ๋์ผ ์์ง: ๋ค์ดํฐ๋ธ OS ์บก์ฒ API + ๋ด์ฅ FFmpeg
- โถDirect3D / OpenGL ๋ ๋๋ฌ๋ฅผ ํตํ GPU ๊ฐ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
- โถ.NET async/await ์ง์์ ํตํ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ
- โถ์๋ ์ค๋ ๋ ๊ด๋ฆฌ๋ฅผ ํตํ ๋จ์ผ ํ๋ก์ธ์ค ๋ชจ๋ธ
- โถํ๋์ ํ์ดํ๋ผ์ธ์์ ๋ค์ค ์ถ๋ ฅ: ๋ นํ + ์คํธ๋ฆฌ๋ฐ + ์ค๋ ์ท ๋์ ์ํ
MFormats SDK ์ํคํ ์ฒ
MFormats๋ COM ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ ํ๋ ์ ๊ธฐ๋ฐ ๊ทธ๋ฉ-ํ๋ก์ธ์ค-์ถ๋ ฅ ๋ชจ๋ธ์ ์ฌ์ฉํฉ๋๋ค. MFReader๋ฅผ ์์ฑํ์ฌ ํ๋ ์์ ๊ฐ์ ธ์ค๊ณ , ๊ฐ ํ๋ ์์ MFTransform ๊ฐ์ฒด๋ฅผ ํตํด ์ฒ๋ฆฌํ๋ฉฐ, MFWriter ๋๋ MFRenderer ์ถ๋ ฅ์ผ๋ก ์ ์กํฉ๋๋ค. ์ด๋ ํ๋ ์๋ณ ์ธ๋ฐํ ์ ์ด๋ฅผ ์ ๊ณตํ์ง๋ง ์บก์ฒ ๋ฃจํ ์์ฑ, ์ค๋ ๋ฉ ๊ด๋ฆฌ ๋ฐ ํ๋ ์ ํ์ด๋ฐ์ ์๋์ผ๋ก ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
- โถํ๋ ์ ๊ธฐ๋ฐ ๋ฃจํ: MFReader์์ ํ๋ ์ ๊ฐ์ ธ์ค๊ธฐ, ์ฒ๋ฆฌ, MFWriter๋ก ์ ์ก
- โถ.NET ์ธํฐ๋กญ ๋ํผ๋ฅผ ๊ฐ์ถ COM ๊ธฐ๋ฐ ์ํคํ ์ฒ
- โถ์๋ ์ค๋ ๋ฉ ๋ฐ ํ๋ ์ ํ์ด๋ฐ ๊ด๋ฆฌ ํ์
- โถํ๋ ์๋ณ ์ ์ด๋ก ์ปค์คํ ๋ผ์ฐํ ๋ก์ง ๊ฐ๋ฅ
- โถ๊ฐ ํ์ดํ๋ผ์ธ ๋จ๊ณ๋ฅผ ์ํ ๋ณ๋ ๊ฐ์ฒด (Reader, Transform, Writer, Renderer)
- โถ๋ฐฉ์ก ์ํฌํ๋ก๋ฅผ ์ํ ๋ด์ฅ ํ๋ ์ด์์ ๋ฐ ์ฌ์๋ชฉ๋ก ์ค์ผ์ค๋ง
์ฃผ์ ์ํคํ ์ฒ ์ฐจ์ด์
| ์ธก๋ฉด | Video Capture SDK | MFormats SDK |
|---|---|---|
| ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ | ์ ์ธ์ ํ์ดํ๋ผ์ธ: ๊ตฌ์ฑํ๊ณ ์์ | ๋ช ๋ นํ ๋ฃจํ: ํ๋ ์๋ณ ๊ฐ์ ธ์ค๊ธฐ, ์ฒ๋ฆฌ, ์ถ๋ ฅ |
| ์ค๋ ๋ฉ | ์๋ ๋ด๋ถ ์ค๋ ๋ ๊ด๋ฆฌ | ๊ฐ๋ฐ์๊ฐ ์บก์ฒ ๋ฃจํ ์ค๋ ๋ฉ ๊ด๋ฆฌ |
| ํ๋ ์ ๋ผ์ฐํ | ํ์ดํ๋ผ์ธ ๊ตฌ์ฑ์ ํตํ ์๋ | ์ฝ๋์์ ํ๋ ์๋ณ ์๋ ๋ผ์ฐํ |
| ๋ค์ค ์ถ๋ ฅ | ํ๋์ ํ์ดํ๋ผ์ธ์์ ๋ด์ฅ ๋์ ์ถ๋ ฅ | ๊ฐ๋ฐ์๊ฐ ํ๋ ์์ ๋ณต์ ํ์ฌ ์ฌ๋ฌ writer๋ก ๋ผ์ฐํ |
| ํ๋ซํผ | ํฌ๋ก์คํ๋ซํผ (.NET 6-10, MAUI) | Windows๋ง (COM ๊ธฐ๋ฐ) |
| ๊ฐ์ฒด ๋ชจ๋ธ | ์์ .NET ๊ด๋ฆฌ API | .NET ๋ํผ๋ฅผ ์ฌ์ฉํ COM ์ธํฐ๋กญ |
๊ธฐ๋ฅ๋ณ ๋น๊ต
์บก์ฒ ์์ค
| ๊ธฐ๋ฅ | Video Capture SDK | MFormats SDK |
|---|---|---|
| USB ์น์บ | โ | โ |
| ํ๋ฉด / ๋ฐ์คํฌํฑ ์บก์ฒ | โ | โ |
| IP ์นด๋ฉ๋ผ (RTSP/ONVIF) | โ | โ |
| Blackmagic DeckLink SDI | โ | โ |
| AJA SDI ์นด๋ | โ | โ |
| Bluefish444 SDI ์นด๋ | โ | โ |
| Deltacast SDI ์นด๋ | โ | โ |
| TV ํ๋ (BDA/DVB) | โ | โ |
| NDI ์์ค | โ | โ |
| ์ฐ์ ์ฉ ์นด๋ฉ๋ผ (GenICam/GigE Vision) | โ | โ |
| ๊ฐ์ ์นด๋ฉ๋ผ (OBS Virtual Cam) | โ | โ ๏ธ(DirectShow๋ฅผ ํตํด) |
๋ นํ ๋ฐ ์ถ๋ ฅ
| ๊ธฐ๋ฅ | Video Capture SDK | MFormats SDK |
|---|---|---|
| MP4 (H.264 / H.265) | โ | โ |
| MXF ์ปจํ ์ด๋ | โ ๏ธ | โ (MFormats๋ ๋ฐฉ์ก MXF์ ๊ฐํจ) |
| MKV ์ปจํ ์ด๋ | โ | โ |
| WebM (VP8 / VP9 / AV1) | โ | โ |
| AVI | โ | โ |
| MOV (ProRes) | โ | โ |
| WMV / ASF | โ | โ |
| MPEG-TS | โ | โ |
| ์ ๋๋ฉ์ด์ GIF | โ | โ |
| ์ค๋์ค ์ ์ฉ (MP3, AAC, WAV, FLAC) | โ | โ ๏ธ |
| ์ฌ์ ์ด๋ฒคํธ ๋ นํ (์ํ ๋ฒํผ) | โ | โ |
๋ค์ค ์ถ๋ ฅ
| ๊ธฐ๋ฅ | Video Capture SDK | MFormats SDK |
|---|---|---|
| ๋์ ๋ นํ + ์คํธ๋ฆฌ๋ฐ | โ | โ |
| ์ฌ๋ฌ ๋ ๋ฆฝ ๋ นํ ์ถ๋ ฅ | โ | โ ๏ธ(์๋ ํ๋ ์ ๋ณต์ ํ์) |
| ๋ ๋ฆฝ ์ถ๋ ฅ ์ ์ด (๊ฐ๊ฐ ์์/์ค์ง/์ผ์์ ์ง) | โ | โ ๏ธ(writer๋ณ ์๋ ์ ์ด) |
| ์ถ๋ ฅ๋ณ ๋ค๋ฅธ ์ฝ๋ฑ | โ | โ |
| ๋ นํ ์ค ์ค๋ ์ท | โ | โ |
์คํธ๋ฆฌ๋ฐ
| ๊ธฐ๋ฅ | Video Capture SDK | MFormats SDK |
|---|---|---|
| RTMP Push | โ | โ |
| RTSP ์๋ฒ | โ | โ |
| SRT ์คํธ๋ฆฌ๋ฐ | โ | โ |
| HLS ์ถ๋ ฅ | โ | โ ๏ธ |
| NDI ์ถ๋ ฅ | โ | โ |
| UDP / TCP ๋ฉํฐ์บ์คํธ | โ | โ |
๋น๋์ค ์ฒ๋ฆฌ ๋ฐ ํจ๊ณผ
| ๊ธฐ๋ฅ | Video Capture SDK | MFormats SDK |
|---|---|---|
| ์ค์๊ฐ ํฌ๊ธฐ ์กฐ์ / ์๋ฅด๊ธฐ | โ | โ |
| ๋์ธํฐ๋ ์ด์ฑ | โ | โ |
| ์์ ์กฐ์ | โ | โ |
| ํ ์คํธ / ์ด๋ฏธ์ง ์ค๋ฒ๋ ์ด | โ | โ |
| HTML5 CG ์ค๋ฒ๋ ์ด | โ | โ |
| ํฌ๋ก๋ง ํค (๊ทธ๋ฆฐ ์คํฌ๋ฆฐ) | โ | โ |
| GPU ๊ฐ์ ๋น๋์ค ํจ๊ณผ (40+) | โ | โ ๏ธ(๋ด์ฅ ํจ๊ณผ ์ ํ์ ) |
| ํ๋ฉด ์ ํ๋ฉด | โ | โ |
| ์ ํ ๋ฐ ์์ดํ | โ | โ |
์ค๋์ค
| ๊ธฐ๋ฅ | Video Capture SDK | MFormats SDK |
|---|---|---|
| ์ค๋์ค ์ฅ์น ์บก์ฒ | โ | โ |
| ์ค๋์ค ๋ฏน์ฑ (๋ค์ค ์ ๋ ฅ) | โ | โ |
| ์ค๋์ค ํจ๊ณผ (40+ ๋ด์ฅ: EQ, ์ปดํ๋ ์, ๋ฆฌ๋ฒ๋ธ ๋ฑ) | โ | โ |
| VU ๋ฏธํฐ / ๋ ๋ฒจ ๋ชจ๋ํฐ๋ง | โ | โ |
| ์์คํ ์ค๋์ค ๋ฃจํ๋ฐฑ ์บก์ฒ | โ | โ ๏ธ |
| ์๋ฒ ๋๋ ์ค๋์ค ๋ผ์ฐํ (SDI) | โ | โ |
๊ฐ์ง ๋ฐ ๋ถ์
| ๊ธฐ๋ฅ | Video Capture SDK | MFormats SDK |
|---|---|---|
| ๋ชจ์ ๊ฐ์ง | โ | โ |
| ์ผ๊ตด ๊ฐ์ง | โ | โ |
| ๋ฐ์ฝ๋ / QR ์ฝ๋ ํ๋ | โ | โ |
| ๊ฐ์ฒด ์ถ์ | โ | โ |
| ์ค๋์ค ๋ ๋ฒจ ๊ฐ์ง | โ | โ |
๋ฐฉ์ก ๋ฐ ํ๋ ์ด์์
| ๊ธฐ๋ฅ | Video Capture SDK | MFormats SDK |
|---|---|---|
| ์ฌ์๋ชฉ๋ก / ํ๋ ์ด์์ ์ค์ผ์ค๋ง | โ | โ |
| ๋ฉํฐ๋ฒค๋ SDI ์ถ๋ ฅ | โ ๏ธ | โ (MFormats๋ AJA, Bluefish, Deltacast ์ถ๋ ฅ ์ง์) |
| HTML5 CG (์บ๋ฆญํฐ ์ ๋๋ ์ดํฐ) ์ค๋ฒ๋ ์ด | โ | โ |
| ๊ฐ์ ์นด๋ฉ๋ผ ์ถ๋ ฅ | โ | โ |
| ์ ๋ก / ๋ ํผ๋ฐ์ค ๋๊ธฐํ | โ | โ |
ํ๋ซํผ ์ง์
์ด์ ์ฒด์ ํธํ์ฑ
| ํ๋ซํผ | Video Capture SDK | MFormats SDK |
|---|---|---|
| Windows x64 | โ | โ |
| Windows ARM64 | โ | โ |
| macOS (Apple Silicon + Intel) | โ | โ |
| Linux x64 (Ubuntu, Debian, Fedora) | โ | โ |
| Linux ARM64 (Raspberry Pi) | โ | โ |
| Android (.NET MAUI๋ฅผ ํตํด) | โ | โ |
| iOS (.NET MAUI๋ฅผ ํตํด) | โ | โ |
UI ํ๋ ์์ํฌ ํธํ์ฑ
| ํ๋ ์์ํฌ | Video Capture SDK | MFormats SDK |
|---|---|---|
| WinForms | โ | โ |
| WPF | โ | โ |
| .NET MAUI | โ | โ |
| Avalonia UI | โ | โ |
| Uno Platform | โ | โ |
| Console / Service | โ | โ |
| Blazor (Server-Side) | โ | โ |
๊ฐ๊ฒฉ ๋น๊ต
Video Capture SDK .NET ๊ฐ๊ฒฉ
๊ฐ๋ฐ์ 1๋ช , ์์ ์ ์ฌ์ฉ, ์ฐ๊ฐ ์ ๋ฐ์ดํธ ๋ฐ ์ง์
์ต๋ 3๋ช ๊ฐ๋ฐ์, ์๊ตฌ ๋ผ์ด์ ์ค, 1๋ ์ ๋ฐ์ดํธ ํฌํจ
์ต๋ 8๋ช ๊ฐ๋ฐ์, ์๊ตฌ ๋ผ์ด์ ์ค, 1๋ ์ ๋ฐ์ดํธ ํฌํจ
All licenses include:
- โ ๋ก์ดํฐ ํ๋ฆฌ ๋ฐฐํฌ
- โ ๋ชจ๋ ์์ค ์ฝ๋ ์์
- โ ์ฐ์ ํฐ์ผ ์ง์
- โ ๋ชจ๋ ํ๋ซํผ ๋์ ํฌํจ
- โ ์๊ตฌ ๋ผ์ด์ ์ค ์ต์ : ๊ตฌ๋ ๋ง๋ฃ ํ์๋ ๊ณ์ ์ฌ์ฉ ๊ฐ๋ฅ (์ํฐ๋งํฌ ์์)
MFormats SDK ๊ฐ๊ฒฉ
์ฐ๊ฐ ๊ตฌ๋ , ๋จ์ผ ๊ฐ๋ฐ์, Windows๋ง
๊ฐ๋ฐ์ 5์, 3๋ ๊ตฌ๋ ์ฝ์
๊ตฌ์ฑ์ ๋ฐ๋ผ ๋ฐฐํฌ๋ณ ๋ฐํ์ ์๊ธ์ด ํ์ํ ์ ์์
๊ตฌ๋ ๋ง๋ฃ ๊ฒฝ๊ณ
MFormats SDK๋ ํ์ ์ฐ๊ฐ ๊ตฌ๋ ๋ชจ๋ธ์ ์ฌ์ฉํฉ๋๋ค. ๊ตฌ๋ ์ด ๋ง๋ฃ๋๊ฑฐ๋ ๊ฐฑ์ ๋์ง ์์ผ๋ฉด:
- โ ๋ชจ๋ ๋น๋์ค ์ถ๋ ฅ์ ์ํฐ๋งํฌ๊ฐ ์๋์ผ๋ก ์ถ๊ฐ๋ฉ๋๋ค
- โ ํ์ฑ ๊ตฌ๋ ์์ด๋ ํ๋ก๋์ ์์ SDK๋ฅผ ๊ณ์ ์ฌ์ฉํ ์ ์์ต๋๋ค
- โ ์๊ตฌ ๋ผ์ด์ ์ค ๋์ฒด ์ต์ ์ด ์์ต๋๋ค
- โ ๋ผ์ด์ ์ค ์๋ฒ๊ฐ ๊ฒ์ฆํ ์ ์์ผ๋ฉด ๋ฐฐํฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํฐ๋งํฌ๊ฐ ํ์๋ฉ๋๋ค
Video Capture SDK๋ ๊ตฌ๋งค ํ ๋ฌด๊ธฐํ์ผ๋ก ๊ณ์ ์๋ํ๋ ์๊ตฌ ๋ผ์ด์ ์ค๋ฅผ ์ ๊ณตํ๋ฉฐ, ๊ฐฑ์ ๋ง๋ฃ์ ๋ํ ์ํฐ๋งํฌ ํ๋ํฐ๊ฐ ์์ต๋๋ค.
์ฝ๋ ์์
์์ 1: ์น์บ ์บก์ฒ๋ฅผ MP4๋ก
Video Capture SDK .NET
C#using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types;
using VisioForge.Core.Types.Output;
using VisioForge.Core.Types.VideoCapture;
// Create the capture engine
var capture = new VideoCaptureCore();
// Set video source (first available webcam)
var devices = capture.Video_CaptureDevices();
capture.Video_CaptureDevice = new VideoCaptureSource(devices[0].Name);
// Set audio source
var audioDevices = capture.Audio_CaptureDevices();
capture.Audio_CaptureDevice = new AudioCaptureSource(audioDevices[0].Name);
// Configure MP4 output
capture.Output_Format = new MP4Output();
capture.Output_Filename = "recording.mp4";
// Set mode to capture with preview
capture.Mode = VideoCaptureMode.VideoCapture;
// Start recording with preview
await capture.StartAsync();MFormats SDK
C#// MFormats: Frame-based capture loop
MFDeviceClass devClass = new MFDeviceClass();
MFReaderClass reader = new MFReaderClass();
MFWriterClass writer = new MFWriterClass();
MFRendererClass renderer = new MFRendererClass();
// Configure video device
reader.DeviceSet(eMFDeviceType.eMFDT_Video, 0, "");
reader.DeviceSet(eMFDeviceType.eMFDT_Audio, 0, "");
// Configure writer output
writer.WriterSet("recording.mp4", 0, "");
// You must run the capture loop yourself
while (capturing)
{
MFFrame frame;
reader.SourceFrameGet(-1, out frame, "");
if (frame != null)
{
// Preview
renderer.RenderSet("preview", frame, "");
// Write to file
writer.WriterPut(frame, "");
// Release frame manually
Marshal.ReleaseComObject(frame);
}
Thread.Sleep(1); // Manual timing
}์์ 2: IP ์นด๋ฉ๋ผ + ์ค๋ฒ๋ ์ด + ์คํธ๋ฆฌ๋ฐ
Video Capture SDK .NET
C#using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types;
using VisioForge.Core.Types.Output;
using VisioForge.Core.Types.VideoCapture;
using VisioForge.Core.Types.VideoEffects;
using VisioForge.Core.Types.FFMPEGEXE;
var capture = new VideoCaptureCore();
// IP camera source
capture.IP_Camera_Source = new IPCameraSourceSettings
{
URL = new Uri("rtsp://192.168.1.100:554/stream"),
Type = IPSourceEngine.Auto_LAV
};
capture.Mode = VideoCaptureMode.IPCapture;
// Add text overlay
capture.Video_Effects_Enabled = true;
capture.Video_Effects_Clear();
var textOverlay = new VideoEffectTextLogo(true)
{
Text = "{timestamp} - Camera 1",
Left = 10,
Top = 10,
Font = new System.Drawing.Font("Arial", 14),
FontColor = System.Drawing.Color.White
};
capture.Video_Effects_Add(textOverlay);
// Stream to RTMP
capture.Network_Streaming_Enabled = true;
capture.Network_Streaming_Format = NetworkStreamingFormat.RTMP_FFMPEG_EXE;
var ffmpegOutput = new FFMPEGEXEOutput();
ffmpegOutput.FillDefaults(DefaultsProfile.MP4_H264_AAC, true);
ffmpegOutput.OutputMuxer = OutputMuxer.FLV;
capture.Network_Streaming_Output = ffmpegOutput;
capture.Network_Streaming_URL = "rtmp://streaming-server/live/stream_key";
// Also record locally
capture.Output_Filename = "backup.mp4";
capture.Output_Format = new MP4Output();
await capture.StartAsync();MFormats SDK
C#// MFormats: Manual frame loop with overlay + streaming
MFReaderClass reader = new MFReaderClass();
MFWriterClass localWriter = new MFWriterClass();
MFWriterClass rtmpWriter = new MFWriterClass();
MFRendererClass renderer = new MFRendererClass();
// Configure RTSP source
reader.ReaderOpen("rtsp://192.168.1.100:554/stream", "");
// Configure outputs
localWriter.WriterSet("backup.mp4", 0, "");
rtmpWriter.WriterSet("rtmp://streaming-server/live/stream_key", 0, "");
while (capturing)
{
MFFrame frame;
reader.SourceFrameGet(-1, out frame, "");
if (frame != null)
{
// Add overlay manually via MFTransform
MFOverlayClass overlay = new MFOverlayClass();
overlay.OverlayTextSet(frame,
DateTime.Now.ToString() + " - Camera 1",
10, 10, 14, "Arial", 0xFFFFFF, 0, "");
// Clone frame for second output
MFFrame clone;
frame.MFClone(out clone, eMFrameClone.eMFC_Full, eMFCC.eMFCC_Default);
// Write to local file
localWriter.WriterPut(frame, "");
// Write to RTMP stream
rtmpWriter.WriterPut(clone, "");
Marshal.ReleaseComObject(clone);
Marshal.ReleaseComObject(frame);
}
}๊ฐ ์๋ฃจ์ ์ ์ ํํ ์๊ธฐ
๋ค์์ด ํ์ํ ๋ Video Capture SDK ์ ํ
- โํฌ๋ก์คํ๋ซํผ ์บก์ฒ ์ ํ๋ฆฌ์ผ์ด์ (Windows, macOS, Linux, ๋ชจ๋ฐ์ผ)
- โ์๋ ์ค๋ ๋ฉ ๋ฐ ๋ฒํผ ๊ด๋ฆฌ๋ฅผ ๊ฐ์ถ ํ์ดํ๋ผ์ธ ๊ธฐ๋ฐ ์ํคํ ์ฒ
- โ40+ ๋ด์ฅ GPU ๊ฐ์ ๋น๋์ค ๋ฐ ์ค๋์ค ํจ๊ณผ
- โ์บก์ฒ ์ค ๋ชจ์ ๊ฐ์ง, ์ผ๊ตด ๊ฐ์ง, ๋ฐ์ฝ๋ ์ค์บ๋
- โOBS, Zoom, Teams ์ฐ๋์ ์ํ ๊ฐ์ ์นด๋ฉ๋ผ ์ถ๋ ฅ
- โ์๊ตฌ ๋ผ์ด์ ์ค ์ต์ ์ด ์๋ ๊ฒฝ์ ์ ์ธ ๋ผ์ด์ ์ค
- โ๊ฐ๋ณ ์์/์ค์ง ์ ์ด๊ฐ ์๋ ์ฌ๋ฌ ๋ ๋ฆฝ ์ถ๋ ฅ
- โ์ฐ์ ์ฉ ์นด๋ฉ๋ผ ์ง์ (GenICam, GigE Vision)
- โTV ํ๋ ๋ฐ DVB ์บก์ฒ ์ง์
๋ค์์ด ํ์ํ ๋ MFormats SDK ์ ํ
- โ๋ฉํฐ๋ฒค๋ SDI ์ง์: Blackmagic๊ณผ ํจ๊ป AJA, Bluefish444, Deltacast
- โ์ฌ์๋ชฉ๋ก ์ค์ผ์ค๋ง ๋ฐ ์๋ํ๋ฅผ ๊ฐ์ถ ๋ฐฉ์ก ํ๋ ์ด์์
- โ๋ผ์ด๋ธ ๋ฐฉ์ก์ฉ HTML5 ๊ธฐ๋ฐ CG (์บ๋ฆญํฐ ์ ๋๋ ์ดํฐ) ์ค๋ฒ๋ ์ด
- โ๋ฐฉ์ก ์คํ๋์ค ํ๊ฒฝ์ฉ ์ ๋ก ๋ฐ ๋ ํผ๋ฐ์ค ๋๊ธฐํ
- โ๋ชจ๋ ์ฒ๋ฆฌ ๋จ๊ณ์ ๋ํ ํ๋ ์๋ณ ์๋ ์ ์ด
- โ์์ ํ ๋ฐฉ์ก ๋ฉํ๋ฐ์ดํฐ ์ง์์ ๊ฐ์ถ MXF ์ปจํ ์ด๋ ํ์
- โ๊ธฐ์กด ๋ฐฉ์ก ์ธํ๋ผ ๋ฐ SDI ๋ผ์ฐํฐ์์ ํตํฉ
๊ฒฐ์ ๋งคํธ๋ฆญ์ค
| ์๊ตฌ์ฌํญ | Video Capture SDK | MFormats SDK | ์น์ |
|---|---|---|---|
| ํฌ๋ก์คํ๋ซํผ ์ง์ | Video Capture SDK | ||
| ๋ ๋ฆฝ ์ ์ด๊ฐ ์๋ ๋ค์ค ์ถ๋ ฅ | Video Capture SDK | ||
| ์ค๋์ค ํจ๊ณผ (40+ ๋ด์ฅ) | Video Capture SDK | ||
| GPU ๋น๋์ค ํจ๊ณผ | Video Capture SDK | ||
| ๋ชจ์ / ์ผ๊ตด / ๋ฐ์ฝ๋ ๊ฐ์ง | Video Capture SDK | ||
| ๊ฐ์ ์นด๋ฉ๋ผ ์ถ๋ ฅ | Video Capture SDK | ||
| 2,000 EUR ๋ฏธ๋ง ์์ฐ | Video Capture SDK | ||
| ์๊ตฌ ๋ผ์ด์ ์ค ์ต์ | Video Capture SDK | ||
| ์ฐ์ ์ฉ ์นด๋ฉ๋ผ (GenICam) | Video Capture SDK | ||
| TV ํ๋ / DVB ์บก์ฒ | Video Capture SDK | ||
| ๋ฉํฐ๋ฒค๋ SDI (AJA, Bluefish444) | MFormats SDK | ||
| ๋ฐฉ์ก์ฉ HTML5 CG ์ค๋ฒ๋ ์ด | MFormats SDK |
๊ฒฐ๋ก
Video Capture SDK .NET
Video Capture SDK๋ ํ๋ถํ ๋น๋์ค ์ฒ๋ฆฌ, ๊ฐ์ง ๊ธฐ๋ฅ, ์ฌ๋ฌ ๋ ๋ฆฝ ์ถ๋ ฅ ๋ฐ ๊ด๋ฒ์ํ ์ฅ์น ์ง์์ด ํ์ํ .NET ๊ฐ๋ฐ์๋ฅผ ์ํ ํฌ๋ก์คํ๋ซํผ ํ์ดํ๋ผ์ธ ๊ธฐ๋ฐ ์บก์ฒ ์์ง์ผ๋ก ๋ฐ์ด๋ฉ๋๋ค. ์ ์ธ์ API, 40+ GPU ํจ๊ณผ ๋ฐ ์๊ตฌ ๋ผ์ด์ ์ค๋ ๋ฐ์คํฌํฑ์์ ๋ชจ๋ฐ์ผ๊น์ง ๋๋ถ๋ถ์ ์บก์ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น์ฉ ํจ์จ์ ์ธ ์ ํ์ ๋๋ค.
MFormats SDK
MFormats SDK๋ ๋ฉํฐ๋ฒค๋ SDI ํ๋์จ์ด ์ง์ (AJA, Bluefish444, Deltacast), HTML5 CG ์ค๋ฒ๋ ์ด ๋ฐ ์ฌ์๋ชฉ๋ก ๊ธฐ๋ฐ ํ๋ ์ด์์ ์๋ํ๊ฐ ํ์ํ ๋ฐฉ์ก ์ค์ฌ ์ํฌํ๋ก์ ๊ฐ๋ ฅํ ์ ํ์ ๋๋ค. ํ๋ ์ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ ์ ๋ฌธ ๋ฐฉ์ก ํ๊ฒฝ์ ์ ํฉํ ํ๋ ์๋ณ ์ธ๋ฐํ ์ ์ด๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ Windows๋ง ์ง์ํ๊ณ , ์๋นํ ๋ ๋น์ธ๋ฉฐ, ๊ตฌ๋ ์ด ๋ง๋ฃ๋๋ฉด ์ํฐ๋งํฌ๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
The Reality
๋๋ถ๋ถ์ .NET ๋น๋์ค ์บก์ฒ ํ๋ก์ ํธ โ ํนํ ํฌ๋ก์คํ๋ซํผ ์ง์, ๊ฐ์ง ๊ธฐ๋ฅ ๋๋ ์์ฐ ์นํ์ ์ธ ๋ผ์ด์ ์ค๊ฐ ํ์ํ ํ๋ก์ ํธ โ ์ ๋ํด Video Capture SDK๊ฐ ํ์คํ ์ ํ์ ๋๋ค. MFormats๋ AJA/Bluefish ํ๋์จ์ด ํตํฉ๊ณผ CG ์ค๋ฒ๋ ์ด ์ํฌํ๋ก๊ฐ ํ์์ ์ธ ๋ฉํฐ๋ฒค๋ SDI ๋ฐฉ์ก ์คํ๋์ค์์ ํน๋ณํ ์๋ฆฌ๋ฅผ ์ก๊ณ ์์ต๋๋ค.
