Support & information center

Data Streams in watchRTC

watchRTC makes the data it collects available to you in a programmable format, consumable by external business intelligence (BI) systems via a data streams mechanism.

For more information please see the article What are data streams?

Data streams in watchRTC are generated on the room level. Once a data stream file needs to be created for watchRTC, watchRTC will collect all history results for the time interval configured and generate a JSON struct per room, placing all these rooms in the data stream file and storing that file in the configured object store.

Create a data stream

If you would like to begin using data streams today, please read the article on How to Create a Data Stream to get started.

Note: Data streams are not available in all accounts. They require enterprise plans.

JSON structure

Detailed below is the JSON structure you can expect:

[
  {
    "room_url": "https://app.testrtc.com/app/watchrtc-room/xxxxxx",
    "room_id": "roomid",
    "start_time": "2022-09-04T00:09:22.885Z",
    "end_time": "2022-09-04T00:17:06.149Z",
    "duration": 463, // in seconds
    "users": 2, // number of peers in the room
    "stats": {
      "mos": 4.35, // MOS score
      "score": 6, // testRTC media score
      "call_setup_time": 900, // in milliseconds
      "audio": {
        "send": {
          "bitrate": 11, // in kbit/s
          "packet_loss": 6.1, // in percentage
          "jitter": 6, // in milliseconds
          "rtt": 2397 // in milliseconds
        },
        "recv": {
          "bitrate": 20, // in kbit/s
          "packet_loss": 0.2, // in percentage
          "jitter": 15 // in milliseconds
        },
        "bitrate": 16, // in kbit/s
        "packet_loss": 3.2, // in percentage
        "jitter": 11 // in milliseconds
      },
      "video": {
        "send": {
          "bitrate": 1499, // in kbit/s
          "packet_loss": 4.5, // in percentage
          "jitter": 48, // in milliseconds
          "rtt": 1073 // in milliseconds
        },
        "recv": {
          "bitrate": 109, // in kbit/s
          "packet_loss": 0.1, // in percentage
          "jitter": 43 // in milliseconds
        },
        "bitrate": 804, // in kbit/s
        "packet_loss": 2.3, // in percentage
        "jitter": 46 // in milliseconds
      }
    "peers": [
      {
        "peer_id": "peerid",
        "os": "Linux",
        "os_version": "64-bit",
        "browser": "Chrome",
        "browser_version": "102.0.5005.61",
        "location": {
          "city": "Frankfurt am Main",
          "country": "Germany",
          "organization": "Google" // ISP or carrier
        },
        "sdk_version": "1.34.1-beta.1",
        "start_time": "2022-06-24T06:37:35.547Z",
        "duration": 392, // in seconds
        "keys": {
          "keyA": "valueA",
          "keyB": "valueB"

          ...
        },
        "features": {
          "connection_type": "TURN",
          "media_transport": "udp" // udp/tcp/tls
        },
        "stats": {
          "mos": 3.29,
          "score": 5.9,
          "call_setup_time": 164,
          "audio": {
            "send": {
              "mos": 3.29,
              "score": 5.9,
              "bitrate": 13,
              "packet_loss": 3.6,
              "jitter": 8,
              "rtt": 428
            },
            "recv": {
              "mos": 3.29,
              "score": 5.9,
              "bitrate": 24,
              "packet_loss": 0.1,
              "jitter": 4
            },
            "bitrate": 19,
            "packet_loss": 1.9,
            "jitter": 6
          },
          "video": {
            "send": {
              "mos": 3.29,
              "bitrate": 1596,
              "packet_loss": 2.7,
              "jitter": 15,
              "rtt": 159
            },
            "recv": {
              "mos": 3.29,
              "bitrate": 68,
              "packet_loss": 0.1,
              "jitter": 13
            },
            "bitrate": 832,
            "packet_loss": 1.4,
            "jitter": 14
          }
        },
        "audio_device": "Fake Default Audio Input",
        "video_device": "/video/KrankyGeek-1080p.y4m"
      },

      ...
    ]
  }
]

Was this article helpful?

Related Articles