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.
For more information please see the article What are data streams?
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:
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
-> "user": ...
"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,
-> "user_rating": ...
"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"
},
...
]
}
]