Last updated: 2026년 9월
Video Capture SDK .NET vs Medialooks MFormats SDK
파이프라인 엔진 vs 프레임 기반 캡처 비교
VisioForge Video Capture SDK .NET과 Medialooks MFormats SDK 중 선택하는 것은 근본적으로 다른 두 가지 아키텍처 모델 간의 결정입니다. Video Capture SDK는 소스, 처리 및 출력을 선언적으로 구성하는 파이프라인 기반 엔진을 사용하고, MFormats는 각 프레임을 수동으로 가져와 라우팅하는 프레임 기반 그랩-프로세스-출력 루프를 따릅니다. 이 가이드에서는 아키텍처, 기능, 플랫폼 지원, 가격 및 실제 코드를 비교하여 프로젝트에 적합한 선택을 할 수 있도록 합니다.
연 €250부터 · Lifetime 라이선스 €750부터
요약
| 측면 | Video Capture SDK .NET | MFormats SDK |
|---|---|---|
| 아키텍처 | 듀얼 엔진: 네이티브 DirectShow/Media Foundation + 내장 FFmpeg 파이프라인 | COM 객체를 사용한 프레임 기반 그랩-프로세스-출력 루프 |
| 플랫폼 지원 | Windows, macOS, Linux, Android, iOS (5개 플랫폼) | Windows만 지원 |
| 가격 | 연 250-500 EUR (구독) 또는 1,500 EUR Lifetime·Team 라이선스 | 개별 견적 제공 (구독 필수) |
| 최적 용도 | 크로스플랫폼 캡처 앱, 다중 출력 파이프라인, 비디오 효과, 감지 | 멀티벤더 SDI 방송, HTML5 CG 오버레이, 재생목록/플레이아웃 워크플로 |
| SDI 하드웨어 | Blackmagic DeckLink 지원 | Blackmagic, AJA, Bluefish444, Deltacast 멀티벤더 SDI |
| UI 프레임워크 | WinForms, WPF, MAUI, Avalonia, Uno, Console, Blazor | WinForms, WPF, Console |
| 라이선스 모델 | 영구 또는 연간 구독; 만료 후에도 작동 | 연간 구독만; 구독 만료 시 워터마크 추가 |
| 지원 | 이메일 지원 및 티켓 시스템 | 이메일 지원, 포럼 |
아키텍처 심층 분석
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명, 상업적 사용, 연간 업데이트 및 지원
한 도시의 한 위치에 있는 구매 조직의 모든 개발자, 영구 사용 및 제품 수명 동안 업데이트
한 도시의 한 위치에 있는 구매 조직의 모든 개발자, 영구 사용 및 제품 수명 동안 업데이트
All licenses include:
- ✓ 로열티 프리 배포
- ✓ 모든 소스 코드 예제
- ✓ 이메일 지원
- ✓ 모든 플랫폼 대상 포함
- ✓ 영구 라이선스 옵션: 구독 만료 후에도 계속 사용 가능 (워터마크 없음)
MFormats SDK 가격
연간 구독, 단일 개발자, Windows만
개발자 5석, 3년 구독 약정
구성에 따라 배포별 런타임 요금이 필요할 수 있음
구독 만료 경고
MFormats SDK는 필수 연간 구독 모델을 사용합니다. 구독이 만료되거나 갱신되지 않으면:
- ⚠모든 비디오 출력에 워터마크가 자동으로 추가됩니다
- ⚠활성 구독 없이는 프로덕션에서 SDK를 계속 사용할 수 없습니다
- ⚠영구 라이선스 대체 옵션이 없습니다
- ⚠라이선스 서버가 검증할 수 없으면 배포된 애플리케이션에 워터마크가 표시됩니다
Video Capture SDK는 구매 후 무기한으로 계속 작동하는 영구 라이선스를 제공하며, 갱신 만료에 대한 워터마크 페널티가 없습니다.
연 €250부터 · Lifetime 라이선스 €750부터
코드 예제
예제 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_FFMPEG
};
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 방송 스튜디오에서 특별히 자리를 잡고 있습니다.
Frequently Asked Questions
구독을 갱신하지 않으면 MFormats 애플리케이션은 어떻게 됩니까?
Video Capture SDK는 AJA 또는 Bluefish444 SDI 카드를 지원합니까?
Video Capture SDK는 macOS와 Linux에서 실행할 수 있습니까?
5명의 개발자 팀에 대한 3년간 가격 모델은 어떻게 비교됩니까?
MFormats에 내장 모션 감지 또는 얼굴 감지가 있습니까?
방송 플레이아웃 애플리케이션에는 어떤 SDK가 더 좋습니까?
MFormats에서 Video Capture SDK로 마이그레이션할 수 있습니까?
시작하기
Medialooks는 MFormats 가격을 공개하지 않습니다. 라이선스는 개별 견적 제공됩니다. 제품 정보는 medialooks.com/mformats(2026-09-06 확인).
