teltek/pumukit-hard-video-editor-bundle
A Pumukit bundle that adds hard video editing capabilities, letting you trim and cut video files directly within the platform. It integrates editing workflows into Pumukit so users can produce cleaned, finalized video versions without external tools.
This is a niche Symfony bundle that plugs a hard-cut video editor (re-encode / trim, not playlist-based soft cuts) into a Pumukit installation. It is not a standalone library — it only makes sense inside a working Pumukit deployment, so treat it as an extension of that platform rather than something you require into a generic Laravel/Symfony app.
Minimal steps:
composer.json on GitHub and look at the require block (it will pin teltek/pumukit-* or pumukit/pumukit-* versions plus a Symfony range). Install only against a Pumukit install that matches, otherwise you will fight autoloading and template inheritance errors before you ever see the editor.composer require teltek/pumukit-hard-video-editor-bundleapp/AppKernel.php (Symfony ≤3.x, which most Pumukit releases use) inside the bundles array, after the core Pumukit bundles it depends on.app/config/routing.yml or the Pumukit route loader; add the bundle's routing resource if it isn't auto-collected.bin/console cache:clear --env=prod) and rebuild assets (bin/console pumukit:assets:create or assetic:dump, depending on version).ffmpeg/ffprobe on $PATH, a running Pumukit encoder worker (the bundle delegates the actual cut to the encoder, it does not shell out itself), and writable web/uploads / storage directories.Controller/, Resources/views/, and Resources/config/ in that order. The controller shows the request/response flow and which services it injects; the templates show how the trimming UI is mounted into the multimedia object detail page; the config shows tunables.MultimediaObject that has a master/original track, open the hard editor from the object's admin menu, select an in/out range, choose an output profile, and submit. You should get a new track (or new multimedia object, depending on implementation) whose duration matches the selection and which plays back correctly in the player.Treat the editor as a job producer. The real pattern in Pumukit is UI → Job → Encoder worker. The hard editor UI collects in/out points and a target profile, the bundle builds an encoder job referencing the source track, and PumukitEncoderBundle's worker performs the ffmpeg call. When debugging, always follow the job record before touching the UI.
Common integration patterns:
MultimediaObject or track — check which your version does, because it changes how you link or publish the result.PumukitEncoderBundle (H.264/AAC MP4, HLS, etc.) so the hard cut inherits your house transcode settings rather than hardcoding ffmpeg flags.app/Resources/PumukitHardVideoEditorBundle/views/... override wins).ROLE_ADMIN, series-scoped roles). Hard cuts are destructive-ish (new files, storage growth), so gate them more tightly than soft edits.Workflow tip: develop against a small local Pumukit with a short test video and a trivial encoder profile. The full loop (UI → job → worker → ffmpeg → new track) can take minutes per run; shrinking inputs to seconds makes iteration tolerable.
-c copy.waiting because pumukit:encoder:worker (or your supervisor unit for it) is not up. Check the job status before blaming the bundle.composer.json against your install; if it disagrees, either upgrade Pumukit or fork the bundle — don't paper over it with --ignore-platform-reqs.HH:MM:SS are interpreted at the source track's frame rate; mixed-fps sources, VFR phone footage, and audio-lead offsets are the usual culprits for "the clip starts half a second early."Resources/config. Look for the bundle extension alias (likely pumukit_hard_video_editor) and any parameters.yml overrides — values like default profile, temp directory, and enabled object types are commonly set there. Pumukit bundles often merge config from app/config/config.yml under that alias.var/logs/ or app/logs/) for controller exceptions; the encoder job payload and ffmpeg stderr in the encoder's log/temp directory for media failures; browser network tab for the UI's in/out payload if nothing reaches the job queue.cache:clear alone is often not enough — also clear the Pumukit-specific caches and rebuild assets, otherwise you keep seeing old Twig or stale JS.How can I help you explore Laravel packages today?