AV metrics for Nvidia Shield
Measure audio and video playback quality on Nvidia Shield App Automate sessions, and retrieve the metrics using two REST API endpoints.
Streaming and OTT teams can test that their app runs on a device, but not easily test how well playback performed. AV Metrics closes that gap.
When you run an App Automate session on a BrowserStack Nvidia Shield (Android TV) device, BrowserStack measures how well audio and video actually played, with no changes to your app, and lets you pull those metrics for each session through two REST API endpoints. For each session, it captures objective playback-quality signals you can assert on in CI, for example, whether a build started slower, dropped to a lower resolution, stuttered more, or errored, rather than manually reviewing the session video.
AV Metrics for Nvidia Shield is currently in beta, and BrowserStack is actively refining its accuracy and coverage. For queries, contact BrowserStack support.
What the feature provides
The signals follow the lifecycle of a single playback:
- Whether it played at good quality.
- Whether it stayed smooth.
- Whether the audio was clean.
- Whether anything broke.
- Whether device conditions affected it.
| Category | What you learn |
|---|---|
| Playback quality | Video codec or format, resolution, adaptive resolution changes during playback, and bitrate. Confirms the viewer got the intended quality, for example, real 1080p or 4K, not a silent downshift. |
| Smoothness | Frame rate (FPS) and dropped or janky frames. An objective stutter measurement. |
| Audio health | Audio track format and channels, and audio glitches such as dropouts or underruns. |
| Errors and reliability | Decoder or codec playback errors, and rebuffering events, including how often and how long playback stalled mid-stream. |
| Device and environment | Display mode and HDR, device thermal, CPU, and memory during the session, and network throughput. This is the context that explains why quality changed. |
Supported devices and boundaries
- Nvidia Shield (Android TV) only today. AV Metrics doesn’t yet support other Smart TV platforms, Fire TV, Apple TV, and Roku, and they return an empty result.
- Player technology matters. Apps built on standard Android players get the full metric set automatically. Apps built on web or browser technology, or using tunneled 4K or HDR playback, may produce little or no frame-level data, so FPS, jank, and rebuffering may come back not reliable.
- Rebuffering. BrowserStack detects rebuffering from frame-timing gaps. Precise sub-second counts are best-effort for standard players and unavailable under tunneled playback.
BrowserStack can’t measure premium Digital Rights Management (DRM) content. Protected premium titles, for example, Netflix, Prime, or Disney+ premium, rely on copy-protection that these test devices can’t satisfy, so that content doesn’t play and produces no metrics.
BrowserStack measures your app’s own non-DRM or unprotected streams fully.
Access the metrics for a session
Retrieve metrics after the session completes, using two GET endpoints on the App Automate host app-automate.browserstack.com. Authenticate with HTTP Basic auth, using your BrowserStack Username as the user and your Access Key as the password. Each request takes two query parameters, instance_id and session_id.
| Endpoint path | What it returns | Format |
|---|---|---|
/private-cloud/smart-tv/av-metrics/report |
An aggregate, at-a-glance scorecard for the session. The summary a CI gate or API consumer reads. | JSON |
/private-cloud/smart-tv/av-metrics/dump |
The raw time-series: every per-sample record captured during the session, for your own deeper analysis. | NDJSON (one JSON record per line) |
Both endpoints require these two query parameters:
| Parameter | Description |
|---|---|
session_id |
The App Automate session ID. This is the session’s hashed ID, the same one shown on the dashboard and returned by the App Automate REST API. |
instance_id |
The device ID of the Nvidia Shield the session ran on. Available from your session or device details. |
Report API: aggregate scorecard
The report endpoint returns a single JSON object summarizing the session. Key fields:
| Field | Meaning |
|---|---|
window |
Capture window: start, end, and duration in seconds. |
video.peak_resolution, video.codecs, video.adaptive_changes
|
Highest resolution seen, the codecs used, with resolution and whether the stream was DRM-secure, and each adaptive resolution or quality switch during playback. |
audio.track, audio.underruns
|
Audio format and channels, and the count of audio dropouts. |
delivery.effective_bitrate_mbps |
Peak and average delivered bitrate: network throughput compared to the resolution served. |
device_context.display |
Output resolution, refresh rate, and HDR capability. |
device_context.thermal_c_max, cpu_busy_pct_peak, memory_available_pct_min
|
Peak temperature, peak CPU, and minimum free memory during the session. |
playback.fps |
Average frames per second. |
playback.jank |
Janky frame count and percentage, a measure of stutter. |
playback.rebuffering |
Number of mid-playback stalls and their total duration. |
playback.playback_errors |
Count and samples of decoder or codec playback errors. |
Each metric under playback carries a reliable flag. For more information, see Understand metric reliability. An example response, with illustrative values, is as follows:
AV Metrics captures no data for a session in either of the following cases:
- The app didn’t play video.
- The device isn’t a supported Nvidia Shield.
When this happens, the endpoint returns HTTP 200 with success: false and the message No AV metrics available for this session. This is an expected empty result, not an error.
Dump API: raw time-series
The dump endpoint returns the full stream of per-sample records captured during the session as NDJSON, one JSON object per line. Use this when you want to build your own charts or drill into moment-by-moment behavior. Each record has a timestamp, a metric name, and a data payload. Metric types include playback_frames (frame timing, the source of FPS and jank), throughput_mbps, thermal_c, cpu_pct, mem, codec, audio, playback_error, and display. Example lines:
Understand metric reliability
Every playback metric, FPS, jank, rebuffering, and errors, comes with a reliable flag and, when false, a reason. This is deliberate. Rather than showing a misleading number, BrowserStack tells you when it couldn’t measure a metric for this session and why.
| Reliable | Reason | What it means |
|---|---|---|
| true | N/A | Computed from sufficient, trustworthy data. Safe to assert on. |
| false | insufficient frame samples | Playback was too short to compute a stable value. Let the video play longer. |
| false | no playback or pipeline not classified | No standard video playback was detected. Either the app didn’t play video, or it uses a non-standard or web-based player. |
| false | tunneled or secure pipeline | Playback used a DRM-protected or tunneled, typically 4K or HDR, rendering path, which can’t be frame-sampled from outside the app. |
AV Metrics is available for App Automate sessions on dedicated Nvidia Shield devices, but your organization must enable it first. Contact your BrowserStack account team to turn it on.
Frequently asked questions
Does AV Metrics report play-to-first-frame time or a perceptual quality score?
Not yet. On the roadmap: a precise play-to-first-frame time, continuous per-second quality charts, a perceptual “how good did it look” score, loudness and lip-sync checks, and support for DRM-protected content.
Can I get AV Metrics for DRM-protected premium content?
No. Premium DRM content, for example Netflix, Prime, or Disney+ premium, relies on copy-protection that these test devices can’t satisfy, so that content doesn’t play and produces no metrics. BrowserStack measures your app’s own non-DRM or unprotected streams fully.
What does it mean when a metric comes back reliable: false?
It means BrowserStack couldn’t compute a trustworthy value for that metric in this session, for example, because playback was too short, BrowserStack didn’t detect standard video playback, or the session used a tunneled or DRM-protected rendering path. The reason field on the metric tells you which. For more information, see Understand metric reliability.
Need help?
If you have any questions, contact support.
We're sorry to hear that. Please share your feedback so we can do better
Contact our Support team for immediate help while we work on improving our docs.
We're continuously improving our docs. We'd love to know what you liked
We're sorry to hear that. Please share your feedback so we can do better
Contact our Support team for immediate help while we work on improving our docs.
We're continuously improving our docs. We'd love to know what you liked
Thank you for your valuable feedback!