omnibase / video
A video platform on omnibase: videos and channels, resumable uploads through tusd, HLS transcoding with ffmpeg, a player that keeps playing across pages, views, likes, timed comments, playlists, subscriptions, reports, a members' studio, local suggestions (Gorse optional) and a Typesense index.
Package info
github.com/glitchr-studio/omnibase-video
Type:symfony-bundle
pkg:composer/omnibase/video
Requires
- php: ^8.2
- doctrine/orm: ^2.15|^3.0
- glitchr/omnibase: 3.0.*-dev
- glitchr/typesense-bundle: 2.0.*-dev
- omnibase/admin: dev-main
- symfony/config: ^7.0|^8.0
- symfony/dependency-injection: ^7.0|^8.0
- symfony/form: ^7.0|^8.0
- symfony/http-client: ^7.0|^8.0
- symfony/http-kernel: ^7.0|^8.0
- symfony/messenger: ^7.0|^8.0
- symfony/process: ^7.0|^8.0
- symfony/rate-limiter: ^7.0|^8.0
- symfony/security-bundle: ^7.0|^8.0
- symfony/twig-bundle: ^7.0|^8.0
Requires (Dev)
- phpunit/phpunit: ^11.0|^12.0
Suggests
- ffmpeg: The ffmpeg and ffprobe binaries on the worker transcode the uploads (HLS fMP4, poster, storyboard).
- gorse-io/gorse: gorse-in-one, an optional recommender (video.suggest.provider: gorse); the local suggestions stay when it is down.
- tusproject/tusd: The resumable upload server the studio sends files to (docs/upload.md).
Provides
None
Conflicts
None
Replaces
None
This package is not auto-updated.
Last update: 2026-10-09 16:13:55 UTC
README
A video platform on omnibase: members send their films and really run them, visitors watch, rate, comment and keep lists. Hosted video only - this bundle is the hosting side; the films of other platforms are referenced, never operated (see "Outside sources" below).
- A
Videois an omnibaseThread(a JOINED subclass): title, text, slug, owners, tags, likes, publication states, trash. On top: itsChannel, itsSources, its length, poster and storyboard, its processing state, its views. Visibility is the thread's state: public, unlisted, private, scheduled. - Resumable uploads: Uppy in the studio, tusd behind
/files/; two hooks ask the site (may it start? - it is whole). - HLS transcoding by a Messenger handler with ffmpeg: fMP4 ladder 1080/720/480/360 never above the source, poster, stills to choose from, storyboard sprite + WebVTT.
- One player for the whole visit (
media-chrome+hls-video-element), outside#content: a transparent.js navigation never stops it; it shrinks to a corner and comes back to its page. Engines (registerEngine) and glitchr/omnibase'smedia:play(MediaPlay) let other sources and other players live with it. - Views counted from the player's beacons (30 s or half the film, once a
visitor every six hours), flushed by cron; likes on omnibase's
Like; comments on omnibase'sComment+ the moment of the film; playlists, channels, subscriptions, reports on omnibase'sComplaint. - A studio (
/studio, pages of the site): send, describe, schedule, poster, statistics (views, average watched, retention, sources), comments, channel, trash. - Suggestions:
Suggest\SuggestInterface, computed here (LocalSuggest, a nightlyRelatedtable) or by Gorse (GorseSuggest, optional - down or absent, the local ones answer). - Search through
glitchr/typesense-bundle, the database when the server is down. - Back office on omnibase/admin: films (take down with a reason), channels, comments, a dashboard tile.
composer require omnibase/video:dev-main
Documentation: docs/. Tests: vendor/bin/phpunit (units:
no kernel, no database, no ffmpeg, no network).
Licence: MIT since 2026-10-09; earlier versions remain published under LGPL-3.0-or-later.