mpc / mpc-vidply
Universal, Accessible Video & Audio Player for TYPO3. Includes support for HTML5 video/audio, YouTube, Vimeo, SoundCloud, HLS and DASH streaming, playlists, captions, transcripts, sign language, and WCAG 2.2 AA accessibility compliance.
Package info
github.com/MatthiasPeltzer/mpc-vidply
Type:typo3-cms-extension
pkg:composer/mpc/mpc-vidply
Requires
- php: ^8.2
- typo3/cms-core: ^13.4 || ^14.3
- typo3/cms-extbase: ^13.4 || ^14.3
- typo3/cms-fluid: ^13.4 || ^14.3
- typo3/cms-fluid-styled-content: ^13.4 || ^14.3
- dev-main
- 1.1.11
- 1.1.10
- 1.1.9
- 1.1.8
- 1.1.7
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.54
- 1.0.53
- 1.0.51
- 1.0.50
- 1.0.49
- 1.0.48
- 1.0.47
- 1.0.46
- 1.0.45
- 1.0.44
- 1.0.43
- 1.0.42
- 1.0.41
- 1.0.40
- 1.0.39
- 1.0.38
- 1.0.37
- 1.0.36
- 1.0.35
- 1.0.34
- 1.0.33
- 1.0.32
- 1.0.31
- 1.0.30
- 1.0.29
- 1.0.28
- 1.0.27
- 1.0.26
- 1.0.25
- 1.0.24
- 1.0.23
- 1.0.22
- 1.0.21
- 1.0.20
- 1.0.19
- 1.0.18
- 1.0.17
- 1.0.16
- 1.0.15
- 1.0.14
- 1.0.13
- v1.0.12
- v1.0.11
- v1.0.10
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
This package is auto-updated.
Last update: 2026-05-04 04:51:49 UTC
README
Universal, Accessible Video & Audio Player for TYPO3. Includes support for HTML5 video/audio, YouTube, Vimeo, SoundCloud, HLS and DASH streaming, playlists, captions, transcripts, sign language, and WCAG 2.2 AA accessibility compliance.
Features
- Privacy-First External Services - YouTube, Vimeo, SoundCloud with GDPR-compliant consent layer
- Site-Wide Privacy Settings - Centralized backend configuration for privacy layer texts, links, and headlines
- Media Library - Reusable media records across your site
- Auto Playlists - 2+ items automatically create playlists
- Full Accessibility - Captions, chapters, audio description, sign language, keyboard controls
- HLS Streaming - Adaptive bitrate streaming with hls.js (Chrome / Firefox / Edge / desktop Safari) and native HLS on iOS / iPadOS — both paths integrate with VidPly's captions, transcript and quality menus
- DASH Streaming - MPEG-DASH via dash.js with adaptive quality and subtitles (integrated into video/audio types)
- SoundCloud Renderer - First-class SoundCloud playback through the SoundCloud Widget API (in addition to the GDPR consent layer)
- Buffering Spinner - Centered loading spinner shown automatically while the media is buffering
- Optional Download Button - Per-media download control with custom URL support
- Modern Player - Responsive, Picture-in-Picture, quality switching, playback speed
- TypeScript Codebase - The bundled VidPly player is now authored in strict TypeScript with shipped
.d.tsdeclarations - Conditional Asset Loading - Only loads JavaScript needed for your media types
- Listview & Detail Page — Add a VidPly Listview content element for one or more browsable rows (horizontal shelf or responsive grid), optional per-row browser pagination and sort control, category chips on cards, and links to a VidPly Detail page with short + long (RTE) description, categories, and slug or
?media=URLs; connected translations follow the default-language row configuration (seeDocumentation/Listview.md)
Quick Start
Install
composer require mpc/mpc-vidply
- Database Update → Maintenance → Analyze Database Structure
- Include Static Template → Root page → "VidPly Player (mpc_vidply)"
- Clear Caches
Create Media
List Module → VidPly Media
Choose media type:
- Video - Upload MP4, WebM or add HLS/DASH streaming URLs (with progressive fallbacks)
- Audio - Upload MP3, OGG or add HLS/DASH streaming URLs (with progressive fallbacks)
- YouTube - Paste video URL
- Vimeo - Paste video URL
- SoundCloud - Paste track/set URL
Configure Privacy Layer Settings
List Module → Privacy Layer Settings
Manage privacy layer content for YouTube, Vimeo, and SoundCloud:
- Headline (optional) - Display above privacy text
- Intro Text - Text before privacy policy link
- Outro Text - Text after privacy policy link
- Policy Link - URL to privacy policy page
- Link Text - Text for the privacy policy link
- Button Label (optional) - Accessible label for play button
Settings support multilingual content and apply to both single items and playlists. Empty fields fall back to default translations.
Add to Page
Page Module → Add Content → VidPly Player
- Select media items (1 = single player, 2+ = playlist)
- Configure player options
- Save and view
Media Types
| Type | Source | Privacy Layer | Notes |
|---|---|---|---|
| Video | Upload/URL | No | MP4, WebM, HLS (.m3u8), DASH (.mpd) with fallbacks |
| Audio | Upload/URL | No | MP3, OGG, HLS (.m3u8), DASH (.mpd) with fallbacks |
| YouTube | Video URL | Yes | GDPR consent required |
| Vimeo | Video URL | Yes | GDPR consent required |
| SoundCloud | Track/Set URL | Yes | GDPR consent required; once accepted, played via the dedicated SoundCloud Widget renderer |
Privacy Layer
For YouTube, Vimeo, and SoundCloud:
- No tracking before user consent
- Play button overlay with privacy notice
- One-click activation - loads and plays immediately
- Centralized backend configuration for all privacy texts
- Multilingual support for privacy settings
- Auto-translated fallbacks (German and English)
Configuration
Player Options
| Option | Default | Description |
|---|---|---|
| Controls | On | Show player controls |
| Keyboard | On | Enable shortcuts |
| Responsive | On | Responsive sizing |
| Auto Advance | On | Auto-play next in playlist |
| Autoplay | Off | Start automatically |
| Loop | Off | Loop content |
| Transcript | Off | Show transcript panel |
Keyboard Shortcuts
- Space/K - Play/Pause
- M - Mute
- F - Fullscreen
- C - Captions
- ←/→ - Seek ±10s
- ↑/↓ - Volume ±10%
Accessibility
- Captions/Subtitles - WebVTT files with language codes
- Chapters - WebVTT file with timestamps for navigation
- Audio Description - Alternative audio tracks for visually impaired users
- Sign Language - Overlay videos with sign language interpretation
- Transcripts - Auto-generated searchable transcripts from captions
Playlists
Single Item → Single player
2+ Items → Automatic playlist with visual panel, track navigation, auto-advance, and loop options
Lazy loading behavior (video/audio including HLS/DASH sources):
- If Autoplay is off, the extension configures VidPly to defer network loading until the user starts playback (reduced initial bandwidth for pages with many players).
- In playlists, selecting a track initializes the UI/metadata (poster, duration, captions/chapters menus) and a click on a playlist item loads and plays that track.
Advanced
Conditional Asset Loading
Only loads JavaScript needed for your media types:
- External services - PrivacyLayer.js (~5KB)
- Video/Audio - VidPly core + PlaylistInit (~180KB)
- HLS sources - Adds hls.js when .m3u8 streams detected
- DASH sources - Adds dash.js when .mpd streams detected
- Playlists - PlaylistInit.js loads for 2+ items
Performance improvement: Up to 97% reduction for external services.
Template Structure
Modular template partials:
VidPly/Assets.html- Asset registrationVidPly/VideoSources.html- Video source renderingVidPly/AudioSources.html- Audio source renderingVidPly/Tracks.html- Caption/chapter tracksVidPly/MetadataScripts.html- Accessibility metadataVidPly/PrivacyLayer.html- External service consent
Documentation
- Editors Guide - How to use VidPly for content editors
- Listview & Detail - Mediathek-style overview, detail page, routing, pagination, i18n behaviour
- Developers Quickstart - Quick reference for developers
- AssetLoading.md - Conditional asset loading optimization
- Partials.md - Template structure and customization
- PrivacyLayer.md - External service privacy implementation
- HLS-Implementation.md - HLS & DASH streaming technical details
- SettingsArchitecture.md - Configuration system architecture
Troubleshooting
Media not showing?
- Check media record is not hidden
- Verify file/URL is accessible
- Check database MM relation
Playlist not working?
- Need 2+ items for playlist
- Check JavaScript console for errors
- Verify PlaylistInit.js loads
Privacy layer not working?
- Clear TYPO3 caches
- Check PrivacyLayer.js loads
- Verify Privacy Layer Settings are configured
Requirements
- TYPO3: 13.4+ or 14.x
- PHP: 8.2+ (8.3 recommended)
- Composer: Required
- Browsers: Chrome 90+, Firefox 88+, Safari 14+
License
GNU General Public License v2.0 or later
Author
Matthias Peltzer