CldVideoPlayer Examples
Basic Usage
Standard Cloudinary Video Player with playback.
import { CldVideoPlayer } from 'next-cloudinary';
<CldVideoPlayer
id="default"
width="1620"
height="1080"
src="<Your Public ID>"
/>
Playback
Adaptive Bitrate Streaming (ABR)
import { CldVideoPlayer } from 'next-cloudinary';
<CldVideoPlayer
id="adaptive-bitrate-streaming"
width="1620"
height="1080"
src="<Your Public ID>"
transformation={{
streaming_profile: 'hd',
}}
sourceTypes={['hls']}
/>
Picture-in-Picture
Utilizes the browser's Picture-in-Picture API to create a floating video on top of other windows.
import { CldVideoPlayer } from 'next-cloudinary';
<CldVideoPlayer
id="picture-in-picture"
width="1620"
height="1080"
src="<Your Public ID>"
pictureInPictureToggle
/>
Player Customization
Chapters & Selector
Adding a button to select chapters.
import { CldVideoPlayer } from 'next-cloudinary';
<CldVideoPlayer
id="chapters-selector"
width="4096"
height="2160"
src="<Your Public ID>"
chapters={{
0: "Chapter 1",
6: "Chapter 2",
9: "Chapter 3"
}}
chaptersButton
/>
Colors & Font
Changing the player theme using colors and fonts.
import { CldVideoPlayer } from 'next-cloudinary';
<CldVideoPlayer
id="custom-colors-font"
width="4096"
height="2160"
src="<Your Public ID>"
colors={{
accent: '#ff0000',
base: '#00ff00',
text: '#0000ff'
}}
fontFace="Source Serif Pro"
/>
Logo
Adding a custom logo to the player chrome
import { CldVideoPlayer, getCldImageUrl } from 'next-cloudinary';
<CldVideoPlayer
id="custom-logo"
width="4096"
height="2160"
src="<Your Public ID>"
logo={{
imageUrl: getCldImageUrl({
src: '<Your Public ID>'
}),
// imageUrl: '<Your Image URL',
onClickUrl: '<Your URL>'
}}
/>
Poster URL
Allows you to change the poster used for the player.
import { CldVideoPlayer, getCldImageUrl } from 'next-cloudinary';
<CldVideoPlayer
id="poster-custom-url"
width="4096"
height="2160"
src="<Your Public ID>"
poster={getCldImageUrl({ src: '<Your Public ID>' })}
// poster="<Your Remote URL>"
/>
Poster Transformations
Adding effects to the video's auto-generated thumb
import { CldVideoPlayer } from 'next-cloudinary';
<CldVideoPlayer
id="poster-transformations"
width="4096"
height="2160"
src="<Your Public ID>"
poster={{
tint: 'equalize:80:blue:blueviolet'
}}
/>
Transformations
Cropping & Resizing
import { CldVideoPlayer } from 'next-cloudinary';
<CldVideoPlayer
id="cropping-resizing"
width="500"
height="500"
src="<Your Public ID>"
transformation={{
width: 500,
height: 500,
crop: 'fill',
gravity: 'auto'
}}
/>
Image Overlays
Place an image over the video (Ex: watermarks).
import { CldVideoPlayer } from 'next-cloudinary';
<CldVideoPlayer
id="image-overlays"
width="1620"
height="1080"
src="<Your Public ID>"
transformation={{
overlay: '<Your Public ID>',
width: 150,
gravity: "south_east",
x: 50,
y: 50,
opacity: 80
}}
/>
Text Overlays
Place a text over the video.
import { CldVideoPlayer } from 'next-cloudinary';
<CldVideoPlayer
id="text-overlays"
width="1620"
height="1080"
src="<Your Public ID>"
transformation={{
color: 'white',
overlay: {
font_family: "Source Sans Pro",
font_size: 150,
font_weight: "bold",
text: "Zen"
},
gravity: "center",
opacity: 80
}}
/>
Advanced
Localization
Provides localization options for player labels.
Uses Video.js JSON format (opens in a new tab) to provide labels.
import { CldVideoPlayer } from 'next-cloudinary';
<CldVideoPlayer
id="localization"
width="4096"
height="2160"
src="<Your Public ID>"
language="es"
languages={{
es: {
Play: "Reproducción",
"Play Video": "Reproduce el Video",
Pause: "Pausa",
"Current Time": "Tiempo reproducido",
Duration: "Duración total",
"Remaining Time": "Tiempo restante",
"Stream Type": "Tipo de secuencia",
LIVE: "DIRECTO",
Loaded: "Cargado",
Progress: "Progreso",
Fullscreen: "Pantalla completa",
"Non-Fullscreen": "Pantalla no completa",
Mute: "Silenciar",
Unmute: "No silenciado",
"Playback Rate": "Velocidad de reproducción",
Subtitles: "Subtítulos",
"subtitles off": "Subtítulos desactivados",
Captions: "Subtítulos especiales",
"captions off": "Subtítulos especiales desactivados",
Chapters: "Capítulos",
"Close Modal Dialog": "Cerca de diálogo modal",
"You aborted the video playback": "Ha interrumpido la reproducción del vídeo.",
"A network error caused the video download to fail part-way.": "Un error de red ha interrumpido la descarga del vídeo.",
"The video could not be loaded, either because the server or network failed or because the format is not supported.": "No se ha podido cargar el vídeo debido a un fallo de red o del servidor o porque el formato es incompatible.",
"The video playback was aborted due to a corruption problem or because the video used features your browser did not support.": "La reproducción de vídeo se ha interrumpido por un problema de corrupción de datos o porque el vídeo precisa funciones que su navegador no ofrece.",
"No compatible source was found for this video.": "No se ha encontrado ninguna fuente compatible con este vídeo."
}
}}
/>
Playback Events
Callbacks for player events.
Note: the player
instance is also passed in the callback function:
import { CldVideoPlayer } from 'next-cloudinary';
const myPlayerRef = useRef();
<CldVideoPlayer
playerRef={myPlayerRef}
id="player-events"
width="4096"
height="2160"
src="<Your Public ID>"
onMetadataLoad={() => {
console.log('[Cloudinary Video Player] metadata-loaded');
console.log(`[Cloudinary Video Player] duration: ${myPlayerRef.current.duration()}`);
}}
onPlay={() => {
console.log('[Cloudinary Video Player] play');
}}
/>