vimeo_native_player 1.1.0 copy "vimeo_native_player: ^1.1.0" to clipboard
vimeo_native_player: ^1.1.0 copied to clipboard

Play Vimeo videos natively in Flutter with no WebView. Resolves any Vimeo link to a direct HLS or MP4 stream, so autoplay, captions and fullscreen work like any other native video.

Changelog #

1.1.0 #

Failures used to report a status code and throw away everything useful. This release makes them say what actually went wrong, and what to do about it. No breaking changes — the new errors are subtypes of the existing ones.

Errors now carry Vimeo's own explanation #

Vimeo states the cause in its error pages (Because of its privacy settings, this video cannot be played here., This video does not exist.). That sentence is now lifted out and exposed as reason on VimeoRestrictedException and VimeoNotFoundException, and used as the message when Vimeo supplied one.

When both routes fail, the embed page's explanation is kept in preference to the /config endpoint's, which only ever answers We're having a little trouble.

Domain-restricted embeds are diagnosed #

A video can be public on vimeo.com and still refuse to play in an app, because Vimeo's "Where can this be embedded?" setting is independent of "Who can watch?". Set to Specific domains, it can never be satisfied by an app, which has no domain. This was previously indistinguishable from any other refusal.

On failure, the resolver now asks Vimeo's oEmbed endpoint what happened and throws:

  • VimeoEmbedNotAllowedException — embed privacy excludes apps. Names the exact Vimeo setting the owner has to change.
  • VimeoPrivateLinkRequiredException — an unlisted video was reached without its privacy hash, the usual result of storing vimeo.com/<id> and dropping the rest.

Both extend VimeoRestrictedException, so existing catch clauses are unaffected. The diagnosis runs only on the failure path: successful playback makes no extra request.

Optional access token for your own private videos #

VimeoResolver(accessToken: ...) falls back to Vimeo's official API, which can reach private videos the public routes cannot. Entirely optional — everything else works without it. It is consulted only after the normal routes fail.

Do not ship a token in an app: it can be extracted from the binary, and it grants control of the whole Vimeo account. Keep it on a server and return the resolved stream URL to the app instead.

Also #

  • README gained a "Why isn't my video playing?" section covering the privacy settings behind almost every failure, and stating plainly that this package will not bypass them.
  • Tests for every new error path, and for unlisted links carrying Vimeo's share-tracking parameters.

1.0.1 #

Documentation and discoverability only — no code or API changes.

  • Added a "What you get" feature summary to the README.
  • Moved the supported-link reference above the options reference, so the question "will my link work?" is answered before the configuration detail.
  • Replaced the player topic with the more specific video-player.

1.0.0 #

First release.

  • VimeoNativePlayer — a drop-in widget that plays Vimeo videos with the platform's native player. No WebView, so autoplay works with sound and there is no embedded browser to navigate away in.
  • VimeoResolver — resolves any Vimeo link to direct HLS and MP4 stream URLs, for use with any player (video_player, better_player, media_kit, …).
  • Resolves via the player page, with the /config endpoint as a fallback. Vimeo refuses /config for many newer uploads, so page-first resolution is what makes recent videos work.
  • VimeoUrl.parse handles every Vimeo link shape, including unlisted videos (vimeo.com/<id>/<hash> and ?h=<hash>), channel, group, album and manage URLs, and links carrying share tracking parameters.
  • Exposes subtitle and caption tracks, the poster image, duration, dimensions, frame rate, owner, and live/360 flags.
  • Every CDN is offered as a separate stream, and progressive renditions are sorted largest first, so playback can fall through on failure.
  • In-memory caching keyed to Vimeo's own signed-URL expiry.
  • Typed errors: VimeoInvalidUrlException, VimeoNotFoundException, VimeoRestrictedException, VimeoNetworkException, VimeoParseException and VimeoNoStreamException, all under a sealed VimeoException.
4
likes
150
points
171
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Play Vimeo videos natively in Flutter with no WebView. Resolves any Vimeo link to a direct HLS or MP4 stream, so autoplay, captions and fullscreen work like any other native video.

Repository (GitHub)
View/report issues

Topics

#vimeo #video #video-player #hls #streaming

License

MIT (license)

Dependencies

chewie, flutter, http, video_player

More

Packages that depend on vimeo_native_player