Media Blocks SDK .NET
Media Blocks SDK .NET으로 강력한 멀티미디어 애플리케이션을 쉽고 유연하게 만드세요. 이 모듈식 툴킷을 사용하면 시각적 생성자(카메라 → 코덱 → 출력)처럼 복잡한 비디오 워크플로를 구축할 수 있습니다. MP4, MKV 및 AVI로의 녹화뿐만 아니라 HLS, RTMP 및 RTSP를 통한 스트리밍을 지원하며 색상 보정, 디인터레이싱, 워터마크, 화면 캡처 및 오디오 처리를 포함한 풍부한 효과 세트를 제공합니다. 내장된 컴퓨터 비전, QR 코드 인식, 얼굴 추적 및 Blackmagic 및 ONVIF 장치에 대한 완벽한 지원을 통해 모든 프로젝트에 전문가급 기능을 제공합니다. SDK는 WinForms, WPF, MAUI, Xamarin 및 Avalonia와 원활하게 작동하므로 데스크톱 및 모바일 앱에 고급 미디어 기능을 쉽게 통합할 수 있습니다.
설치
NuGet을 통한 빠른 설치
패키지 관리자 콘솔을 사용하여 프로젝트에 SDK를 직접 설치하세요:
Install-Package VisioForge.DotNet.MediaBlocks또는 Visual Studio의 NuGet 패키지 관리자에서 VisioForge.DotNet.MediaBlocks 를 검색하세요. 설치 가이드 보기 →
주요 이점
모듈식 아키텍처
사용자 지정 미디어 파이프라인을 만들기 위해 빌딩 블록처럼 연결되는 200개 이상의 처리 블록
크로스 플랫폼
모든 주요 .NET UI 프레임워크와 함께 Windows, macOS, Linux, Android 및 iOS에서 작동
하드웨어 가속
최대 성능을 위한 NVIDIA, Intel 및 AMD 지원을 통한 GPU 가속 인코딩/디코딩
파이프라인 예제
// Create MediaBlocks pipeline
_pipeline = new MediaBlocksPipeline();
// Add file source
var fileSourceSettings = await UniversalSourceSettings.CreateAsync("video.mp4");
var videoStreamAvailable = fileSourceSettings.GetInfo().VideoStreams.Count > 0;
var audioStreamAvailable = fileSourceSettings.GetInfo().AudioStreams.Count > 0;
var fileSource = new UniversalSourceBlock(fileSourceSettings);
// Add video renderer
if (videoStreamAvailable)
{
var videoRenderer = new VideoRendererBlock(_pipeline, VideoView1);
_pipeline.Connect(fileSource, videoRenderer);
}
// Add audio output
if (audioStreamAvailable)
{
var audioOutputDevice = (await DeviceEnumerator.Shared.AudioOutputsAsync(
AudioOutputDeviceAPI.DirectSound))[0];
var audioOutput = new AudioRendererBlock(
new AudioRendererSettings(audioOutputDevice));
_pipeline.Connect(fileSource, audioOutput);
}
// Start playback
await _pipeline.StartAsync();간단한 플레이어
간단한 플레이어 파이프라인은 UniversalSourceBlock을 사용하여 소스 파일을 읽고 디코딩하고, VideoRendererBlock을 사용하여 비디오를 표시하고, AudioRendererBlock을 사용하여 오디오를 재생합니다.
대화형 파이프라인 시각화
Loading pipeline diagram...
고급 플레이어
고급 플레이어 파이프라인에는 파일 또는 스트림 디코딩을 위한 UniversalSourceBlock, 비디오 및 오디오 렌더러, 효과 처리 블록이 포함됩니다.
// Create MediaBlocks pipeline
_pipeline = new MediaBlocksPipeline();
// Add file source
var fileSourceSettings = await UniversalSourceSettings.CreateAsync(edFilename.Text);
var videoStreamAvailable = fileSourceSettings.GetInfo().VideoStreams.Count > 0;
var audioStreamAvailable = fileSourceSettings.GetInfo().AudioStreams.Count > 0;
var fileSource = new UniversalSourceBlock(fileSourceSettings);
// Add video renderer, text overlay and image overlay
if (videoStreamAvailable)
{
var videoRenderer = new VideoRendererBlock(_pipeline, VideoView1);
var textOverlay = new TextOverlayBlock(new TextOverlaySettings("Hello world!"));
var imageOverlay = new ImageOverlayBlock(new ImageOverlaySettings("logo.png"));
_pipeline.Connect(fileSource, textOverlay);
_pipeline.Connect(textOverlay, imageOverlay);
_pipeline.Connect(imageOverlay, videoRenderer);
}
// Add audio output and equalizer
if (audioStreamAvailable)
{
var audioOutputDevice = (await DeviceEnumerator.Shared.AudioOutputsAsync(AudioOutputDeviceAPI.DirectSound))[0];
var audioOutput = new AudioRendererBlock(new AudioRendererSettings(audioOutputDevice));
var equalizer = new EqualizerParametricBlock();
// set some equalizer settings
_pipeline.Connect(fileSource, equalizer);
_pipeline.Connect(equalizer, audioOutput);
}
// Start playback
await _pipeline.StartAsync();효과가 포함된 고급 플레이어 파이프라인
Loading pipeline diagram...
// Create MediaBlocksPipeline object
_pipeline = new MediaBlocksPipeline();
// Add default video and audio sources
var videoSources = (await DeviceEnumerator.Shared.VideoSourcesAsync()).ToList();
var videoSource = new SystemVideoSourceBlock(new VideoCaptureDeviceSourceSettings(
videoSources.Find(x => x.Name.Contains("920"))));
var audioSources = (await DeviceEnumerator.Shared.AudioSourcesAsync()).ToList();
var audioSource = new SystemAudioSourceBlock(audioSources[0].CreateSourceSettings());
// Add video renderer
var videoRenderer = new VideoRendererBlock(_pipeline, videoView: VideoView1);
// Add audio renderer
var audioRenderers = (await DeviceEnumerator.Shared.AudioOutputsAsync()).ToList();
var audioRenderer = new AudioRendererBlock(new AudioRendererSettings(audioRenderers[0]));
// Connect everything
_pipeline.Connect(videoSource, videoRenderer);
_pipeline.Connect(audioSource, audioRenderer);
// Start preview
await _pipeline.StartAsync();카메라 미리보기
카메라/마이크 간단한 미리보기 파이프라인에는 장치 소스 블록과 비디오/오디오 렌더러 블록이 포함되어 있습니다.
기본 장치가 사용됩니다.
카메라 미리보기 파이프라인
Loading pipeline diagram...
RTSP 미리보기
RTSP 소스 블록(내부 디코더 포함), 비디오 및 오디오 렌더러를 포함하는 RTSP 미리보기 파이프라인입니다.
// Create Media Blocks pipeline
_pipeline = new MediaBlocksPipeline();
// Create video renderer
var videoRenderer = new VideoRendererBlock(_pipeline, VideoView1);
// Add RTSP camera source
var rtsp = await RTSPSourceSettings.CreateAsync(new Uri(edURL.Text),
edLogin.Text, edPassword.Text, audioEnabled: cbAudioStream.Checked);
var rtspSource = new RTSPSourceBlock(rtsp);
_pipeline.Connect(rtspSource, videoRenderer);
// Add audio output (if required)
if (cbAudioStream.Checked && rtsp.IsAudioAvailable())
{
var audioOutputDevice = (await DeviceEnumerator.Shared.AudioOutputsAsync(
AudioOutputDeviceAPI.DirectSound))[0];
var audioOutput = new AudioRendererBlock(new AudioRendererSettings(audioOutputDevice));
_pipeline.Connect(rtspSource, audioOutput);
}
// Start IP camera preview
await _pipeline.StartAsync();RTSP 스트림 파이프라인
Loading pipeline diagram...
// Create the pipeline
_pipeline = new MediaBlocksPipeline();
// Add video and audio sources
var videoSources = (await DeviceEnumerator.Shared.VideoSourcesAsync()).ToList();
var videoSource = new SystemVideoSourceBlock(new VideoCaptureDeviceSourceSettings(videoSources[0]));
var audioSources = (await DeviceEnumerator.Shared.AudioSourcesAsync()).ToList();
var audioSource = new SystemAudioSourceBlock(audioSources[0].CreateSourceSettings());
// Add video renderer and specify VideoView control
var videoRenderer = new VideoRendererBlock(_pipeline, videoView: VideoView1);
// Add audio renderer
var audioRenderers = (await DeviceEnumerator.Shared.AudioOutputsAsync()).ToList();
var audioRenderer = new AudioRendererBlock(new AudioRendererSettings(audioRenderers[0]));
// Configure MP4 output
var output = new MP4OutputBlock(Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.MyVideos), "output.mp4"));
// Add video and audio tees
var videoTee = new TeeBlock(2, MediaBlockPadMediaType.Video);
var audioTee = new TeeBlock(2, MediaBlockPadMediaType.Audio);
// Connect everything
_pipeline.Connect(videoSource, videoTee);
_pipeline.Connect(audioSource, audioTee);
_pipeline.Connect(videoTee, videoRenderer);
_pipeline.Connect(audioTee, audioRenderer);
_pipeline.Connect(videoTee, output);
_pipeline.Connect(audioTee, output);
// Start MP4 recording
await _pipeline.StartAsync();미리보기가 포함된 캡처
캡처 파이프라인에는 비디오 및 오디오 스트림을 분할하는 데 사용되는 두 개의 티 블록이 있어 비디오 캡처와 함께 비디오/오디오 미리보기를 허용합니다.
미리보기가 포함된 캡처 파이프라인
Loading pipeline diagram...
VisioForge Media Blocks SDK .Net 주요 기능은 다음과 같습니다:
핵심 기능
- • 오디오/비디오 미리보기
- • 다양한 형식으로 비디오 및 오디오 캡처
- • Bitmap 클래스, BMP, JPEG 및 PNG 파일로 프레임 캡처
- • 비디오 처리 및 효과(CPU/GPU)
- • 비디오 캡처 장치 제어
- • 네트워크 스트리밍
- • 모션 감지
- • 사용자 지정 인터페이스 지원
- • 컴퓨터 비전 API
- • PIP(Picture-In-Picture)
- • 화면 캡처/창 캡처
- • 얼굴 감지 및 객체 추적
- • 다중 출력 화면 지원
- • 스피커에서 오디오 캡처
- • 오디오/비디오 파일 태그 읽기 및 쓰기 지원
지원되는 입력 장치
- • USB 웹 카메라 및 캡처 장치(4K 포함)
- • JPEG/MJPEG, MPEG-4 및 H.264 HTTP/RTSP/RTMP IP 카메라/서버
- • DV 및 HDV MPEG-2 캠코더
- • PCI 캡처 카드
- • TV 튜너(내부 MPEG 인코더 포함/미포함)
- • IP 카메라용 HD 형식 지원
- • PTZ 지원 ONVIF IP 카메라
- • Blackmagic Decklink 장치
- • 오디오 캡처 장치 및 사운드 카드
- • ASIO 장치
전문 하드웨어
- • Blackmagic Decklink 입력/출력 지원
- • FLIR/Teledyne 카메라(USB3Vision/GigE)
- • Basler 카메라(USB3Vision/GigE)
- • DV 및 HDV MPEG-2 캠코더
- • PCI 캡처 카드
- • TV 튜너(MPEG 인코더 포함/미포함)
- • PTZ 지원 ONVIF IP 카메라
- • ASIO 장치
소스
- • Allied Vision 카메라
- • 애니메이션 GIF
- • Basler 카메라(USB3Vision/GigE)
- • CDG 노래방
- • 폴백 스위치
- • GenICam(산업용 카메라)
- • HTTP
- • HTTP MJPEG
- • 이미지 시퀀스
- • 로컬 파일
- • 메모리 버퍼
- • NDI
- • PulseAudio
- • Raspberry Pi 카메라
- • RTMP
- • RTSP
- • RTSP RAW
- • 화면 캡처
- • SRT
- • 시스템 오디오
- • 시스템 비디오
- • 테스트 신호
- • UDP/RTP
- • URI(파일/네트워크)
오디오 처리
- • 증폭
- • 밸런스
- • 샘플 형식 변환기
- • 로드 노멀라이저
- • 믹서
- • 리샘플러
- • 샘플 그래버
- • 타임스탬프 보정기
- • Chebyshev 대역 통과 거부
- • Chebyshev 제한
- • 압축기/확장기
- • Csound 필터
- • EBU R128 레벨
- • 에코
- • 이퀄라이저(10밴드)
- • 이퀄라이저(파라메트릭)
- • HRTF 렌더
- • 노래방
- • 무음 제거
- • 잔향
- • 스케일/템포
- • 볼륨
- • VU 미터
- • 와이드 스테레오
바코드 리더
- • QR 코드
- • UPC-A, UPC-E
- • EAN-8, EAN-13
- • Code 39
- • Code 93
- • Code 128
- • Codabar
- • ITF
- • RSS-14
- • Data Matrix
- • Aztec
- • PDF-417
오디오 인코더
- • AAC
- • ADPCM
- • ALAW
- • AptX
- • FLAC
- • MP2
- • MP3
- • OPUS
- • Speex
- • Vorbis
- • WAV
- • Wavpack
- • WMA (Windows Media Audio)
비디오 인코더(CPU/GPU)
- • AV1
- • DV
- • GIF
- • H.264
- • H.265/HEVC
- • MJPEG
- • MPEG-2
- • MPEG-4
- • PNG
- • Theora
- • VP8/VP9 (VPX)
- • WMV (Windows Media Video)
- • NVENC, AMD, Intel 하드웨어 인코더 지원
- • iOS/macOS/Android 하드웨어 인코더 지원
비디오 처리
- • 에이징
- • 알파 결합
- • 자동 디인터레이스
- • Bayer to RGB
- • 크로마 키
- • 코덱 알파 디멀티플렉서
- • 색상 효과
- • 디인터레이스
- • 다이스
- • 가장자리 감지
- • 어안
- • 뒤집기/회전
- • 감마
- • 가우시안 블러
- • 그레이스케일
- • 이미지 오버레이
- • 이미지 오버레이 Cairo
- • 인터레이스
- • 키 프레임 감지기
- • LUT 프로세서
- • 미러
- • 무빙 블러
- • 무빙 에코
- • 무빙 줌 에코
- • 광학 애니메이션 흑백
- • 오버레이 관리자
- • 원근
- • 핀치
- • 의사 3D
- • QR 코드 오버레이
- • 크기 조정
- • 샘플 그래버
- • 소벨 에지
- • 구
- • 정사각형
- • 스트레치
- • 텍스트 오버레이
- • 터널
- • 트월
- • 비디오 밸런스
- • 픽셀 형식 변환기
- • 비디오 믹서
- • 왜곡된 미러
- • 물결
- • 줌 박스
파일 싱크
- • ASF
- • AVI
- • DASH
- • HLS
- • HTTP MJPEG 라이브
- • MKV (Matroska)
- • MOV (QuickTime)
- • MP4
- • MPEG-PS
- • MPEG-TS
- • MXF
- • OGG
- • WAV
- • WebM
네트워크 스트리밍
- • Facebook Live
- • HLS
- • NDI
- • RTMP
- • RTSP
- • Shoutcast
- • SRT
- • YouTube Live
Blackmagic Decklink
- • 오디오 싱크
- • 오디오 소스
- • 비디오 싱크
- • 비디오 소스
오디오 시각화 도구
- • Bumpscope
- • Corona
- • Infinite
- • Jakdaw
- • Jess
- • LV Analyzer
- • LV Scope
- • Oinksie
- • Spacescope
- • Spectrascope
- • Synaescope
- • Wavescope
비디오 디코더
- • AV1 디코더
- • H.264 디코더
- • HEVC 디코더
- • JPEG 디코더
- • VP8 디코더
- • VP9 디코더
- • NVIDIA, Intel 및 AMD 가속 디코더
- • Android 하드웨어 디코더
- • iOS 하드웨어 디코더
특수 블록
- • 바코드 감지기
- • 데이터 프로세서
- • 데이터 샘플 그래버
- • 디버그 타임스탬프
- • 복호화기
- • 암호화기
- • 멀티 큐
- • Null 렌더러
- • 큐
- • SRTP 복호화기
- • SRTP 암호화기
- • 티(분배기)
가격
연간 구독 또는 평생 라이선스 중에서 선택하세요
일반 라이선스
- 1년 동안 무료 마이너 및 메이저 업그레이드
- 구독 종료 후에도 SDK 기능 유지
- 우선 지원
- 매년 자동 갱신(언제든지 취소 가능)
- 200개 이상의 모든 처리 블록 포함
비상업적 용도로는 무료입니다. 무료 라이선스를 받으려면 문의해 주세요.
모든 라이선스에는 로열티 없는 배포 권한이 포함됩니다.
시스템 요구 사항
플랫폼 전반의 개발 및 배포를 위한 최소 요구 사항
| 운영 체제 |
|
| .NET Framework |
|
| 하드웨어 |
|
| UI 프레임워크 |
|
문서 및 리소스
Media Blocks SDK를 시작하는 데 필요한 모든 것
