Klv Stream Injector
Introduction
KlvStreamInjectorProc is a command line utility that adds MISB 0601.X metadata to transport streams sent over UDP (online processing) or to TS files (offline processing)
The metadata source can be RAW Klv or Json packets sent over Udp or .csv / .json / .bin files.
Main features
- Insert RAW Klv packets (file / UDP / REST) into TS over UDP streams.
- Insert Klv metadata from .csv / .json / .bin files into TS file (offline processing)
- Encode video captured with frame grabber and add Klv metadata. Low latency support.
- MISB 0601 (with nested MISB 0102 and MISB 0903 VMTI) on-the-fly encoding from JSON formatted packet
- Network and file targets (simultaneous streaming and recording to file).
- Video flywheel generator
- Automation over REST
- Video preview
- Data preview (real time) with StMonitor
User Guide
Input parameters:
Short | Command | Description |
---|---|---|
-i | --input | Input url. For example: udp://227.1.1.1:30120. To specify the network interface, add nic argument: udp://227.1.1.1:30120/nic=172.16.106.10.10 |
-c | --captureDevice | Input Video capture device name or id returned by List capture devices call |
--audioCaptureDevice | Input Audio capture device name or id returned by List capture devices call | |
-o | --output | Output url (network). For example, udp://227.1.1.2:30120. To specify the NIC, add nic argument: udp://227.1.1.1:30120/nic=172.16.106.10.10 |
-f | --file | File target Output url. |
-u | --udpIn | UDP Input url. The Injector will insert RAW KLV packets received at this url. |
-j | --jsonUdpIn | UDP Input url. The Injector will insert JSON packets received at this url. |
-d | --dataUdpIn | UDP Input url. The Injector will insert private data bin packets received at this url. |
--dataFileIn | Data file for offline processing. | |
--klvPid | Klv Pid. If Klv is found in the stream, it's Pid number will be used. If not present and not provided, 0X1F1 will be used | |
--dataPid | Private data Pid, if needs to be inserted. | |
-a | --autostart | Start processing immediately, without user prompt. |
-p | --packet | Default Klv packet to insert. Can be either RAW Klv or Json. |
-t | --insertionInterval | Klv insertion interval (for default packet). If set to 0 (default), will be inserted with every frame. |
--existingKlv | Defines what to do with existing klv data. : keep = 0, drop = 1. Default - keep. | |
-v | --video | Show video during processing. Default - false. |
--maxDelay | Max sync delay. Max delay between the video and klv. | |
--caching | Network caching. Increase the value if the network stream has jitter. Decrease, to lower the latency. | |
--id | Id. Application specific Id. Used for Ddp identification. | |
--firstKlvDateTime | First Klv Date Time (ISO8601). If not set, existing klv time will be used, or if no is klv present - current DateTime will be set as the first Klv time. | |
--captureMode | Capture Mode: 0 (Compressed) / 1 Uncompressed / 2 (Extracted Klv). Default: 0 (Compressed). | |
--syncKlvMode | SyncKlv Mode. Default - false (generates ASYNC KLV). | |
--ddp | Optional DDP (Meteor) url. | |
--transcodeMisb104 | Transcode Misb 104.5 to Misb 601 | |
--flywheelInfoFile | A path to file that describes the input stream info (video, klv, audio etc) to be used for synthetic stream generation (flywheel). The file is created upon valid input detection. It is then used when the injector is started without a source. | |
--flywheelInfoReadOnly | If set to true, the file flywheelInfoFile will not be updated when a valid source is detected. This can be used in case the info XML is created manually and should be used for all input streams. | |
--flywheelVideoFrameFile | A path to a Bitmap file (with extension .bmp) or H.264 IDR frame, preceded by sps+pps (with extension .mpv or .mpg). More info \ref pageFlywheel. | |
--frameResolution | Frame resolution - 'Width'x'Heigth'. Default 720x480. | |
--videoFrameType | Video Frame Type: -1 (NONE), 0 (RGB24), 1 (RGB32), 2 (YV12) | |
--inputFramesRecordingPath | Path for recording of incoming frames. If extension set to .bin - records raw data. If set to bmp, saves bitmaps, but only if the internal data comes as RGB | |
--encodingResolution | Frame resolution - 'Width'x'Heigth'. Default is the source resolution. | |
-b | --bitrate | Encoding bitrate (in KBit/s). Default 2000. |
--framerate | Frame rate. Default 30. | |
--encodingProfile | Baseline = 0, HighProfile = 1, MainProfile = 2. Default 0 (baseline) | |
--lowLatencyMode | Set low latency mode. Default - false | |
--restSelfHost | Rest Self Host url. Can be used for remote control of KlvStreamInjector. | |
--licenseFile | License File path. If not set, Injector will try to load KlvInjector.lic file in Application.StartupPath directory. | |
--licenseKey | License key. | |
--silent | Set silent mode. | |
-? | --help | Help. |
Commands:
- S - Start Processing
- P - Pause Processing
- E - Stop Processing
- I - Show incoming Klvs. Launch StMonitor.
- O - Show inserted Klvs. Launch StMonitor.
- D - Show CC detection
- C - Select Capture Device
- N - Show NodeInfo
- H - Show arguments
- Q - Quit
License
No license is needed for application evaluation - it will work in demo mode (with some restrictions - like a maximum limit on the number of processed packets and support for only lower tags (<15) ).
KlvStreamInjector is a node-locked software, so you have to get a license (after purchasing the SW) in order to lift demo restrictions. Please install it and fill out an online form, providing the Node Info string (IMPORTANT!!!) for the target machine.
Node Info string can be seen when you run the application (or press N - Show NodeInfo), as shown below.
C:\Program Files\ImpleoTV\KlvStreamInjector\Bin\x64\KlvStreamInjectorProc.exe
Please copy-paste Node Info, don't send an image...
You'll receive a license file (or a license file and a key, for older versions).
To run KlvStreamInjector with the license, pass --licenseFile (with the full path) or a --licenseFile and --licenseKey (with the string found in the .Key.txt file) arguments, for older versions). If the license file path contains spaces, use quotes "C:\Program Files ....".
For example:
--licenseFile "D:\Impleo\Licenses\KlvStreamInjector.lic"
Or, for older versions:
--licenseFile "D:\Impleo\Licenses\KlvStreamInjector.lic" --licenseKey DDD8460B-8419FF85-0B36C1B5-3FC6143C
If a license file is in the same directory as the .exe, you can skip the path.
License arguments are persistent, so you should provide them only once.
System Requirements
OS: Windows 10/11 64 bit.