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 ๊ตฌ์กฐ
์ด SDK๋ 10๊ฐ ์ด์์ ๋น๋์ค ๋ฐ ์ค๋์ค ์ ๋ ฅ ์์ค์ ๋์ ํธํ์ฑ์ ์๋ํ๋ฉฐ 20๊ฐ ์ด์์ ์ถ๋ ฅ ํ์์ ์ง์ํฉ๋๋ค. ์ ๋ ฅ ๋ฐ ์ถ๋ ฅ ๊ตฌ์ฑ์ ์ํ ๊ด๋ฒ์ํ ํ๋์จ์ด ์ต์ ์ ์์ฉํ์ฌ ๊ฐ๋ฐ์์๊ฒ ์ ์ฐ์ฑ์ ์ ๊ณตํฉ๋๋ค. SDK๋ ๋น๋์ค ๋ฐ ์ค๋์ค ์ฝํ ์ธ ๋ฅผ ๋ชจ๋ ์ฒ๋ฆฌํ์ฌ ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ํ์ผ์ ์ ์ฅํ๊ฑฐ๋ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ํตํด ์คํธ๋ฆฌ๋ฐํ ์ ์์ต๋๋ค.
๊ฐ๋ฐ์๋ฅผ ์ํ ๋น๋์ค ์บก์ฒ ๋๊ตฌ
๋น๋์ค ์บก์ฒ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ง์ถคํ ์ ํ๋ฆฌ์ผ์ด์ ์์ USB ์น์บ , IP ์นด๋ฉ๋ผ(RTSP ๋ฐ ONVIF), ๋ฐ์คํฌํฑ ํ๋ฉด, Blackmagic Decklink ์ฅ์น๋ก๋ถํฐ ๋ นํํ ์ ์์ต๋๋ค. ๋ด์ฅ๋ ์ธ์ฝ๋ฉ ๊ธฐ๋ฅ์ ์์์ MP4, WebM, AVI์ ๊ฐ์ ํ์์ผ๋ก ์ ์ฅํ๋ฉฐ, ์ฅ์น ์ด๊ฑฐ, ํ์ ์ ํ, ์ค๋์ค ์์ค ๊ด๋ฆฌ๋ SDK๊ฐ ์ฒ๋ฆฌํ๋ฏ๋ก ๊ฐ๋ฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ์ง์คํ ์ ์์ต๋๋ค.
๋น๋์ค ์บก์ฒ ํ์ดํ๋ผ์ธ
๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋๋ ์บก์ฒ ๋จ๊ณ์์ ๋น๋์ค ๋ฐ ์ค๋์ค ์คํธ๋ฆผ์ ๋ค์ํ ํจ๊ณผ๋ก ์ฒ๋ฆฌ๋ ์ ์์ต๋๋ค. ๊ทธ ํ ์ด๋ฌํ ์คํธ๋ฆผ์ ๋ถํ ๋์ด ์ถ๊ฐ ์ฒ๋ฆฌ๋ฅผ ์ํด ์ธ์ฝ๋ ๋ฐ ์ค๋์ค/๋น๋์ค ๋ ๋๋ฌ๋ก ์ ๋ฌ๋ฉ๋๋ค.
์ถ๋ ฅ ํ์
์ด SDK๋ MP4(๋น๋์ค์ฉ H264/HEVC ๋ฐ ์ค๋์ค์ฉ AAC ์ฌ์ฉ), WebM(๋น๋์ค์ฉ VP8/VP9/AV1 ๋ฐ ์ค๋์ค์ฉ Vorbis ๋๋ OPUS ์ฌ์ฉ), WMV, MP3, JPEG, GIF ๋ฐ PNG์ ๊ฐ์ ๋ค์ํ ์ธ๊ธฐ ๋น๋์ค, ์ค๋์ค ๋ฐ ์ด๋ฏธ์ง ํ์๊ณผ ์ฝ๋ฑ์ ์ง์ํฉ๋๋ค.
๋น๋์ค ์ฒ๋ฆฌ
ํ ์คํธ, ์ด๋ฏธ์ง ๋๋ GIF ๋ก๊ณ ๋ฅผ ์ถ๊ฐํ๊ณ , ๋ฐ๊ธฐ, ๋๋น, ์ฑ๋ ๋๋ ์์กฐ๋ฅผ ์กฐ์ ํ๊ณ , ์ฝํ ์ธ ํฌ๊ธฐ๋ฅผ ์กฐ์ , ์๋ฅด๊ธฐ ๋๋ ํ์ ํ๊ณ , ํฌ๋ก๋งํค ๋๋ ๋ค์ํ ๋น๋์ค ํจ๊ณผ๋ฅผ ์ ์ฉํ์ฌ ์ฝํ ์ธ ๋ฅผ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์ค๋์ค ์ฒ๋ฆฌ
์ ํ๋ฆฌ์ผ์ด์ ์ ์ดํ๋ผ์ด์ ๋ฅผ ํตํฉํ์ฌ ์ฌ์ฉ์๊ฐ ์ค๋์ค ๊ฒฝํ์ ๋ฏธ์ธ ์กฐ์ ํ ์ ์๋๋ก ํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ํตํด ๊ณ ์, ์ค์, ์ ์๊ณผ ๊ฐ์ ํน์ ์ค๋์ค ์ฃผํ์๋ฅผ ์กฐ์ ํ์ฌ ์ํ๋ ์ฌ์ด๋ ํ๋กํ์ ์ป์ ์ ์์ต๋๋ค. ๋ํ ์ฌ์ฉ์๋ ์ค๋์ค ๋ ๋ฒจ์ ์ ๊ทํํ๊ฑฐ๋ ๋ณผ๋ฅจ์ ์ฆํญํ์ฌ ์ค๋์ค ์ถ๋ ฅ์ ์ ๋ฐํ๊ฒ ์ ์ดํ ์ ์์ต๋๋ค. ์ถ๊ฐ ์ฌ์ฉ์ ์ง์ ์ ์ํด ๋ค๋ฅธ ๋ง์ ์ค๋์ค ํจ๊ณผ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ค์น
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 ๋ฑ
ํ๋ซํผ ์ง์
์ค์๊ฐ 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 ์ค๋ธ์ ํธ์ ๋จธํฐ๋ฆฌ์ผ์ ๋งคํํ ์ ์์ต๋๋ค.
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
์ต๋ 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
์ต๋ 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
์์คํ ์๊ตฌ ์ฌํญ
๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ํ ์ต์ ์๊ตฌ ์ฌํญ
| ์ด์ ์ฒด์ |
|
| .NET ํ๋ ์์ํฌ |
|
| ํ๋์จ์ด ์๊ตฌ ์ฌํญ |
|
| ๊ฐ๋ฐ ๋๊ตฌ |
|
๋ฌธ์ ๋ฐ ๋ฆฌ์์ค
์์ํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๊ฒ
AI ์ฝ๋ฉ ์์ด์ ํธ๋ก ๊ฐ๋ฐํ๊ธฐ
Claude Code, Cursor, GitHub Copilot, Gemini CLI, OpenAI Codex ๊ฐ์ AI ์์ด์ ํธ์ ํจ๊ป ๊ฐ๋ฐ ์ค์ด์ ๊ฐ์? VisioForge๋ Video Capture SDK .NET์ ๋ํ ๊ธฐ๊ณ ํ๋ ๊ฐ๋ฅํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ฏ๋ก ์์ด์ ํธ๊ฐ ์ฒ์๋ถํฐ ํตํฉ์ ์ ํํ ์ฒ๋ฆฌํฉ๋๋ค. ์ฌ๋ฐ๋ฅธ NuGet ํจํค์ง, ๋ผ์ด์ ์ค ๋ฑ๋ก, ํ๋ก์ ํธ ์ค์ , ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ์ถ์ธกํด์ผ ํ ํฌ๋ก์ค ํ๋ซํผ ๋ฐฐํฌ ์ธ๋ถ ์ฌํญ๊น์ง.
MCP ์๋ฒ ์ฐ๊ฒฐ
MCP์์ด์ ํธ์ VisioForge MCP ์๋ฒ๋ฅผ ์ถ๊ฐํ๋ฉด ์ํฉ์ ๋ง๋ ๋์์ ๋ฐ์ ์ ์์ต๋๋ค. API ๊ฒ์, ํด๋์ค ๋ฐ ๋ฉค๋ฒ ์กฐํ, ์๋ํ๋ ์ฝ๋ ์์ ๊ฐ์ ธ์ค๊ธฐ, ๋ฐฐํฌ ๊ฐ์ด๋ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์๋ํฐ ์์์ ๋ฐ๋ก ํ ์ ์์ต๋๋ค.
Claude Code
claude mcp add --transport http visioforge-sdk https://mcp.visioforge.com/mcpVS Code (.vscode/mcp.json)
{
"servers": {
"visioforge-sdk": {
"type": "http",
"url": "https://mcp.visioforge.com/mcp"
}
}
}Agent Skill ๋ถ๋ฌ์ค๊ธฐ
Agent SkillsSDK์ ํ๋ซํผ ์กฐํฉ๋ง๋ค ๋ค์ด๋ก๋ ๊ฐ๋ฅํ ์คํฌ์ ์ ๊ณตํฉ๋๋ค. 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 ํ์ผ์ ์์ฑํ ์ ์์ต๋๋ค.
