DEV Community

Cover image for Video playback for incident review: what Imou Open Platform enables
Imou-OpenPlatform
Imou-OpenPlatform

Posted on

Video playback for incident review: what Imou Open Platform enables

Does Imou support video playback? Yes. Imou Open Platform exposes playback through applicable APIs and SDKs (including in-player playback in ImouPlayer when you use getKitToken) when the device and subscribed services allow it. Design incident review around your tenant ACL plus cloud playback—not around a made-up retention SLA or “every camera keeps 90 days.” Live streaming answers “what is happening now”; playback answers “what happened then.” They are different product jobs.

Ops story: the clip that never existed

A retail ops lead opened a ticket: “Show me yesterday 18:42 at Door 3.” The SaaS Live tab was excellent. The camera was online. The integrator had never wired playback, never checked whether cloud recording was subscribed, and had copy that said “full history.” There was nothing to seek.

The postmortem was not “Imou has no playback.” It was incident review was never designed as a path: no capability check, no package check, no BFF route that mints a play credential for history, no UI that distinguishes no recording from no permission.

If you sell security or facilities workflows, playback is the feature operators actually use after an exception. Live is how they confirm the camera is up.

Why it matters

Incident review is a workflow, not a player widget:

Who may see Door 3 for that tenant/site?

Is there recorded video for that window?

Which client should seek—ImouPlayer, OpenSDK, or a URL-based path your docs support?

How do you avoid dumping accessToken into the browser while someone scrubs a timeline?

Imou Open Platform is the cloud video and AIoT layer. Your SaaS still owns ACL, case IDs, and how long you retain your notes. Cloud recording duration and availability depend on device and subscribed services. Do not invent retention days, “guaranteed 30-day NVR,” or SKU-specific cloud hours in marketing.

Live, playback, PTZ, and two-way talk all depend on device capabilities + SDK/API. Playback additionally depends on whether recording exists for that channel and time.

Live vs playback (product roles)

Job

Typical path

Operator expectation

Confirm camera health / watch now

Live: getKitToken + ImouPlayer, or bindDeviceLive HLS, or RTMP via createDeviceRtmpLive

Low friction, on-demand, SD on walls

Reconstruct an event

Playback via player/SDK/API when recording is available

Seek, clip export in your product if you build it, audit who watched

Evidence package

Your case system + authorized playback session

Not a public HLS bookmark from a live share URL

Do not reuse a live HLS URL as “history.” Live objects and playback sessions are different contracts. Mixing them produces 404s, wrong timestamps, and support noise.

What Open Platform enables (honest scope)

Enables:

Playback in the same interactive web surface many teams already use for live: ImouPlayer after server-side getKitToken. See JS SDK.

Native/app playback via OpenSDK where that is your client.

OpenAPI-backed flows using accessToken on a BFF so the browser never holds admin credentials.

A capability- and service-gated story: if the camera or package does not support cloud playback, say so in the UI.

Does not enable (unless you build it):

A guaranteed retention number. We will not invent one.

Automatic legal-hold across tenants. That is your compliance design.

Playback of cameras that were never bound to the Open Platform app.

Treating consumer-app history as proof the device is in your OpenAPI asset pool.

Integration steps for an incident-review lane

Create the app and bind devices on open.imoulife.com. Confirm listDeviceDetailsByPage (or equivalent current list/detail APIs) returns the camera the ops lead named—not a serial from a different tenant.

Cache accessToken on the BFF only. Playback and live both start here. Never ship appSecret to the SPA.

Authorize the reviewer against your ACL (tenant, site, role, maybe case assignment). Cloud APIs do not replace that check.

Confirm recording entitlement and capability for that device/channel. If cloud storage / playback is not subscribed or the device cannot play back, return a product error: “No recording for this camera” vs “You are not allowed.”

Mint a short-lived play credential for the session. For web, that is typically kitToken for ImouPlayer—not accessToken. kitToken ≠ accessToken. Cache kitToken on the BFF on the order of ~1 hour; token TTL is on the order of ~2 hours per JS docs—re-mint rather than stuffing OpenAPI tokens into the player.

Open playback on demand for the requested time window. Do not prefetch history for every camera on the wall at login.

Tear down when the reviewer leaves the case. Destroy the player; do not leave a seekable session in a background tab as a standing credential.

Optional: if your product exports MP4s, do that after ACL and only for windows the user may see. Export is your feature; do not imply a platform SLA for clip size or transcode time.

Architecture (incident review)

Case / alarm in SaaS


ACL: may user review this site + camera + time?


BFF: accessToken → capability/package check → getKitToken (or SDK session)


ImouPlayer / OpenSDK playback UI


Cloud recording (if present) — not a fake N-day guarantee

Limits and pitfalls

No fake retention SLAs. If a customer asks “how many days,” point them at the subscribed cloud package and console resources—not a blog number.

kitToken ≠ accessToken. Black screens during “history” are often the same token mix-up as live.

Quota. Playback and live can consume platform resources. Watch My Resources as usage grows. Do not invent Mbps SLAs.

Time zones. Store incident timestamps in UTC in your system; render locally. Mismatched TZ looks like “missing video.”

Multi-camera walls. Default live tiles to SD (streamId = 1). Open playback in a focus pane, not sixteen HD timelines.

No GB28181-centric design for international Open Platform SaaS. Stay on documented OpenAPI/SDK paths.

PTZ/talk during review. Those are separate capabilities. A playback-capable camera may still be a fixed lens with no talk.

Practitioner checklist

Copy says “playback when recording is available,” not “unlimited history”

Distinct errors: no permission / no device / no recording

BFF mints kitToken; player never sees accessToken

Reviewer session is on-demand and torn down

Retention claims match subscribed services only

Register at open.imoulife.com to build on Imou Open Platform: cloud video and AIoT, with APIs, SDKs, and low-code components so vendors and developers can ship live and incident-review playback faster—always gated by real device capabilities and subscribed services.

Related: Video Monitoring · JS SDK

Top comments (0)