VisioForge

.NET용 KLV / MISB 메타데이터 SDK

MPEG-TS에서 KLV 텔레메트리를 읽고, MISB ST 0601 요소를 디코딩하고, 라이브 MISB 피드를 메타데이터와 함께 녹화하거나 재전송하세요 — C#과 .NET에서.

연 €500부터 · Lifetime 라이선스 €1,500부터

KLV와 MISB란

KLV(Key-Length-Value, SMPTE ST 336)는 UAV, ISR, 감시 시스템이 영상과 함께 텔레메트리를 전송할 때 쓰는 바이너리 인코딩입니다. 타임스탬프, 플랫폼과 센서의 위치 및 자세, 프레임 중심의 지리 좌표 등을 담습니다. 이 필드는 MISB ST 0601(UAS Datalink Local Set)이 정의하며, MISB / STANAG 4609 스트림은 이를 MPEG-TS 안의 별도 메타데이터 스트림으로 전송합니다.

SDK가 KLV로 하는 일

KLV를 다루는 VisioForge SDK는 두 가지입니다. Media Blocks SDK는 Windows, Linux, macOS에서 MPEG-TS 파일의 KLV를 처리하고, Video Capture SDK는 Windows에서 IP 카메라나 UDP 소스의 라이브 KLV를 녹화 또는 재전송으로 넘깁니다.

  • 추출: MPEGTSDemuxBlock이 MPEG-TS 파일의 메타데이터 스트림을 MetadataOutput 패드로 내보내고, KLVFileSinkBlock이 KLV 패킷을 .klv 파일에 기록합니다
  • 디코딩: KLVParser는 MISB ST 0601 로컬 세트 요소를 90개 이상 읽으며(정밀 타임스탬프부터 센서와 프레임 중심 좌표까지), MISB가 사용하는 BER 인코딩 길이를 처리합니다
  • 삽입(Media Blocks): MPEGTSSinkSettings.Metadata에 .klv 파일 또는 바이트 배열로 만든 KLVMetadata 객체를 지정합니다. 이는 하나의 정적 페이로드로 다중화되며, 프레임별 타임스탬프 트랙이 아닙니다
  • 라이브 KLV 녹화와 재전송(Video Capture SDK, Windows): MPEGTSOutput.KLVEnabled는 소스의 KLV를 MPEG-TS 파일에 다중화하고, FFMPEGEXEOutput.KLVEnabled는 MPEG-TS, RTP MPEG-TS, HLS 출력에 KLV를 실어 보냅니다(파일로 녹화할 때는 UsePipe도 설정)
  • 라이브 패킷 읽기: OnDataFrameBuffer 이벤트가 각 KLV 패킷을 크기와 타임스탬프와 함께 전달합니다(DataFrameType.KLV)

코드 예제

KLV Demo와 ip-camera-klv-mpegts-recorder 샘플에서 요약했습니다.

MPEG-TS 파일에서 KLV를 추출하고 MISB ST 0601 디코딩

C#

라이브 MISB 피드를 KLV와 함께 MPEG-TS로 녹화

C#

파이프라인

Media Blocks SDK에서 KLV 추출은 파일 소스, MPEG-TS 디멀티플렉서, KLV 파일 싱크의 세 블록으로 이루어지며, 이후 KLVParser가 .klv 파일을 디코딩합니다. 디멀티플렉서의 비디오·오디오 패드는 동시에 렌더러나 인코더에도 연결할 수 있습니다.

BasicFileSourceBlock
MPEGTSDemuxBlock
KLVFileSinkBlock
KLVParser