https://github.com/anttiai/bpm
Broadcast Performance Metrics (BPM) for AWS IVS Multitrack Streaming
https://github.com/anttiai/bpm
aws aws-ivs bpm ivs
Last synced: 10 months ago
JSON representation
Broadcast Performance Metrics (BPM) for AWS IVS Multitrack Streaming
- Host: GitHub
- URL: https://github.com/anttiai/bpm
- Owner: anttiai
- License: lgpl-2.1
- Created: 2025-01-15T08:01:58.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-02-07T09:08:51.000Z (11 months ago)
- Last Synced: 2025-02-07T09:31:17.507Z (11 months ago)
- Topics: aws, aws-ivs, bpm, ivs
- Language: Rust
- Homepage:
- Size: 33.2 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Broadcast Performance Metrics (BPM)
Library for collecting Broadcast Performance Metrics for AWS IVS Multitrack Streaming. Written in Rust, with support for C and C++ via a Foreign Function Interface (FFI).
The user should send metrics in-band via SEI (for AVC/HEVC) or OBU (AV1) messages on all video tracks just prior to the IDR. This library maintains internal state within single process.
## Concept
Integrate with encoding software such as FFmpeg or GStreamer. Call **bpm_frame_encoded** after successfully encoding a frame. Use **bpm_frame_lagged** and **bpm_frame_dropped** to track lagged and dropped frames, respectively. For keyframes, render and fetch metrics using **bpm_render_ts_ptr**, **bpm_render_sm_ptr**, and **bpm_render_erm_ptr**. Inject the returned data into SEI or OBU messages and free the memory with **bpm_destroy**.
## Build
```bash
cargo build --release
```
## Example in C
Build and run the C example
```bash
gcc -o build/example example.c -Ltarget/release/ -lbpm
./build/example
```