Glimesh/rtmp-ingest

Collect data for a StreamMetadata every x seconds for each stream

Closed this issue · 1 comments

We need to collect the data required to fill out a StreamMetadata object at a configurable time interval. janus-ftl-plugin uses 4000ms by default, however it should be configurable.

Here's what janus-ftl-plugin currently uses as the StreamMetadata struct:

struct StreamMetadata
{
    std::string ingestServerHostname; // Hostname of the ingest server 
    uint32_t streamTimeSeconds; // How long the steam has been live
    uint32_t numActiveViewers; // Unused -- Not tracked at ingest level
    uint32_t currentSourceBitrateBps; // Bitrate of the stream
    uint32_t numPacketsReceived; // Total number of packets received
    uint32_t numPacketsNacked; // Total number of packets nacked
    uint32_t numPacketsLost; // Total number of packets lost
    uint16_t streamerToIngestPingMs; // Latency in MS between streamer and ingest server
    std::string streamerClientVendorName; // Reported streaming client
    std::string streamerClientVendorVersion; // Reported streaming vendor version
    std::string videoCodec; // Current video codec
    std::string audioCodec; // Current audio codec
    uint16_t videoWidth; // Current video width
    uint16_t videoHeight; // Current video height 
};

This is implemented now, will make split tickets for missing fields. 848c179