v. 2.0.0 - Now with a vanilla JavaScript edition!
An easy-to-customize responsive video player for YouTube and HTML5 videos with zero dependencies (vanilla version) or jQuery (legacy version).
- Dual versions: jQuery plugin (legacy) or vanilla JavaScript (modern)
- Dual video support: YouTube and HTML5 video adapters with automatic fallback
- Responsive design: Maintains 16:9 aspect ratio on all screen sizes
- Rich controls: Play/pause, progress bar, volume, fullscreen, quality selector
- Advanced features (vanilla version):
- Keyboard shortcuts (Space, M, F, arrow keys for seeking and volume)
- Volume slider with granular control
- Playback rate selector (0.5x to 2x)
- Custom event system
- Accessibility features (ARIA labels)
- No dependencies
The modern, dependency-free version. Use this for new projects.
<link rel="stylesheet" type="text/css" href="pplayer/assets/pplayer.css" />
<script src="pplayer/js/pplayer.js"></script><div id="youtube-video"><!-- --></div>
<script>
const player = new PragmaticPlayer(document.getElementById('youtube-video'), {
youtubeVideoId: 'YE7VzlLtp-4',
autoplay: false,
origin: 'http://yoursite.com'
});
</script><div id="html5-video">
<video poster="./poster.jpg" preload="metadata">
<source type="video/mp4" src="./video.mp4" />
<source type="video/ogg" src="./video.ogv" />
</video>
</div>
<script>
const player = new PragmaticPlayer(document.getElementById('html5-video'), {
features: ['playpause', 'progress', 'timer', 'mute', 'volume', 'fullscreen']
});
</script>| Key | Action |
|---|---|
| Space | Play / Pause |
| M | Toggle Mute |
| F | Fullscreen |
| ← | Seek -5 seconds |
| → | Seek +5 seconds |
| ↑ | Volume +10% |
| ↓ | Volume -10% |
{
youtubeVideoId: undefined, // YouTube video ID (required for YouTube)
autoplay: false, // Auto-start playback
hd: true, // Enable HD for YouTube
origin: undefined, // Your site origin for YouTube security
adapter: undefined, // Force adapter: "Youtube" or "VideoElement"
features: [ // Enabled features
'playpause',
'progress',
'timer',
'mute',
'volume',
'fullscreen'
],
enableKeyboard: true // Enable keyboard shortcuts
}Available features: playpause, progress, quality, timer, mute, fullscreen, volume, playbackRate
// Listen to player events
player.on('ready', () => console.log('Ready'));
player.on('play', () => console.log('Playing'));
player.on('pause', () => console.log('Paused'));
player.on('timeupdate', (data) => {
console.log('Time:', data.current, '/', data.duration);
});
// Remove event listener
player.off('play', handler);// Playback control
player.playVideo();
player.pauseVideo();
player.togglePlayPause();
// Mute control
player.muteVideo();
player.unmuteVideo();
player.toggleMute();
// Fullscreen
player.enterFullscreen();
player.leaveFullscreen();
player.toggleFullscreen();
// State
const state = player.getState();
// { isPlaying, currentTime, duration, isFullscreen }
// Get adapter for advanced control
const adapter = player.getAdapter();
adapter.currentTime(45); // Seek to 45 seconds
adapter.duration(); // Get duration
// Cleanup
player.destroy();The original jQuery-based version. Use this if you already have jQuery in your project or prefer the older API.
<link rel="stylesheet" type="text/css" href="pplayer/assets/pplayer.css" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="pplayer/js/jquery.pplayer.js"></script>$("#youtube-video").pPlayer({
youtubeVideoId: "YE7VzlLtp-4",
autoplay: 0,
origin: "http://yoursite.com"
});<div id="html5-video">
<video poster="./assets/poster.jpg" preload="true">
<source type="video/mp4" src="./assets/test.mp4" />
<source type="video/ogg" src="./assets/test.ogv" />
</video>
</div>
<script>
$("#html5-video").pPlayer({
youtubeVideoId: "YE7VzlLtp-4" // YouTube fallback
});
</script>- youtubeVideoId: The YouTube video ID
- autoplay: 0 or 1 (default: 0)
- hd: 0 or 1 (default: 1)
- origin: Your site origin URL for YouTube security
- adapter: Force specific adapter ("VideoElement" or "Youtube")
- features: Array of enabled features (default:
["playpause", "progress", "quality", "timer", "mute", "fullscreen"])
If you're using the jQuery version and want to upgrade:
Before (jQuery):
$("#player").pPlayer({
youtubeVideoId: "abc123"
});After (Vanilla):
const player = new PragmaticPlayer(
document.getElementById('player'),
{ youtubeVideoId: "abc123" }
);- Zero dependencies - No jQuery required
- Better keyboard support - Full keyboard shortcut system
- Volume control - Granular volume slider
- Playback rates - Support for 0.5x to 2x playback speeds
- Modern API - Event-based system instead of callbacks
- Better accessibility - ARIA labels and roles
- Improved fullscreen - Better handling across browsers
- Smaller bundle - ~8KB minified vs ~12KB with jQuery
- Better mobile - Touch-friendly controls and improved responsiveness
- Chrome/Edge: Latest versions
- Firefox: Latest versions
- Safari: Latest versions
- Opera: Latest versions
- IE: YouTube adapter only (HTML5 video not supported)
MIT License - See LICENSE file in repository