VisioForge

SDK metadanych KLV / MISB dla .NET

Odczytuj telemetrię KLV z MPEG-TS, dekoduj elementy MISB ST 0601 oraz nagrywaj lub retransmituj strumienie MISB na żywo z zachowaniem metadanych — z poziomu C# i .NET.

Czym są KLV i MISB

KLV (Key-Length-Value, SMPTE ST 336) to binarne kodowanie, którym systemy UAV, ISR i monitoringu przesyłają telemetrię obok obrazu: znaczniki czasu, położenie i orientację platformy oraz sensora, a także geolokalizację środka kadru. MISB ST 0601 (UAS Datalink Local Set) definiuje te pola, a strumienie MISB / STANAG 4609 przenoszą je jako osobny strumień metadanych wewnątrz MPEG-TS.

Co SDK robi z KLV

KLV obsługują dwa SDK VisioForge: Media Blocks SDK pracuje z KLV w plikach MPEG-TS w systemach Windows, Linux i macOS, a Video Capture SDK przekazuje KLV na żywo z kamery IP lub źródła UDP do nagrania albo retransmisji w systemie Windows.

  • Wyodrębnianie: MPEGTSDemuxBlock udostępnia strumień metadanych pliku MPEG-TS na padzie MetadataOutput, a KLVFileSinkBlock zapisuje pakiety KLV do pliku .klv
  • Dekodowanie: KLVParser odczytuje elementy local setu MISB ST 0601 — ponad 90, od precyzyjnego znacznika czasu po współrzędne sensora i środka kadru — i obsługuje długości kodowane BER, których używa MISB
  • Osadzanie (Media Blocks): MPEGTSSinkSettings.Metadata przyjmuje obiekt KLVMetadata utworzony z pliku .klv lub tablicy bajtów; jest multipleksowany jako jeden statyczny ładunek, a nie jako ścieżka z czasem dla każdej klatki
  • Nagrywanie i retransmisja KLV na żywo (Video Capture SDK, Windows): MPEGTSOutput.KLVEnabled multipleksuje KLV ze źródła do pliku MPEG-TS, a FFMPEGEXEOutput.KLVEnabled przenosi je w wyjściach MPEG-TS, RTP MPEG-TS i HLS (przy nagrywaniu do pliku ustaw też UsePipe)
  • Odczyt pakietów na żywo: zdarzenie OnDataFrameBuffer dostarcza każdy pakiet KLV wraz z rozmiarem i znacznikiem czasu (DataFrameType.KLV)

Przykłady kodu

Skrócone z KLV Demo i przykładu ip-camera-klv-mpegts-recorder.

Wyodrębnianie KLV z pliku MPEG-TS i dekodowanie MISB ST 0601

C#

Nagrywanie strumienia MISB na żywo do MPEG-TS z KLV

C#

Potok

W Media Blocks SDK wyodrębnianie KLV to trzy bloki — źródło pliku, demultiplekser MPEG-TS i sink pliku KLV — a następnie KLVParser dekoduje plik .klv. Pady wideo i audio demultipleksera mogą jednocześnie zasilać renderer lub koder.

BasicFileSourceBlock
MPEGTSDemuxBlock
KLVFileSinkBlock
KLVParser