Skip to content

Cookie preferences

We use cookies for our own analytics, to see how our campaigns perform and, if you allow it, to load content from other services such as the Google site search. We never sell your data. Necessary cookies keep the site working and cannot be switched off. See our Cookie Policy for details and our Privacy Policy for how we handle personal data.

Security, load balancing and remembering your cookie choice.

Show us which pages people read and how they find the site, so we can improve it (Google Analytics).

Show us which of our ad campaigns bring visitors to the site and remember the campaign or partner link you arrived from (Google Ads, partner program). We do not use these cookies to build advertising profiles.

Load the site search from Google when you use it. Google sets its own cookies and shows ads in the search results.

© 2026 The ThingsBoard Authors
Try for free

ThingsBoard Cloud

Choose your data region

Your data stays in the region you choose, for residency and compliance. No credit card required.

Rather run it yourself? Install on your own servers

FLV Video Stream

  • Widget
  • 24 installs
  • v1.1.0
  • Aug 11, 2026
  • MIT license
  • v4.2+

Plays an HTTP-FLV stream — live or recorded. The stream URL is read from a configured data key, with an optional static fallback URL. Supports H.264 and H.265 encoding via mpegts.js.

Creator bellongyan
Widget Type
  • Latest
Category
  • Video & Cameras
Use Cases
  • Drones
  • Fleet Tracking
  • Industrial Automation
  • Robotics
  • Smart Building
  • Smart City
  • Smart Energy
  • Smart Farming
  • Smart Home
  • Smart Office
  • Smart Retail

Who it’s for

Operators and security teams watching cameras or process lines ask “how do I put a live camera feed on the same dashboard as my other data, without a noticeable delay?” They already have a media server, NVR, or camera that exposes a stream over HTTP-FLV, and want to view it on the dashboard, not manage the stream itself.

What it does

A data key resolves to https://liteavapp.qcloud.com/live/liteavdemoplayerstreamid.flv, and the widget starts playing that stream within a couple of seconds, muted, with no clicks needed.

  • Low-latency HTTP-FLV playback, typically 1-3 seconds behind the source — close enough for live monitoring, not a buffered catch-up view.
  • Detects live vs. recorded on its own, from the stream’s own metadata, and switches into the matching playback mode. There is nothing to configure.
  • Autoplay that adapts to the browser: if a browser blocks autoplay with sound, the widget retries muted; if even that is blocked, it shows a short message and starts on the next tap or click.
  • Reconnects automatically after a stream error, retrying three times with a growing delay before it gives up and shows a message.
  • Pauses while its browser tab is hidden and reconnects at the live edge, instead of resuming a stale buffer, once the tab is visible again. Picture-in-Picture keeps playing throughout.
  • Plays one stream from one data key; it doesn’t record, transcode, or show more than one camera in a single widget.

Requirements

This widget needs something to point it at: a media server, NVR, or camera that already serves a live or recorded stream over HTTP-FLV (for example ZLMediaKit, SRS, or nginx-http-flv-module). It plays that stream; it doesn’t provide one.

How to set up

Data keys

KeyRoleTypeDescription
Any name (flvStreamUrl by default)Stream URLAttribute, timeseries, or computed valueThe latest value must be a full .flv URL, for example https://<host>/live/camera1/stream.flv

Add exactly one data key; the widget only reads one. If the key has no value, the widget plays Fallback stream URL from the settings below instead. If both are empty, it shows a “No stream URL configured” placeholder rather than an error.

Video streaming

SettingDefaultEffect
Fallback stream URLEmptyPlays when the data key is empty or missing

How to customize

  • To stop the stream from starting on its own — turn off Autoplay.
  • To start with sound on — turn off Start muted. If the browser still blocks unmuted autoplay, the widget falls back to muted playback automatically.
  • To hide the play/pause, volume, and fullscreen controls — turn off Show video controls.

Tips

  • The widget loads mpegts.js from a CDN at runtime. If the network the dashboard runs on blocks outbound access to cdn.jsdelivr.net, no stream will play.
  • If the dashboard is served over HTTPS, use an HTTPS stream URL too — browsers block a plain HTTP video stream on an HTTPS page.
  • After three failed reconnect attempts, the widget stops retrying on its own. Fix the stream, then update the data key’s value (or reopen the dashboard) to start a fresh attempt.
  • If you see “Autoplay was blocked — tap the video to play,” click anywhere on the widget once to start it; the browser only needs that first gesture.

Share Your Widget with the Community

Built a custom widget? Export it as a JSON from ThingsBoard and publish it to the IoT Hub through a simple 4-step wizard (Upload, Listing, Readme, Review & Submit). Share it with thousands of ThingsBoard developers worldwide and get featured in the catalog.