teltek/pumukit-opencast-bundle
Integrates Pumukit with Opencast, letting Symfony-based video platforms import, synchronize, and manage Opencast recordings and events from within the Pumukit multimedia catalog. Provides bundle services and configuration to bridge both systems' workflows.
This is a Symfony bundle, not a Laravel package — it plugs into PuMuKIT (itself a Symfony app), so treat it as a reference implementation rather than a drop-in dependency. Expect Symfony 3.x/4.x-era conventions (AppKernel registration, YAML service definitions).
Minimal path:
composer require teltek/pumukit-opencast-bundle inside an existing PuMuKIT 2.x/3.x install. Do not try this on a fresh Laravel or bare Symfony 5+ app — the constraint set will not resolve.app/AppKernel.php (new Pumukit\OpencastBundle\PumukitOpencastBundle()).app/config/parameters.yml / config.yml: Opencast host, admin credentials, and default workflow/flavor values. Check DependencyInjection/Configuration.php first — that file is the authoritative list of every knob.Services/ (the REST client and import service) and Command/ (the CLI entry points). PuMuKIT's own MultimediaObject/Series documents are the target of every import, so have the PuMuKIT data model open alongside.MultimediaObject is created with its tracks attached, then publish it to the Web TV portal and verify playback.series_id/external_id), and make the mapping explicit in config rather than relying on title matching.SUCCEEDED, skip anything already imported (see gotchas), then hand each event to the import service. A nightly job plus a "recent events" job every 15 minutes covers most portals.OpencastGateway) so your controllers and commands never call the bundle directly — you'll be able to swap in a maintained client later without touching call sites.Publication/broadcast objects) rather than calling Opencast's Engage player URLs directly. The portal's channel and playlist logic lives there.services.yml and override only the mapping method. Copying bundle code into your app is the fastest way to make future Opencast upgrades miserable.composer.json (symfony/* locked to what the bundle supports)./api, /admin-ng, /engage and changed shapes across Opencast 4→9. Hit /api/version (or /admin-ng/info/me) first and test against your server version, not the docs.X-Requested-Auth: Digest headers or form-login. Failures frequently show as a 200 with a login HTML page — validate the body is JSON, not just the status code.MultimediaObject and check it before import; add a unique index or a pre-query.RUNNING/FAILED produce broken or missing tracks. Only import SUCCEEDED.max_execution_time, memory_limit, and Guzzle timeouts for download commands. A single hung Opencast track can wedge your cron silently — log start/end per event.-vvv, and log the raw API response body on failure. Old Symfony HTTP clients often swallow the useful part.How can I help you explore Laravel packages today?