VisioForge

Video Capture SDK .NETC#์œผ๋กœ ์›น์บ , ํ™”๋ฉด ๋ฐ IP ์นด๋ฉ”๋ผ์—์„œ ๋…นํ™”

๋‹น์‚ฌ์˜ .Net SDK๋Š” ๋น„๋””์˜ค ์บก์ฒ˜ ๋ฐ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์›ํ™œํ•˜๊ฒŒ ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‹ค์žฌ๋‹ค๋Šฅํ•œ SDK๋Š” ๋น„๋””์˜ค ๋ฐ ์˜ค๋””์˜ค ์žฌ์ƒ์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ณ  USB ์›น์บ , IP ์นด๋ฉ”๋ผ, Blackmagic Decklink ์นด๋“œ ๋ฐ ์บ ์ฝ”๋”๋ฅผ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ ์†Œ์Šค์—์„œ์˜ ์บก์ฒ˜๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. MP4, WebM, AVI, WMV, MPEG-1/2 ๋“ฑ์„ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ ์ถœ๋ ฅ ํ˜•์‹์— ๋Œ€ํ•œ ํฌ๊ด„์ ์ธ ์ง€์›์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ์ฝ˜ํ…์ธ ๋ฅผ ํ–ฅ์ƒํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ๋น„๋””์˜ค ๋ฐ ์˜ค๋””์˜ค ํšจ๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๋‹น์‚ฌ์˜ SDK๋Š” ๊ฐ•๋ ฅํ•œ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ˜ธํ™˜์„ฑ์„ ์ œ๊ณตํ•˜์—ฌ Windows, Linux, macOS, iOS ๋ฐ Android ํ™˜๊ฒฝ๊ณผ์˜ ์›ํ™œํ•œ ํ†ตํ•ฉ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์ ์‘์„ฑ์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ๋‹ค์–‘ํ•œ ์šด์˜ ์ฒด์ œ ๋ฐ ์žฅ์น˜์—์„œ ์ผ๊ด€๋˜๊ฒŒ ์ž‘๋™ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค์–ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์ผ๊ด€๋˜๊ณ  ์œ ์—ฐํ•œ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ๊ฒฝํ—˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SDK ๊ฐœ์š”

SDK Structure

SDK ๊ตฌ์กฐ

์ด SDK๋Š” 10๊ฐœ ์ด์ƒ์˜ ๋น„๋””์˜ค ๋ฐ ์˜ค๋””์˜ค ์ž…๋ ฅ ์†Œ์Šค์™€ ๋†’์€ ํ˜ธํ™˜์„ฑ์„ ์ž๋ž‘ํ•˜๋ฉฐ 20๊ฐœ ์ด์ƒ์˜ ์ถœ๋ ฅ ํ˜•์‹์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ž…๋ ฅ ๋ฐ ์ถœ๋ ฅ ๊ตฌ์„ฑ์„ ์œ„ํ•œ ๊ด‘๋ฒ”์œ„ํ•œ ํ•˜๋“œ์›จ์–ด ์˜ต์…˜์„ ์ˆ˜์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. SDK๋Š” ๋น„๋””์˜ค ๋ฐ ์˜ค๋””์˜ค ์ฝ˜ํ…์ธ ๋ฅผ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์ŠคํŠธ๋ฆฌ๋ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๋น„๋””์˜ค ์บก์ฒ˜ ๋„๊ตฌ

๋น„๋””์˜ค ์บก์ฒ˜ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋งž์ถคํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ USB ์›น์บ , IP ์นด๋ฉ”๋ผ(RTSP ๋ฐ ONVIF), ๋ฐ์Šคํฌํ†ฑ ํ™”๋ฉด, Blackmagic Decklink ์žฅ์น˜๋กœ๋ถ€ํ„ฐ ๋…นํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด์žฅ๋œ ์ธ์ฝ”๋”ฉ ๊ธฐ๋Šฅ์€ ์˜์ƒ์„ MP4, WebM, AVI์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ €์žฅํ•˜๋ฉฐ, ์žฅ์น˜ ์—ด๊ฑฐ, ํ˜•์‹ ์„ ํƒ, ์˜ค๋””์˜ค ์†Œ์Šค ๊ด€๋ฆฌ๋Š” SDK๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„๋””์˜ค ์บก์ฒ˜ ํŒŒ์ดํ”„๋ผ์ธ

๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋˜๋Š” ์บก์ฒ˜ ๋‹จ๊ณ„์—์„œ ๋น„๋””์˜ค ๋ฐ ์˜ค๋””์˜ค ์ŠคํŠธ๋ฆผ์€ ๋‹ค์–‘ํ•œ ํšจ๊ณผ๋กœ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ํ›„ ์ด๋Ÿฌํ•œ ์ŠคํŠธ๋ฆผ์€ ๋ถ„ํ• ๋˜์–ด ์ถ”๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์ธ์ฝ”๋” ๋ฐ ์˜ค๋””์˜ค/๋น„๋””์˜ค ๋ Œ๋”๋Ÿฌ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

Video Capture Pipeline
Output Formats

์ถœ๋ ฅ ํ˜•์‹

์ด SDK๋Š” MP4(๋น„๋””์˜ค์šฉ H264/HEVC ๋ฐ ์˜ค๋””์˜ค์šฉ AAC ์‚ฌ์šฉ), WebM(๋น„๋””์˜ค์šฉ VP8/VP9/AV1 ๋ฐ ์˜ค๋””์˜ค์šฉ Vorbis ๋˜๋Š” OPUS ์‚ฌ์šฉ), WMV, MP3, JPEG, GIF ๋ฐ PNG์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ธ๊ธฐ ๋น„๋””์˜ค, ์˜ค๋””์˜ค ๋ฐ ์ด๋ฏธ์ง€ ํ˜•์‹๊ณผ ์ฝ”๋ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋น„๋””์˜ค ์ฒ˜๋ฆฌ

ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€ ๋˜๋Š” GIF ๋กœ๊ณ ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ๋ฐ๊ธฐ, ๋Œ€๋น„, ์ฑ„๋„ ๋˜๋Š” ์ƒ‰์กฐ๋ฅผ ์กฐ์ •ํ•˜๊ณ , ์ฝ˜ํ…์ธ  ํฌ๊ธฐ๋ฅผ ์กฐ์ •, ์ž๋ฅด๊ธฐ ๋˜๋Š” ํšŒ์ „ํ•˜๊ณ , ํฌ๋กœ๋งˆํ‚ค ๋˜๋Š” ๋‹ค์–‘ํ•œ ๋น„๋””์˜ค ํšจ๊ณผ๋ฅผ ์ ์šฉํ•˜์—ฌ ์ฝ˜ํ…์ธ ๋ฅผ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Video Processing
Audio Processing

์˜ค๋””์˜ค ์ฒ˜๋ฆฌ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ดํ€„๋ผ์ด์ €๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์˜ค๋””์˜ค ๊ฒฝํ—˜์„ ๋ฏธ์„ธ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๊ณ ์Œ, ์ค‘์Œ, ์ €์Œ๊ณผ ๊ฐ™์€ ํŠน์ • ์˜ค๋””์˜ค ์ฃผํŒŒ์ˆ˜๋ฅผ ์กฐ์ •ํ•˜์—ฌ ์›ํ•˜๋Š” ์‚ฌ์šด๋“œ ํ”„๋กœํ•„์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์‚ฌ์šฉ์ž๋Š” ์˜ค๋””์˜ค ๋ ˆ๋ฒจ์„ ์ •๊ทœํ™”ํ•˜๊ฑฐ๋‚˜ ๋ณผ๋ฅจ์„ ์ฆํญํ•˜์—ฌ ์˜ค๋””์˜ค ์ถœ๋ ฅ์„ ์ •๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ์‚ฌ์šฉ์ž ์ง€์ •์„ ์œ„ํ•ด ๋‹ค๋ฅธ ๋งŽ์€ ์˜ค๋””์˜ค ํšจ๊ณผ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ค์น˜

NuGet์œผ๋กœ ๋น ๋ฅธ ์„ค์น˜

ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ์ฝ˜์†”์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์— SDK๋ฅผ ์ง์ ‘ ์„ค์น˜ํ•˜์„ธ์š”:

Install-Package VisioForge.DotNet.VideoCapture

๋˜๋Š” ๋‹ค์Œ์„ ๊ฒ€์ƒ‰ํ•˜์„ธ์š” VisioForge.DotNet.VideoCapture Visual Studio์˜ NuGet ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์—์„œ.NuGet.org์—์„œ ๋ณด๊ธฐ โ†’์„ค์น˜ ๊ฐ€์ด๋“œ ๋ณด๊ธฐ โ†’

์ฃผ์š” ๊ธฐ๋Šฅ

ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์ง€์›

Windows, macOS, Linux, iOS, Android

๊ด‘๋ฒ”์œ„ํ•œ ์žฅ์น˜ ์ง€์›

์›น์บ , IP ์นด๋ฉ”๋ผ, ์ „๋ฌธ๊ฐ€์šฉ ํ•˜๋“œ์›จ์–ด

ํ•˜๋“œ์›จ์–ด ๊ฐ€์†

NVIDIA, Intel Quick Sync, AMD

๋‹ค์ค‘ ์ถœ๋ ฅ ํ˜•์‹

MP4, WebM, AVI, WMV ๋“ฑ

ํ”Œ๋žซํผ ์ง€์›

Windows7/8/10/11x86/x64Server 2016+LinuxUbuntu 22+Debianx64/ARMmacOS12+Intel/M1/M2/M3Android8.0+ARM/x86iOS11.0+iPhone/iPad

์‹ค์‹œ๊ฐ„ AI ๊ฐ์ง€ ๋ฐ ์ž๋ง‰

์˜จ๋””๋ฐ”์ด์Šค ๊ฐ์ฒด ๊ฐ์ง€, ๊ฐœ๋ฐฉํ˜• ์–ดํœ˜ ๊ฐ์ง€, ์–ผ๊ตด ์ธ์‹, ํ…์ŠคํŠธ/๋ฒˆํ˜ธํŒ ์ธ์‹, ์ž๋™ ํ”„๋ผ์ด๋ฒ„์‹œ ๋งˆ์Šคํ‚น, ๊ฐ€์ƒ ๋ฐฐ๊ฒฝ ํšจ๊ณผ, ์‹ค์‹œ๊ฐ„ ์ž๋ง‰์„ Video Capture SDK .NET ์บก์ฒ˜ ์„ธ์…˜์— ์ง์ ‘ ์ถ”๊ฐ€ํ•˜์„ธ์š”.

VideoCaptureCoreX๋Š” VisioForge.DotNet.Core.AI ๋ฐ VisioForge.DotNet.Core.AI.Whisper์˜ ๋™์ผํ•œ AI ๋ธ”๋ก์„ Video_Processing_AddBlock ๋ฐ Audio_Processing_AddBlock์„ ํ†ตํ•ด ์บก์ฒ˜ ๊ทธ๋ž˜ํ”„ ์•ˆ์— ์ง์ ‘ ํ˜ธ์ŠคํŒ…ํ•ฉ๋‹ˆ๋‹ค โ€” ์ˆ˜๋™์œผ๋กœ MediaBlocksPipeline์„ ๊ตฌ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. StartAsync ์ด์ „์— ๋ธ”๋ก์„ ๋“ฑ๋กํ•˜๋ฉด, ์›น์บ , IP/RTSP ์นด๋ฉ”๋ผ ๋˜๋Š” ์บก์ฒ˜ ์นด๋“œ์—์„œ ์—”์ง„์ด ์บก์ฒ˜ํ•˜๋Š” ๋ชจ๋“  ํ”„๋ ˆ์ž„ ๋˜๋Š” ์˜ค๋””์˜ค ์ƒ˜ํ”Œ์—์„œ ์‹คํ–‰๋˜๋ฉฐ, ๋ผ์ด๋ธŒ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์™€ ๋…นํ™”/์ŠคํŠธ๋ฆฌ๋ฐ ์ถœ๋ ฅ ๋ชจ๋‘์— ์˜ค๋ฒ„๋ ˆ์ด๋‚˜ ๋งˆ์Šคํ‚น์„ ๊ทธ๋ ค ๋„ฃ์Šต๋‹ˆ๋‹ค. ์ถ”๋ก ์€ ONNX Runtime๊ณผ Whisper.net/GGML์„ ํ†ตํ•ด ๋กœ์ปฌ์—์„œ ์‹คํ–‰๋˜๋ฏ€๋กœ ์•„๋ฌด๊ฒƒ๋„ ์žฅ์น˜ ๋ฐ–์œผ๋กœ ์ „์†ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‹ค์‹œ๊ฐ„ ๊ฐ์ฒด ๊ฐ์ง€

YOLOv8, YOLOX ๋˜๋Š” RT-DETR ๊ฐ์ง€๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์›น์บ , IP ์นด๋ฉ”๋ผ ๋˜๋Š” ์บก์ฒ˜ ์นด๋“œ ํ”ผ๋“œ์˜ ๋ชจ๋“  ํ”„๋ ˆ์ž„์— ๊ฒฝ๊ณ„ ์ƒ์ž์™€ ๋ ˆ์ด๋ธ”์„ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค.

์‹ค์‹œ๊ฐ„ ๊ตฌ์—ญ ๋ฐ ํŠธ๋ฆฝ์™€์ด์–ด ๋ถ„์„

๋™์ผํ•œ ์‹ค์‹œ๊ฐ„ ๊ฐ์ง€๊ธฐ ์œ„์— ByteTrack ๋‹ค์ค‘ ๊ฐ์ฒด ์ถ”์ , ๋ผ์ธ ๊ต์ฐจ ์นด์šดํ„ฐ, ํด๋ฆฌ๊ณค ๊ตฌ์—ญ ์ ์œ  ์•Œ๋ฆผ์„ ์ถ”๊ฐ€ํ•˜์„ธ์š” โ€” ์œ ๋™์ธ๊ตฌ ์ง‘๊ณ„์™€ ๊ฒฝ๊ณ„ ๋ชจ๋‹ˆํ„ฐ๋ง์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

์‹ค์‹œ๊ฐ„ ์–ผ๊ตด ์ธ์‹

๋ผ์ด๋ธŒ ํ”ผ๋“œ์—์„œ ์–ผ๊ตด์„ ๊ฐ์ง€ํ•˜๊ณ  ๋“ฑ๋ก๋œ ๊ฐค๋Ÿฌ๋ฆฌ์™€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋งค์นญํ•ฉ๋‹ˆ๋‹ค โ€” ์ถœ์ž… ํ†ต์ œ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

์‹ค์‹œ๊ฐ„ ํ…์ŠคํŠธ ๋ฐ ๋ฒˆํ˜ธํŒ ์ธ์‹

ํ”„๋ ˆ์ž„์ด ๋„์ฐฉํ•˜๋Š” ์ฆ‰์‹œ ํ™”๋ฉด ์† ํ…์ŠคํŠธ๋‚˜ ์ฐจ๋Ÿ‰ ๋ฒˆํ˜ธํŒ์„ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค โ€” ๊ฒŒ์ดํŠธ ์นด๋ฉ”๋ผ, ์‚ฌ์ด๋‹ˆ์ง€ ๋ชจ๋‹ˆํ„ฐ๋ง, ์ฃผ์ฐจ ์‹œ์Šคํ…œ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์ƒ ์นด๋ฉ”๋ผ ๋ฐฐ๊ฒฝ ํšจ๊ณผ

ONNX ๋งคํŒ… ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์›น์บ  ๋˜๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ ํ”ผ๋“œ์˜ ๋ฐฐ๊ฒฝ์„ ํ๋ฆฌ๊ฒŒ ํ•˜๊ฑฐ๋‚˜, ๊ต์ฒดํ•˜๊ฑฐ๋‚˜, ํˆฌ๋ช…ํ•˜๊ฒŒ ๋งŒ๋“œ์„ธ์š”.

๋…นํ™” ์ค‘ ์‹ค์‹œ๊ฐ„ ์ž๋ง‰

์บก์ฒ˜ํ•˜๋Š” ๋™์•ˆ Whisper์™€ Silero VAD๋กœ ๋งˆ์ดํฌ๋ฅผ ์ „์‚ฌํ•˜๊ณ , ์ž๋ง‰์„ ๋…นํ™” ๋˜๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ ์ถœ๋ ฅ์— ์‚ฝ์ž…ํ•˜์„ธ์š”.

์‹ค์‹œ๊ฐ„ ํ”„๋ผ์ด๋ฒ„์‹œ ๋งˆ์Šคํ‚น

ํ”„๋ ˆ์ž„์ด ์บก์ฒ˜๋˜๋Š” ์ฆ‰์‹œ ์–ผ๊ตด, ์ฐจ๋Ÿ‰ ๋ฒˆํ˜ธํŒ, ํ™”๋ฉด ์† ํ…์ŠคํŠธ๋ฅผ ์ž๋™์œผ๋กœ ํ๋ฆฌ๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ํ”ฝ์…€ํ™”ํ•ฉ๋‹ˆ๋‹ค โ€” ์ปดํ”Œ๋ผ์ด์–ธ์Šค๊ฐ€ ์ค‘์š”ํ•œ ๋ผ์ด๋ธŒ ์ŠคํŠธ๋ฆผ๊ณผ ๊ณต๊ณต ์นด๋ฉ”๋ผ ํ”ผ๋“œ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐฉํ˜• ์–ดํœ˜ ๊ฐ์ฒด ๊ฐ์ง€

๊ณ ์ •๋œ ํด๋ž˜์Šค ๋ชฉ๋ก ๋Œ€์‹  ์ž์œ  ํ˜•์‹ ํ…์ŠคํŠธ ํ”„๋กฌํ”„ํŠธ๋กœ ๋ผ์ด๋ธŒ ํ”ผ๋“œ์—์„œ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค โ€” ์žฌํ•™์Šต ์—†์ด ๋Ÿฐํƒ€์ž„์— ์ฐพ์„ ๋Œ€์ƒ์„ ์„ค๋ช…ํ•˜๊ณ  ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์‹œ๊ฐ„ ์žฅ๋ฉด ์บก์…”๋‹

Florence-2 ๋น„์ „-์–ธ์–ด ๋ธ”๋ก์œผ๋กœ ๋ผ์ด๋ธŒ ํ”ผ๋“œ๋ฅผ ํ”„๋ ˆ์ž„ ๋‹จ์œ„๋กœ ์ž์—ฐ์–ด ์„ค๋ช…์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค โ€” ์ ‘๊ทผ์„ฑ ๋‚ด๋ ˆ์ด์…˜์ด๋‚˜ ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

Unity ์ง€์›

๋ฐ”๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋‹จ์ผ .unitypackage๋กœ Unity 6์— ๋ผ์ด๋ธŒ ์นด๋ฉ”๋ผ ์บก์ฒ˜๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”. ๊ณ ์ˆ˜์ค€ VideoCaptureCoreX ์—”์ง„์€ ์›น์บ ๊ณผ ๋งˆ์ดํฌ๋ฅผ ์บก์ฒ˜ํ•˜๊ณ , IP / RTSP / ONVIF ์นด๋ฉ”๋ผ์— ์—ฐ๊ฒฐํ•˜๋ฉฐ, MP4๋กœ ๋…นํ™”ํ•˜๊ณ , ๋ผ์ด๋ธŒ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ Unity RawImage์— ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ ์›น์บ  ์บก์ฒ˜์™€ IP ์นด๋ฉ”๋ผ ๋ทฐ์–ด, ๋‘ ๊ฐœ์˜ ์ค€๋น„๋œ ์”ฌ์œผ๋กœ ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๋ˆ„์  ํŒจํ‚ค์ง€๊ฐ€ Windows, Android, macOS, iOS๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ ๊ฐ€์ ธ์˜จ ํ›„ Build Target๋งŒ ์ „ํ™˜ํ•˜์—ฌ ๋นŒ๋“œํ•˜์„ธ์š”.

๊ณ ์ˆ˜์ค€ ์บก์ฒ˜ ์—”์ง„

VideoCaptureCoreX๋Š” WinForms, WPF, MAUI, Avalonia์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ์บก์ฒ˜ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์žฅ์น˜๋ฅผ ์—ด๊ฑฐํ•˜๊ณ , ์›น์บ ์ด๋‚˜ ๋งˆ์ดํฌ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ , ์ˆ˜๋™์œผ๋กœ ํŒŒ์ดํ”„๋ผ์ธ์„ ์กฐ๋ฆฝํ•˜์ง€ ์•Š๊ณ ๋„ ๋ผ์ด๋ธŒ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜๋‚˜์˜ ๋ˆ„์  ํŒจํ‚ค์ง€

Windows, Android, macOS, iOS ๋„ค์ดํ‹ฐ๋ธŒ ๋Ÿฐํƒ€์ž„์ด ๋‹จ์ผ .unitypackage์— ํฌํ•จ๋˜์–ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. Build Target์„ ์ „ํ™˜ํ•˜๋ฉด Unity๊ฐ€ ์ ์ ˆํ•œ ๋„ค์ดํ‹ฐ๋ธŒ ๋Ÿฐํƒ€์ž„์„ ์ž๋™์œผ๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์ค€๋น„๋œ ์บก์ฒ˜ ์”ฌ

ํฌํ•จ๋œ VideoCaptureX(๋กœ์ปฌ ์›น์บ  + ๋งˆ์ดํฌ)์™€ IPCameraX(RTSP / ONVIF ๋ทฐ์–ด) ์”ฌ์€ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ VisioForgeVideoView ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ†ตํ•ด ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ RawImage์— ๋ Œ๋”๋งํ•˜๋ฉฐ, Stretch, Letterbox, Crop ์ข…ํšก๋น„ ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

IP, RTSP ๋ฐ ONVIF ์นด๋ฉ”๋ผ

์ธ์ฆ์„ ํ†ตํ•ด RTSP, RTSPS, ONVIF๋กœ ๋„คํŠธ์›Œํฌ ์นด๋ฉ”๋ผ์— ์—ฐ๊ฒฐํ•˜์„ธ์š”. ๋ฐ์Šคํฌํ†ฑ๊ณผ ๋ชจ๋ฐ”์ผ ๋ชจ๋‘์—์„œ Unity ์”ฌ ์•ˆ์— ๋ผ์ด๋ธŒ IP ์นด๋ฉ”๋ผ ๋Œ€์‹œ๋ณด๋“œ์™€ ๋น„๋””์˜ค ์›”์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Unity์—์„œ MP4๋กœ ๋…นํ™”

๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋„˜์–ด, ์บก์ฒ˜ํ•œ ์นด๋ฉ”๋ผ์™€ ๋งˆ์ดํฌ๋ฅผ ํ•˜๋“œ์›จ์–ด ๊ฐ€์† H.264 / HEVC ์ธ์ฝ”๋”ฉ(NVENC, Quick Sync, MediaCodec, VideoToolbox)์œผ๋กœ MP4์— ๋…นํ™”ํ•˜์„ธ์š”. ๋ชจ๋‘ Unity ๋นŒ๋“œ์—์„œ ์ง์ ‘ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์”ฌ ์–ด๋””์—๋‚˜ ๋ Œ๋”๋ง

๊ฐ ํ”„๋ ˆ์ž„์€ Unity Texture2D์— ์—…๋กœ๋“œ๋˜๋ฏ€๋กœ ๋ผ์ด๋ธŒ ์นด๋ฉ”๋ผ๊ฐ€ UI์—๋งŒ ๊ตญํ•œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. RawImage์— ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜, ํ™”๋ฉด, AR ํ‘œ๋ฉด, ์„ค์น˜๋ฌผ ๋“ฑ ๋ชจ๋“  3D ์˜ค๋ธŒ์ ํŠธ์˜ ๋จธํ‹ฐ๋ฆฌ์–ผ์— ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€์› ํ”Œ๋žซํผ:WindowsAndroidmacOSiOS
ํ™œ์šฉ ๋ถ„์•ผ:AR ์นด๋ฉ”๋ผ ์•ฑIP ์นด๋ฉ”๋ผ ๋Œ€์‹œ๋ณด๋“œ ๋ฐ ๋น„๋””์˜ค ์›”๊ฐ์‹œ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋งํ™”์ƒ ํšŒ์˜๊ต์œก ๋ฐ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์„ค์น˜๋ฌผ

VideoCaptureCoreX๋กœ Unity RawImage์— ์›น์บ  ์บก์ฒ˜ํ•˜๊ธฐ

C#
// The bundled native runtime is configured automatically before the
// first scene loads. Initialize the SDK once in your MonoBehaviour.
VisioForgeEnvironment.InitializeSdk();

// Create the high-level capture engine โ€” no manual pipeline wiring.
_capture = new VideoCaptureCoreX();

// Pick the first camera and microphone.
var cameras = await DeviceEnumerator.Shared.VideoSourcesAsync();
_capture.Video_Source = new VideoCaptureDeviceSourceSettings(cameras[0]);

// RGBA frames are delivered to Unity through OnVideoFrameUnity and
// uploaded into a Texture2D by VisioForgeVideoView (aspect + flip handled).
_capture.OnVideoFrameUnity += _videoView.OnFrameBuffer;

// Optionally record to MP4 while previewing (autostart: true records immediately).
_capture.Outputs_Add(new MP4Output("capture.mp4"), autostart: true);

await _capture.StartAsync();

Unity ์บก์ฒ˜๋Š” VideoCaptureCoreX ์—”์ง„์„ ํ†ตํ•ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. Unity 6(6000.x)์—์„œ ๊ฒ€์ฆ๋˜์—ˆ์œผ๋ฉฐ, .NET Standard 2.1 API ํ˜ธํ™˜์„ฑ ์ˆ˜์ค€์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ ์›น์บ  ์บก์ฒ˜๋Š” Windows์™€ macOS๋ฅผ ์ง€์›ํ•˜๋ฉฐ, RTSP / IP ์นด๋ฉ”๋ผ๋Š” ๋„ค ๊ฐ€์ง€ ํ”Œ๋žซํผ ๋ชจ๋‘์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋„ค ๊ฐ€์ง€ SDK ๋ชจ๋‘ VisioForge.DotNet.Core NuGet๊ณผ ๋™์ผํ•œ SDK ์†Œ์Šค๋กœ ๋นŒ๋“œ๋œ ๋‹จ์ผ ๋ˆ„์  .unitypackage๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ๋นŒ๋“œ ๋‚ ์งœ์™€ NuGet ๋ฒ„์ „์€ ๋ณ„๋„๋กœ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

Unity ๋ฌธ์„œ ๋ณด๊ธฐ โ†’

์ฃผ์š” ๊ธฐ๋Šฅ

์ „๋ฌธ ๋น„๋””์˜ค ์บก์ฒ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ

์ง€์›๋˜๋Š” ์†Œ์Šค

์ง€์›๋˜๋Š” ๋น„๋””์˜ค ์†Œ์Šค

  • โ€ข์›น ์นด๋ฉ”๋ผ(DirectShow, Media Foundation ๋˜๋Š” Linux V4L์„ ํ†ตํ•ด)
  • โ€ขUSB OTG๋ฅผ ํ†ตํ•œ Android USB(UVC) ์นด๋ฉ”๋ผ
  • โ€ขONVIF IP ์นด๋ฉ”๋ผ(PTZ ๋ฐ ๊ธฐํƒ€ API ์ง€์›)
  • โ€ขJPEG/MJPEG, MPEG-4 ๋ฐ H.264 HTTP/RTSP/RTMP IP ์นด๋ฉ”๋ผ/์„œ๋ฒ„
  • โ€ขBlackmagic Decklink ์žฅ์น˜
  • โ€ขํšจ๊ณผ๊ฐ€ ํฌํ•จ๋œ ํ™”๋ฉด ์บก์ฒ˜(Windows/Linux/macOS)
  • โ€ข๋ณ„๋„์˜ ์ฐฝ ์บก์ฒ˜
  • โ€ขNewTek NDI ์žฅ์น˜
  • โ€ข๊ฐ€์ƒ ์นด๋ฉ”๋ผ
  • โ€ขTV ํŠœ๋„ˆ(๋‚ด๋ถ€ MPEG ์ธ์ฝ”๋” ํฌํ•จ/๋ฏธํฌํ•จ)
  • โ€ขFLIR/Teledyne ์นด๋ฉ”๋ผ(USB3 Vision/GigE)
  • โ€ขMicrosoft Kinect/Kinect 2 for Windows
  • โ€ขDirectShow ๊ฐ€์ƒ ๋น„๋””์˜ค ์†Œ์Šค(Adobe Flash, Skype ๋“ฑ์˜ ๋ผ์ด๋ธŒ ๋น„๋””์˜ค ์ž…๋ ฅ)
  • โ€ขUSB ์บก์ฒ˜ ์žฅ์น˜
  • โ€ขPCI ์บก์ฒ˜ ์นด๋“œ
  • โ€ขDV/HDV ์บ ์ฝ”๋”์˜ DV ๋ฐ MPEG(DirectCapture ๊ธฐ์ˆ )
  • โ€ข๋น„๋””์˜ค ์ŠคํŠธ๋ฆผ์œผ๋กœ์„œ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋˜๋Š” HDD์˜ ์ด๋ฏธ์ง€ ๋ฐ ์ด๋ฏธ์ง€ ์‹œํ€€์Šค

์ง€์›๋˜๋Š” ์˜ค๋””์˜ค ์†Œ์Šค

  • โ€ข์˜ค๋””์˜ค ์บก์ฒ˜ ์žฅ์น˜(๋งˆ์ดํฌ)
  • โ€ข๋ฃจํ”„๋ฐฑ ์˜ค๋””์˜ค ์บก์ฒ˜(Windows Vista ์ด์ƒ)
  • โ€ขDirectShow ๊ฐ€์ƒ ์˜ค๋””์˜ค ์†Œ์Šค
  • โ€ข์˜ค๋””์˜ค ์†Œ์Šค๋กœ์„œ์˜ WAV, MP3, AAC, M4A ๋ฐ ๊ธฐํƒ€ ํ˜•์‹

์ถœ๋ ฅ ๋น„๋””์˜ค ํ˜•์‹

  • โ€ขMP4 (H.264/H.265/AAC)
  • โ€ขWMA (Windows Media Audio)
  • โ€ขWebM (VP8/VP9/AV1)
  • โ€ขAVI (MJPEG, DivX, XviD, x264)
  • โ€ขWMV (Windows Media Video)
  • โ€ขMPEG-1/2/4 (VCD/SVCD/DVD ํ”„๋กœํ•„)
  • โ€ขMOV (QuickTime)
  • โ€ขFLV (Flash Video)
  • โ€ขMKV (Matroska)
  • โ€ขMPEG-TS (Transport Stream)
  • โ€ข์‚ฌ์šฉ์ž ์ง€์ • DirectShow ๊ธฐ๋ฐ˜ ํ˜•์‹

์˜ค๋””์˜ค ๋ฐ ์Šค๋ƒ…์ƒท ํ˜•์‹

์ถœ๋ ฅ ์˜ค๋””์˜ค ํ˜•์‹

  • โ€ขWAV (PCM/์••์ถ•)
  • โ€ขWMA (Windows Media Audio)
  • โ€ขM4A (AAC)
  • โ€ขMP3 (LAME ์ธ์ฝ”๋”)
  • โ€ขFLAC (๋ฌด์†์‹ค)
  • โ€ขOGG Vorbis
  • โ€ขOpus
  • โ€ขSpeex

์Šค๋ƒ…์ƒท ํ˜•์‹

  • โ€ขJPEG
  • โ€ขPNG
  • โ€ขBMP
  • โ€ขGIF (์• ๋‹ˆ๋ฉ”์ด์…˜)
  • โ€ขTIFF

๋น„๋””์˜ค ์ฒ˜๋ฆฌ ๋ฐ ํšจ๊ณผ

  • โ€ข์ด๋ฏธ์ง€ ์˜ค๋ฒ„๋ ˆ์ด(์• ๋‹ˆ๋ฉ”์ด์…˜ GIF ์ง€์›)
  • โ€ขํ…์ŠคํŠธ ์˜ค๋ฒ„๋ ˆ์ด(์Šคํฌ๋กค ํ…์ŠคํŠธ)
  • โ€ขํŒฌ/์คŒ ํšจ๊ณผ
  • โ€ข๋ฐ๊ธฐ/๋Œ€๋น„/์ฑ„๋„/์ƒ‰์กฐ
  • โ€ข๋””์ธํ„ฐ๋ ˆ์ด์‹ฑ
  • โ€ข๋…ธ์ด์ฆˆ ์ œ๊ฑฐ ํ•„ํ„ฐ
  • โ€ข๋ชจ๋“  ํ•ด์ƒ๋„๋กœ ํฌ๊ธฐ ์กฐ์ •
  • โ€ขํฌ๋กœ๋งˆํ‚ค(๊ทธ๋ฆฐ ์Šคํฌ๋ฆฐ)
  • โ€ขํŽ˜์ด๋“œ ์ธ/ํŽ˜์ด๋“œ ์•„์›ƒ ํšจ๊ณผ
  • โ€ขํšŒ์ „(๋ชจ๋“  ๊ฐ๋„)
  • โ€ข์ž๋ฅด๊ธฐ
  • โ€ขํƒ€์‚ฌ DirectShow ํ•„ํ„ฐ
  • โ€ข๋ฏธ๋ฆฌ๋ณด๊ธฐ/์ถœ๋ ฅ์„ ์œ„ํ•œ ๋…๋ฆฝ์ ์ธ ํšจ๊ณผ

์˜ค๋””์˜ค ์ฒ˜๋ฆฌ ๋ฐ ํšจ๊ณผ

  • โ€ข๋ณผ๋ฅจ ๋ถ€์Šคํ„ฐ
  • โ€ข์ดํ€„๋ผ์ด์ €
  • โ€ข3D ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ
  • โ€ข์ •๊ทœํ™”
  • โ€ข์ž๋™/์ˆ˜๋™ ๊ฒŒ์ธ ์ œ์–ด
  • โ€ข์—์ฝ” ์บ”์Šฌ๋ ˆ์ด์…˜
  • โ€ข๋…ธ์ด์ฆˆ ์–ต์ œ
  • โ€ข์˜ค๋””์˜ค ๋ฏน์‹ฑ
  • โ€ข๋‹ค์ค‘ ์˜ค๋””์˜ค ํŠธ๋ž™

๋„คํŠธ์›Œํฌ ์ŠคํŠธ๋ฆฌ๋ฐ ํ˜•์‹

  • โ€ขHLS (Android/iOS ํ˜ธํ™˜)
  • โ€ขRTSP ์„œ๋ฒ„
  • โ€ขIIS๋กœ์˜ Smooth Streaming
  • โ€ข๋ฏธ๋””์–ด ์„œ๋ฒ„๋กœ์˜ RTMP(Facebook, YouTube ๋“ฑ)
  • โ€ขSRT (Secure Reliable Transport)
  • โ€ขUDP ์ŠคํŠธ๋ฆฌ๋ฐ
  • โ€ขNewTek NDI

๊ธฐํƒ€ ๊ธฐ๋Šฅ

  • โ€ขAudio/video preview
  • โ€ขTV ํŠœ๋‹
  • โ€ข๋น„๋””์˜ค ์บก์ฒ˜ ์žฅ์น˜ ์ œ์–ด
  • โ€ข๋น„๋””์˜ค ์ž…๋ ฅ(ํฌ๋กœ์Šค๋ฐ” ์ธํ„ฐํŽ˜์ด์Šค)
  • โ€ข๋น„๋””์˜ค ํ˜•์‹ ๊ตฌ์„ฑ
  • โ€ขํ”„๋ ˆ์ž„ ์†๋„ ์ œ์–ด
  • โ€ข๋‹ค์ค‘ ์ž…๋ ฅ ์ง€์›
  • โ€ข์นด๋ฉ”๋ผ ์ œ์–ด(๋ฐ๊ธฐ, ์ฑ„๋„ ๋“ฑ)
  • โ€ข๋ชจ์…˜ ๊ฐ์ง€
  • โ€ข๋ฐ”์ฝ”๋“œ ๋ฆฌ๋”
  • โ€ขOSD(On-Screen Display)
  • โ€ขPicture-In-Picture(PIP)
  • โ€ข์–ผ๊ตด ๊ฐ์ง€ ๋ฐ ๊ฐ์ฒด ์ถ”์ 
  • โ€ข์–ผ๊ตด ์ธ์‹
  • โ€ข๋‹ค์ค‘ ์ถœ๋ ฅ ํ™”๋ฉด ์ง€์›
  • โ€ขํƒ€์ž„์‹œํ”„ํŠธ
  • โ€ขVideo Encryption SDK ์ง€์›
  • โ€ขVirtual Camera SDK ์ถœ๋ ฅ
  • โ€ข์„œ๋น„์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ง€์›
  • โ€ข์˜ค๋””์˜ค/๋น„๋””์˜ค ํŒŒ์ผ ํƒœ๊ทธ ์ง€์›
  • โ€ขmadVR ๋น„๋””์˜ค ๋ Œ๋”๋Ÿฌ
  • โ€ข์ง€์—ฐ ์‹œ๊ฐ„ ๋‹จ์ถ• RTSP/MJPEG ์žฌ์ƒ
  • โ€ขOBS ์ŠคํŠธ๋ฆฌ๋ฐ ์ง€์›

์‚ฌ์šฉ ์‚ฌ๋ก€

๋‹ค์–‘ํ•œ ์‚ฐ์—… ๋ฐ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ๋น„๋””์˜ค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ•

์˜๋ฃŒ ์˜์ƒ

์˜๋ฃŒ ๊ธฐ๊ธฐ ๋น„๋””์˜ค ์ŠคํŠธ๋ฆผ ์บก์ฒ˜ ๋ฐ ์ฒ˜๋ฆฌ, ๋‚ด์‹œ๊ฒฝ ๋…นํ™”, ์ดˆ์ŒํŒŒ ์บก์ฒ˜

๋น„๋””์˜ค ๊ฐ์‹œ

๋‹ค์ค‘ ์นด๋ฉ”๋ผ ๋ชจ๋‹ˆํ„ฐ๋ง, ๋ชจ์…˜ ๊ฐ์ง€ ์•Œ๋ฆผ, ์—ฐ์† ๋…นํ™” ์‹œ์Šคํ…œ

ํ™”๋ฉด ๋…นํ™”

๊ต์œก ๋น„๋””์˜ค, ์†Œํ”„ํŠธ์›จ์–ด ํŠœํ† ๋ฆฌ์–ผ, ์›น์บ  ์˜ค๋ฒ„๋ ˆ์ด๊ฐ€ ํฌํ•จ๋œ ๊ฒŒ์ž„ ํ”Œ๋ ˆ์ด ๋…นํ™”

ํ™”์ƒ ํšŒ์˜

์‹ค์‹œ๊ฐ„ ํ†ต์‹ , ๊ฐ€์ƒ ๋ฐฐ๊ฒฝ, ํ™”๋ฉด ๊ณต์œ  ๊ธฐ๋Šฅ

๋ผ์ด๋ธŒ ์ŠคํŠธ๋ฆฌ๋ฐ

์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์œผ๋กœ ๋ฐฉ์†ก, ์˜ค๋ฒ„๋ ˆ์ด ๋ฐ ํšจ๊ณผ๊ฐ€ ํฌํ•จ๋œ ์ „๋ฌธ ์ŠคํŠธ๋ฆฌ๋ฐ

๋ฏธ๋””์–ด ์ œ์ž‘

์ „๋ฌธ ๋น„๋””์˜ค ์บก์ฒ˜, ๋‹ค์ค‘ ์นด๋ฉ”๋ผ ๋…นํ™”, ํฌ๋กœ๋งˆํ‚ค ์ฒ˜๋ฆฌ

์‰ฌ์šด ํ†ตํ•ฉ

๋ช‡ ์ค„์˜ ์ฝ”๋“œ๋งŒ์œผ๋กœ ์‹œ์ž‘ํ•˜์„ธ์š”

์ฝ”๋“œ ์ƒ˜ํ”Œ

Video Capture SDK์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์„ ๋ณด์—ฌ์ฃผ๋Š” ์‹ค์ œ ์˜ˆ์ œ๋ฅผ ์‚ดํŽด๋ณด์„ธ์š”.

๋น„๋””์˜ค ๋ฏธ๋ฆฌ๋ณด๊ธฐ

C#

์ž๋™ ์žฅ์น˜ ๊ฐ์ง€ ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ๊ฐ„๋‹จํ•œ ์›น์บ  ๋ฏธ๋ฆฌ๋ณด๊ธฐ

// Initialize the X engine before creating the core. Safe to call repeatedly; it runs once.
await VisioForgeX.InitSDKAsync();

// The 30-day trial needs no license certificate. Register one before StartAsync() in a licensed deployment.

// Create VideoCaptureCoreX instance
var videoCapture1 = new VideoCaptureCoreX(VideoView1);

// Default video and audio sources will be used
var videoSourceDevice = (await videoCapture1.Video_SourcesAsync())[0];
videoCapture1.Video_Source = new VideoCaptureDeviceSourceSettings(videoSourceDevice);

var audioSourceDevice = (await videoCapture1.Audio_SourcesAsync())[0];
videoCapture1.Audio_Source = audioSourceDevice.CreateSourceSettingsVC();

// Set default audio sink
videoCapture1.Audio_Play = true;
var audioRendererDevice = (await videoCapture1.Audio_OutputsAsync())[0];
videoCapture1.Audio_OutputDevice = new AudioRendererSettings(audioRendererDevice);

// Start
await videoCapture1.StartAsync();

MP4๋กœ ๋น„๋””์˜ค ์บก์ฒ˜

C#

Premium ๊ธฐ๋Šฅ: ์›น์บ ๊ณผ ๋งˆ์ดํฌ๋ฅผ H.264 MP4๋กœ ์บก์ฒ˜ํ•˜๋ฉฐ ๋น„๋””์˜ค/์˜ค๋””์˜ค๋ฅผ ๋ฏธ๋ฆฌ ๋ด…๋‹ˆ๋‹ค.

// Initialize the X engine before creating the core. Safe to call repeatedly; it runs once.
await VisioForgeX.InitSDKAsync();

// The 30-day trial needs no license certificate. Register one before StartAsync() in a licensed deployment.

// Create VideoCaptureCoreX instance and set VideoView for video rendering
var videoCapture1 = new VideoCaptureCoreX(VideoView1);

// Set default video and audio sources
var videoSourceDevice = (await videoCapture1.Video_SourcesAsync())[0];
videoCapture1.Video_Source = new VideoCaptureDeviceSourceSettings(videoSourceDevice);

var audioSourceDevice = (await videoCapture1.Audio_SourcesAsync())[0];
videoCapture1.Audio_Source = audioSourceDevice.CreateSourceSettingsVC();

// Set default audio sink
var audioRendererDevice = (await videoCapture1.Audio_OutputsAsync())[0];
videoCapture1.Audio_OutputDevice = new AudioRendererSettings(audioRendererDevice);
videoCapture1.Audio_Play = true;

// Configure MP4 output
var filename = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyVideos), "output.mp4");
var mp4Output = new MP4Output(filename);
videoCapture1.Outputs_Add(mp4Output);
videoCapture1.Audio_Record = true;

// Start capture to MP4
await videoCapture1.StartAsync();

IP RTSP ์นด๋ฉ”๋ผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ

C#

CPU/GPU ๋น„๋””์˜ค ๋””์ฝ”๋”ฉ ๋ฐ ์ž๋™ ์ฝ”๋ฑ ๊ฐ์ง€ ๊ธฐ๋Šฅ์ด ์žˆ๋Š” RTSP ์นด๋ฉ”๋ผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ. ONVIF ๊ฒ€์ƒ‰์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ์˜ ๋ชจ๋“  IP ์นด๋ฉ”๋ผ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

// Initialize the X engine before creating the core. Safe to call repeatedly; it runs once.
await VisioForgeX.InitSDKAsync();

// The 30-day trial needs no license certificate. Register one before StartAsync() in a licensed deployment.

// Create VideoCaptureCoreX
var videoCapture1 = new VideoCaptureCoreX(VideoView1);

// Configure RTSP camera source
var rtsp = await RTSPSourceSettings.CreateAsync(new Uri("rtsp://cameraurl"), "username", "password", true);
videoCapture1.Video_Source = rtsp;

// Set audio output device
var audioRendererDevice = (await videoCapture1.Audio_OutputsAsync())[0];
videoCapture1.Audio_OutputDevice = new AudioRendererSettings(audioRendererDevice);

// Start IP preview
await videoCapture1.StartAsync();

ํ™”๋ฉด ์บก์ฒ˜

C#

๋งˆ์šฐ์Šค ์ปค์„œ๊ฐ€ ํฌํ•จ๋œ ํ™”๋ฉด ์บก์ฒ˜๋ฅผ VP9 ๋น„๋””์˜ค ๋ฐ Vorbis ์˜ค๋””์˜ค๊ฐ€ ํฌํ•จ๋œ WebM ํ˜•์‹์œผ๋กœ ์บก์ฒ˜ํ•ฉ๋‹ˆ๋‹ค.

// Create screen capture source
private IScreenCaptureSourceSettings CreateScreenCaptureSource()
{
    var source = new ScreenCaptureDX9SourceSettings();

    source.FrameRate = new VideoFrameRate(25);
    source.Rectangle = new Rect(System.Windows.Forms.Screen.AllScreens[0].Bounds);

    source.CaptureCursor = true;
    source.Monitor = 0;

    return source;
}

private async void StartCapture()
{
    // Initialize the X engine before creating the core. Safe to call repeatedly; it runs once.
    await VisioForgeX.InitSDKAsync();

    // The 30-day trial needs no license certificate. Register one before StartAsync() in a licensed deployment.

    // Create VideoCaptureCoreX object
    var videoCapture1 = new VideoCaptureCoreX(VideoView1);

    // Set screen capture with full screen enabled
    videoCapture1.Video_Source = CreateScreenCaptureSource();

    // Disable audio playback and recording
    videoCapture1.Audio_Play = videoCapture1.Audio_Record = false;

    // Configure WebM output
    var filename = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyVideos), "output.webm");
    var webmOutput = new WebMOutput(filename);
    videoCapture1.Outputs_Add(webmOutput);

    // Start capture to WebM
    await videoCapture1.StartAsync();
}

ํ…์ŠคํŠธ ๋ฐ ์ด๋ฏธ์ง€ ์˜ค๋ฒ„๋ ˆ์ด

C#

๋น„๋””์˜ค ์บก์ฒ˜์— ํ…์ŠคํŠธ ๋ฐ ์ด๋ฏธ์ง€ ์˜ค๋ฒ„๋ ˆ์ด ์ถ”๊ฐ€

// Initialize the X engine before creating the core. Safe to call repeatedly; it runs once.
await VisioForgeX.InitSDKAsync();

// The 30-day trial needs no license certificate. Register one before StartAsync() in a licensed deployment.

// Create VideoCaptureCoreX instance and set VideoView
var videoCapture1 = new VideoCaptureCoreX(VideoView1);

// Set video and audio sources
var videoSourceDevice = (await videoCapture1.Video_SourcesAsync())[0];
videoCapture1.Video_Source = new VideoCaptureDeviceSourceSettings(videoSourceDevice);

var audioSourceDevice = (await videoCapture1.Audio_SourcesAsync())[0];
videoCapture1.Audio_Source = audioSourceDevice.CreateSourceSettingsVC();

// Add image overlay
var imageFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "logo.png");
await videoCapture1.Video_Effects_AddOrUpdateAsync(new ImageOverlayVideoEffect(imageFile) { X = 100, Y = 100 });

// Add text overlay
await videoCapture1.Video_Effects_AddOrUpdateAsync(new TextOverlayVideoEffect() { Text = "Hello World!" });

// Start preview
await videoCapture1.StartAsync();

์•ฑ์„ ์œ„ํ•œ ๊ณ ๊ธ‰ ๋น„๋””์˜ค ๋…นํ™”

๋น„๋””์˜ค ๋…นํ™”๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์›น์บ , IP ์นด๋ฉ”๋ผ ๋˜๋Š” ๋ฐ์Šคํฌํ†ฑ ํ™œ๋™์—์„œ ์˜์ƒ์„ ์บก์ฒ˜, ์ €์žฅ ๋ฐ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ๋ถ„์„, ์•„์นด์ด๋น™ ๋ฐ ์ฝ˜ํ…์ธ  ๊ณต์œ ๋ฅผ ์ง€์›ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ ๋ผ์ด๋ธŒ ์‹œ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‹ค์–‘์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.

๋ผ์ด์„ ์Šค ์„ ํƒ

๋ชจ๋“  ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ์œ ์—ฐํ•œ ๋ผ์ด์„ ์Šค ์˜ต์…˜

์—ฐ๊ฐ„ ๋ผ์ด์„ ์Šค๋Š” 12๊ฐœ์›”๊ฐ„, LifetimeยทTeam ๋ผ์ด์„ ์Šค๋Š” ์ œํ’ˆ ์ˆ˜๋ช… ๋™์•ˆ ์—…๋ฐ์ดํŠธ์™€ ์ด๋ฉ”์ผ ์ง€์›์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค

Standard

โ‚ฌ750ํ‰์ƒ

์ง€๊ธˆ ๊ตฌ๋งค
  • ์ง€์›๋˜๋Š” ์ž…๋ ฅ ์žฅ์น˜ ๋ฐ ๊ธฐํƒ€ ์†Œ์Šค์›น ์นด๋ฉ”๋ผ, TV ํŠœ๋„ˆ ๋ฐ ์บก์ฒ˜ ์นด๋“œ, DV ๋ฐ MPEG ์บ ์ฝ”๋”, ํ™”๋ฉด ์บก์ฒ˜
  • ๋น„๋””์˜ค ๋ฏธ๋ฆฌ๋ณด๊ธฐ
  • ํ”„๋ ˆ์ž„ ๊ทธ๋ž˜๋ฒ„
  • ๋น„๋””์˜ค ์ฒ˜๋ฆฌ
  • ์˜ค๋””์˜ค ์ฒ˜๋ฆฌ
  • HD ๋ฐ 4K ๋น„๋””์˜ค ์ง€์›
  • TV ํŠœ๋‹
  • ํฌ๋กœ๋งˆํ‚ค
  • ๋ชจ์…˜ ๊ฐ์ง€
  • OSD(On-Screen Display)
  • ๋‹ค์ค‘ ์ถœ๋ ฅ ํ™”๋ฉด
  • ์ถœ๋ ฅ ํ˜•์‹AVI, WMV(Windows Media Video), WMA(Windows Media Audio), WAV, MP3, Ogg Vorbis, Speex

Professional

โ‚ฌ1000ํ‰์ƒ

์ง€๊ธˆ ๊ตฌ๋งค
  • ์ง€์›๋˜๋Š” ์ž…๋ ฅ ์žฅ์น˜ ๋ฐ ๊ธฐํƒ€ ์†Œ์Šค+, HTTP/RTSP/ONVIF IP ์นด๋ฉ”๋ผ, UDP, TCP, RTMP ๋ฐ ๊ธฐํƒ€ ๋„คํŠธ์›Œํฌ ์ŠคํŠธ๋ฆผ
  • ๋น„๋””์˜ค ๋ฏธ๋ฆฌ๋ณด๊ธฐ
  • ํ”„๋ ˆ์ž„ ๊ทธ๋ž˜๋ฒ„
  • ๋น„๋””์˜ค ์ฒ˜๋ฆฌ
  • ์˜ค๋””์˜ค ์ฒ˜๋ฆฌ
  • HD ๋ฐ 4K ๋น„๋””์˜ค ์ง€์›
  • TV ํŠœ๋‹
  • WMV ํ˜•์‹์˜ ๋„คํŠธ์›Œํฌ ์ŠคํŠธ๋ฆฌ๋ฐ
  • ํฌ๋กœ๋งˆํ‚ค
  • ๋ชจ์…˜ ๊ฐ์ง€
  • DirectShow ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ ๋น„๋””์˜ค ์ฒ˜๋ฆฌ
  • OSD(On-Screen Display)
  • Picture-in-Picture
  • ์ฆ‰์„์—์„œ ์ถœ๋ ฅ ํŒŒ์ผ ์ด๋ฆ„ ๋ณ€๊ฒฝ
  • ๋‹ค์ค‘ ์ถœ๋ ฅ ํ™”๋ฉด
  • Virtual Camera SDK๋กœ ์ถœ๋ ฅ
  • ์ถœ๋ ฅ ํ˜•์‹+, DV ๋น„๋””์˜ค, DV/MPEG-1/2/4(๋‚ด๋ถ€ MPEG ์ธ์ฝ”๋” ๋˜๋Š” DV/HDV ์บ ์ฝ”๋”๊ฐ€ ์žˆ๋Š” TV ํŠœ๋„ˆ ์‚ฌ์šฉ), FFMPEG๋ฅผ ์‚ฌ์šฉํ•œ Flash Video(FLV), WebM, ์™ธ๋ถ€ DirectShow ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ ์‚ฌ์šฉ์ž ์ง€์ • ์ถœ๋ ฅ ํ˜•์‹

Premium

โ‚ฌ1500ํ‰์ƒ

์ง€๊ธˆ ๊ตฌ๋งค
  • ์ง€์›๋˜๋Š” ์ž…๋ ฅ ์žฅ์น˜ ๋ฐ ๊ธฐํƒ€ ์†Œ์Šค+, Blackmagic Decklink, DVB-T/DVB-C/DVB-S/ATSC ์žฅ์น˜(๋ฒ ํƒ€), Microsoft Kinect for Windows
  • ๋น„๋””์˜ค ๋ฏธ๋ฆฌ๋ณด๊ธฐ
  • ํ”„๋ ˆ์ž„ ๊ทธ๋ž˜๋ฒ„
  • ๋น„๋””์˜ค ์ฒ˜๋ฆฌ
  • ์˜ค๋””์˜ค ์ฒ˜๋ฆฌ
  • HD ๋ฐ 4K ๋น„๋””์˜ค ์ง€์›
  • TV ํŠœ๋‹
  • WMV ํ˜•์‹์˜ ๋„คํŠธ์›Œํฌ ์ŠคํŠธ๋ฆฌ๋ฐ
  • RTMP/RTSP/UDP/NDI๋ฅผ ์‚ฌ์šฉํ•œ ๋„คํŠธ์›Œํฌ ์ŠคํŠธ๋ฆฌ๋ฐ
  • ํฌ๋กœ๋งˆํ‚ค
  • ๋ชจ์…˜ ๊ฐ์ง€
  • DirectShow ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ ๋น„๋””์˜ค ์ฒ˜๋ฆฌ
  • OSD(On-Screen Display)
  • Picture-in-Picture
  • ์ฆ‰์„์—์„œ ์ถœ๋ ฅ ํŒŒ์ผ ์ด๋ฆ„ ๋ณ€๊ฒฝ
  • ๋‹ค์ค‘ ์ถœ๋ ฅ ํ™”๋ฉด
  • GPU ๊ฐ€์† ๋น„๋””์˜ค ํšจ๊ณผ
  • Virtual Camera SDK๋กœ ์ถœ๋ ฅ
  • Video Encryption SDK ์ง€์›
  • ์–ผ๊ตด ์ถ”์ 
  • AI ๊ฐ์ฒด ๊ฐ์ง€
  • AI ๊ตฌ์—ญ ๋ฐ ํŠธ๋ฆฝ์™€์ด์–ด ๋ถ„์„
  • AI ์–ผ๊ตด ์ธ์‹
  • AI OCR ๋ฐ ๋ฒˆํ˜ธํŒ ์ธ์‹
  • AI ์‹ค์‹œ๊ฐ„ ์ž๋ง‰ ๋ฐ ์ „์‚ฌ
  • AI ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ ๋งˆ์Šคํ‚น(์–ผ๊ตด, ๋ฒˆํ˜ธํŒ, ํ…์ŠคํŠธ)
  • AI ๊ฐœ๋ฐฉํ˜• ์–ดํœ˜ ๊ฐ์ง€
  • AI ์‹ค์‹œ๊ฐ„ ์žฅ๋ฉด ์บก์…˜
  • ์ถœ๋ ฅ ํ˜•์‹+, FFMPEG๋ฅผ ์‚ฌ์šฉํ•œ MPEG-1/2/4, ์†Œํ”„ํŠธ์›จ์–ด, Intel QuickSync, Nvidia NVENC/CUDA ๋˜๋Š” AMD Radeon ์ธ์ฝ”๋”๋ฅผ ์‚ฌ์šฉํ•œ MP4(H264/HEVC + AAC)

์—ฐ๊ฐ„ ๋ผ์ด์„ ์Šค๋Š” ์ง€์ •๋œ ๊ฐœ๋ฐœ์ž 1๋ช…์„, LifetimeยทTeam ๋ผ์ด์„ ์Šค๋Š” ํ•œ ๋„์‹œ์˜ ํ•œ ์œ„์น˜์— ์žˆ๋Š” ๊ตฌ๋งค ์กฐ์ง์˜ ๊ฐœ๋ฐœ์ž๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ผ์ด์„ ์Šค ๋ชจ๋‘ ์ด๋ฉ”์ผ ์ง€์›์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
LifetimeยทTeam ๋ผ์ด์„ ์Šค์—๋Š” ์ œํ’ˆ ์ˆ˜๋ช… ๋™์•ˆ ์ฃผ์š” ๋ฐ ๋ถ€ ์—…๋ฐ์ดํŠธ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฐ„ ๋ผ์ด์„ ์Šค์—๋Š” 12๊ฐœ์›” ์—…๋ฐ์ดํŠธ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์†Œ์Šค ์ฝ”๋“œ ๋ผ์ด์„ ์Šค

์ด SDK์˜ ์†Œ์Šค ์ฝ”๋“œ ๋ผ์ด์„ ์Šค๋Š” ์š”์ฒญ ์‹œ ์ด์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๊ฒฉ ๋ฐ ๋ผ์ด์„ ์Šค ์กฐ๊ฑด์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๋ ค๋ฉด ์˜์—…ํŒ€์— ๋ฌธ์˜ํ•˜์„ธ์š”.

์†Œ์Šค ์ฝ”๋“œ ๋ผ์ด์„ ์Šค ์š”์ฒญ

๐Ÿ’ฐ ๋ฒˆ๋“ค ํŒจํ‚ค์ง€๋กœ ๋” ๋งŽ์ด ์ ˆ์•ฝํ•˜์„ธ์š”

์ด ์ œํ’ˆ์€ ๋น„์šฉ ํšจ์œจ์ ์ธ ๋ฒˆ๋“ค ํŒจํ‚ค์ง€์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ์ œํ’ˆ์„ ๋ฐ›๊ณ  ์ตœ๋Œ€ 71% ์ ˆ์•ฝํ•˜์„ธ์š”!

.NET Bundle Professional

์—ฐ๊ฐ„:โ‚ฌ700.00
ํ‰์ƒ:โ‚ฌ1800.00

์ตœ๋Œ€ 71% ์ ˆ์•ฝ

ํฌํ•จ ์‚ฌํ•ญ:

  • โ€ขVideo Capture SDK .NET (Professional)
  • โ€ขMedia Player SDK .NET (Professional)
  • โ€ขVideo Edit SDK .NET (Professional)
  • โ€ขVideo Edit SDK FFmpeg .NET (Professional)
  • โ€ขMedia Blocks SDK .NET

.NET Bundle Premium

์—ฐ๊ฐ„:โ‚ฌ1000.00
ํ‰์ƒ:โ‚ฌ2500.00

์ตœ๋Œ€ 70% ์ ˆ์•ฝ

ํฌํ•จ ์‚ฌํ•ญ:

  • โ€ขVideo Capture SDK .NET (Premium)
  • โ€ขMedia Player SDK .NET (Premium)
  • โ€ขVideo Edit SDK .NET (Premium)
  • โ€ขVideo Edit SDK FFmpeg .NET (Premium)
  • โ€ขMedia Blocks SDK .NET

์‹œ์Šคํ…œ ์š”๊ตฌ ์‚ฌํ•ญ

๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์ตœ์†Œ ์š”๊ตฌ ์‚ฌํ•ญ

์šด์˜ ์ฒด์ œ
  • โ€ขWindows 7 SP1 / 8 / 8.1 / 10 / 11 (32๋น„ํŠธ ๋ฐ 64๋น„ํŠธ)
  • โ€ขWindows Server 2016 ์ด์ƒ
  • โ€ขmacOS 12 ์ด์ƒ
  • โ€ขUbuntu 22.04 ์ด์ƒ
  • โ€ขAndroid 8 ์ด์ƒ
  • โ€ขiOS 11.0 ์ด์ƒ
.NET ํ”„๋ ˆ์ž„์›Œํฌ
  • โ€ข.NET Framework 4.6.1 ์ด์ƒ
  • โ€ข.NET Core 3.1 ์ด์ƒ
  • โ€ข.NET 5/6/7/8/9/10
ํ•˜๋“œ์›จ์–ด ์š”๊ตฌ ์‚ฌํ•ญ
  • โ€ข์ตœ์†Œ 2GB RAM(4GB ์ด์ƒ ๊ถŒ์žฅ)
  • โ€ขSDK์šฉ 500MB ์—ฌ์œ  ๋””์Šคํฌ ๊ณต๊ฐ„
  • โ€ขWindows์šฉ DirectX 9.0c ์ด์ƒ
  • โ€ขOpenGL 2.0 ์ง€์› ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ
๊ฐœ๋ฐœ ๋„๊ตฌ
  • โ€ขVisual Studio 2019 ์ด์ƒ
  • โ€ขVisual Studio Code(C# ํ™•์žฅ ํฌํ•จ)
  • โ€ขJetBrains Rider

๋ฌธ์„œ ๋ฐ ๋ฆฌ์†Œ์Šค

์‹œ์ž‘ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ

AI ์ฝ”๋”ฉ ์—์ด์ „ํŠธ๋กœ ๊ฐœ๋ฐœํ•˜๊ธฐ

Claude Code, Cursor, GitHub Copilot, Gemini CLI, OpenAI Codex ๊ฐ™์€ AI ์—์ด์ „ํŠธ์™€ ํ•จ๊ป˜ ๊ฐœ๋ฐœ ์ค‘์ด์‹ ๊ฐ€์š”? VisioForge๋Š” Video Capture SDK .NET์— ๋Œ€ํ•œ ๊ธฐ๊ณ„ ํŒ๋… ๊ฐ€๋Šฅํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์—์ด์ „ํŠธ๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ†ตํ•ฉ์„ ์ •ํ™•ํžˆ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ NuGet ํŒจํ‚ค์ง€, ๋ผ์ด์„ ์Šค ๋“ฑ๋ก, ํ”„๋กœ์ ํŠธ ์„ค์ •, ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ถ”์ธกํ•ด์•ผ ํ•  ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋ฐฐํฌ ์„ธ๋ถ€ ์‚ฌํ•ญ๊นŒ์ง€.

์‹ค์‹œ๊ฐ„ API ์ฟผ๋ฆฌ ๋ฐ ํด๋ž˜์Šค ์กฐํšŒ
ํ”Œ๋žซํผ๋ณ„ ํ†ตํ•ฉ ํ”Œ๋ ˆ์ด๋ถ
ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋ฐฐํฌ ๋ ˆ์‹œํ”ผ
์ „์ฒด ๋ฌธ์„œ๋ฅผ llms.txt๋กœ

MCP ์„œ๋ฒ„ ์—ฐ๊ฒฐ

MCP

์—์ด์ „ํŠธ์— VisioForge MCP ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ƒํ™ฉ์— ๋งž๋Š” ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. API ๊ฒ€์ƒ‰, ํด๋ž˜์Šค ๋ฐ ๋ฉค๋ฒ„ ์กฐํšŒ, ์ž‘๋™ํ•˜๋Š” ์ฝ”๋“œ ์˜ˆ์ œ ๊ฐ€์ ธ์˜ค๊ธฐ, ๋ฐฐํฌ ๊ฐ€์ด๋“œ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์—๋””ํ„ฐ ์•ˆ์—์„œ ๋ฐ”๋กœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Claude Code

claude mcp add --transport http visioforge-sdk https://mcp.visioforge.com/mcp

VS Code (.vscode/mcp.json)

{ "servers": { "visioforge-sdk": { "type": "http", "url": "https://mcp.visioforge.com/mcp" } } }
MCP ์„œ๋ฒ„ ์‚ฌ์šฉ ๊ฐ€์ด๋“œ

Agent Skill ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

Agent Skills

SDK์™€ ํ”Œ๋žซํผ ์กฐํ•ฉ๋งˆ๋‹ค ๋‹ค์šด๋กœ๋“œ ๊ฐ€๋Šฅํ•œ ์Šคํ‚ฌ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Video Capture SDK .NET์˜ ๊ฒฝ์šฐ ํ”Œ๋žซํผ๋ณ„๋กœ ๋ฐ”๋กœ ์“ธ ์ˆ˜ ์žˆ๋Š” SKILL.md(ํ•„์š”ํ•œ NuGet ํŒจํ‚ค์ง€, ๋ผ์ด์„ ์Šค ์ฝ”๋“œ, csproj ์„ค์ •, ํ”ํ•œ ํ•จ์ •)์™€ ์—์ด์ „ํŠธ๊ฐ€ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘๋™ํ•˜๋Š” ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ๊ฐ€ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. Claude Code, Cursor, OpenAI Codex, Gemini CLI ๋“ฑ 30๊ฐœ ์ด์ƒ์˜ ์—์ด์ „ํŠธ์™€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค(Cloudflare Agent Skills RFC).

์—์ด์ „ํŠธ์— ์Šคํ‚ฌ ์ธ๋ฑ์Šค๋ฅผ ์ง€์ •

https://www.visioforge.com/.well-known/agent-skills/index.json
์Šคํ‚ฌ ๋ชฉ๋ก๊ณผ ๋„๊ตฌ๋ณ„ ์„ค์ • ๋ณด๊ธฐ

์ „์ฒด ๋ฌธ์„œ๋ฅผ ์—์ด์ „ํŠธ์— ๋„˜๊ธฐ๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? ์ผ๋ฐ˜ ๋งˆํฌ๋‹ค์šด์œผ๋กœ๋„ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค: /llms.txt ยท /llms-full.txt

์˜ค๋Š˜ ๋ฌด๋ฃŒ ํ‰๊ฐ€ํŒ์„ ์‹œ์ž‘ํ•˜์„ธ์š”

๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํ‰๊ฐ€ํŒ์€ 30์ผ ๋™์•ˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SDK ์—”์ง„๊ณผ ์ถœ๋ ฅ์— ๋”ฐ๋ผ ์›Œํ„ฐ๋งˆํฌ ๋˜๋Š” ๋ฏธ๋“ฑ๋ก ์•Œ๋ฆผ์ด ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

C#์—์„œ ์›น์บ  ๋น„๋””์˜ค๋ฅผ ์บก์ฒ˜ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”?

VisioForge.DotNet.VideoCapture NuGet ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์ž‘ ์‹œ await VisioForgeX.InitSDKAsync()๋ฅผ ํ•œ ๋ฒˆ ํ˜ธ์ถœํ•œ ๋‹ค์Œ VideoCaptureCoreX ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์›น์บ  ์†Œ์Šค๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. StartAsync()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋˜๋Š” ์บก์ฒ˜๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. 30์ผ ํ‰๊ฐ€ํŒ์—๋Š” ๋ผ์ด์„ ์Šค ์ธ์ฆ์„œ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ผ์ด์„ ์Šค ์•ฑ์„ ๋ฐฐํฌํ•  ๋•Œ ๋“ฑ๋กํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ฐ์Šคํฌํ†ฑ ํ™”๋ฉด์„ MP4๋กœ ๋…นํ™”ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

๋„ค. ๋น„๋””์˜ค ์†Œ์Šค๋ฅผ Screen์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ์บก์ฒ˜ ์˜์—ญ(์ „์ฒด ํ™”๋ฉด ๋˜๋Š” ํŠน์ • ์˜์—ญ)์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. SDK๋Š” ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ํ”„๋ ˆ์ž„ ๋ ˆ์ดํŠธ, ๋น„ํŠธ๋ ˆ์ดํŠธ, ์‹œ์Šคํ…œ ์ถœ๋ ฅ ๋˜๋Š” ๋งˆ์ดํฌ์—์„œ์˜ ์˜ค๋””์˜ค ์บก์ฒ˜๋ฅผ ์ง€์›ํ•˜๋Š” ํ•˜๋“œ์›จ์–ด ๊ฐ€์† H.264/H.265 MP4 ์ธ์ฝ”๋”ฉ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

SDK๊ฐ€ RTSP ๋ฐ ONVIF๋ฅผ ํ†ตํ•œ IP ์นด๋ฉ”๋ผ ์บก์ฒ˜๋ฅผ ์ง€์›ํ•˜๋‚˜์š”?

๋„ค. SDK๋Š” RTSP, ONVIF, HTTP MJPEG ๋ฐ ๊ธฐํƒ€ IP ์นด๋ฉ”๋ผ ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ONVIF ์นด๋ฉ”๋ผ์˜ ๊ฒฝ์šฐ PTZ ์ œ์–ด, ์žฅ์น˜ ๊ฒ€์ƒ‰ ๋ฐ ๊ตฌ์„ฑ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ ์ŠคํŠธ๋ฆผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ, ํŒŒ์ผ ๋…นํ™” ๋˜๋Š” ์‹ค์‹œ๊ฐ„ ํ”„๋ ˆ์ž„ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค UI ํ”„๋ ˆ์ž„์›Œํฌ์™€ ํ”Œ๋žซํผ์ด ์ง€์›๋˜๋‚˜์š”?

SDK๋Š” Windows์—์„œ WinForms, WPF, MAUI, Uno Platform, Avalonia๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋นŒ๋“œ๋Š” macOS, Linux, iOS, Android์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. .NET Framework 4.6.1+์™€ .NET 6/8/9+ ๋ชจ๋‘ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

ํ•˜๋“œ์›จ์–ด ๊ฐ€์† ์ธ์ฝ”๋”ฉ์ด ์ง€์›๋˜๋‚˜์š”?

๋„ค. SDK๋Š” NVIDIA NVENC, Intel Quick Sync Video, AMD AMF๋ฅผ ํ†ตํ•œ GPU ๊ฐ€์† ์ธ์ฝ”๋”ฉ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์บก์ฒ˜ ์ค‘ CPU ์‚ฌ์šฉ๋Ÿ‰์ด ํฌ๊ฒŒ ๊ฐ์†Œํ•˜๋ฉฐ 4K๋ฅผ ํฌํ•จํ•œ ๊ณ ํ•ด์ƒ๋„์—์„œ ์‹ค์‹œ๊ฐ„ ๋…นํ™”๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

GigE Vision ๋ฐ USB3 Vision ์นด๋ฉ”๋ผ์—์„œ ์บก์ฒ˜ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

๋„ค. SDK๋Š” GenICam ํ‘œ์ค€์„ ํ†ตํ•œ GigE Vision ๋ฐ USB3 Vision ์‚ฐ์—…์šฉ ์นด๋ฉ”๋ผ์˜ ๊ธฐ๋ณธ ์ง€์›์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์นด๋ฉ”๋ผ ๋งค๊ฐœ๋ณ€์ˆ˜, ํŠธ๋ฆฌ๊ฑฐ ๋ชจ๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ๋จธ์‹  ๋น„์ „ ๋ฐ ๊ฒ€์‚ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ๊ณ ํ•ด์ƒ๋„ ํ”„๋ ˆ์ž„์„ ์บก์ฒ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Unity์—์„œ ์›น์บ ์ด๋‚˜ IP ์นด๋ฉ”๋ผ๋ฅผ ์บก์ฒ˜ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

๋„ค. Video Capture SDK .NET์€ ๋ฐ”๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” .unitypackage๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. VideoCaptureCoreX ์—”์ง„์€ ๋กœ์ปฌ ์›น์บ ๊ณผ ๋งˆ์ดํฌ๋ฅผ ์บก์ฒ˜ํ•˜๊ณ  IP / RTSP / ONVIF ์นด๋ฉ”๋ผ์— ์—ฐ๊ฒฐํ•˜์—ฌ ๋ผ์ด๋ธŒ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ Unity Texture2D์— ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ ์›น์บ  ์บก์ฒ˜๋Š” Windows์™€ macOS๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋ฉฐ, RTSP / IP ์นด๋ฉ”๋ผ๋Š” Windows, Android, macOS, iOS์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

Unity ์•ฑ์—์„œ ๋™์˜์ƒ์„ MP4๋กœ ๋…นํ™”ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

๋„ค. ๋ผ์ด๋ธŒ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋„˜์–ด, VideoCaptureCoreX๋Š” ์บก์ฒ˜ํ•œ ์นด๋ฉ”๋ผ์™€ ๋งˆ์ดํฌ๋ฅผ ํ•˜๋“œ์›จ์–ด ๊ฐ€์† H.264 / HEVC ์ธ์ฝ”๋”ฉ(Windows์˜ NVENC ๋ฐ Quick Sync, Android์˜ MediaCodec, macOS / iOS์˜ VideoToolbox)์œผ๋กœ MP4์— ๋…นํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋‘ Unity ๋นŒ๋“œ ์•ˆ์—์„œ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Video Capture SDK๊ฐ€ ๋ผ์ด๋ธŒ ์›น์บ ์ด๋‚˜ IP ์นด๋ฉ”๋ผ์—์„œ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง€ํ•˜๊ฑฐ๋‚˜ ์–ผ๊ตด์„ ์ธ์‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋„ค. StartAsync ์ด์ „์— YOLOObjectDetectorBlock, ObjectAnalyticsBlock ๋˜๋Š” FaceRecognitionBlock์„ VideoCaptureCoreX.Video_Processing_AddBlock์œผ๋กœ ๋“ฑ๋กํ•˜์„ธ์š”. ๊ฐ์ง€์™€ ์ธ์‹์€ ์บก์ฒ˜๋œ ๋ชจ๋“  ํ”„๋ ˆ์ž„์—์„œ ONNX Runtime์„ ํ†ตํ•ด ์˜จ๋””๋ฐ”์ด์Šค๋กœ ์‹คํ–‰๋˜๋ฉฐ, ๊ฒฐ๊ณผ๋Š” ๋ธ”๋ก ์ž์ฒด์˜ ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋˜๊ณ  ์„ ํƒ์ ์œผ๋กœ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์™€ ๋…นํ™”์— ์˜ค๋ฒ„๋ ˆ์ด๊ฐ€ ๊ทธ๋ ค์ง‘๋‹ˆ๋‹ค.

๋น„๋””์˜ค ๋…นํ™” ์ค‘์— ์‹ค์‹œ๊ฐ„ ์ž๋ง‰์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋„ค. StartAsync ์ด์ „์— SpeechToTextBlock์„ VideoCaptureCoreX.Audio_Processing_AddBlock์œผ๋กœ ๋“ฑ๋กํ•˜์„ธ์š”. Whisper์™€ Silero VAD๋กœ ๋งˆ์ดํฌ๋ฅผ ๋กœ์ปฌ์—์„œ ์ „์‚ฌํ•˜๋ฉฐ, ์‹ค์‹œ๊ฐ„ ์ž๋ง‰์„ ๋ Œ๋”๋งํ•˜๊ฑฐ๋‚˜ ๋…นํ™”์™€ ํ•จ๊ป˜ SRT/VTT ํŒŒ์ผ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.