Media Player
Un reproductor multimedia reproduce un video con los controles de transporte de Fluent: una barra de búsqueda con el tiempo, volumen, subtítulos, botones para saltar, velocidad de reproducción, imagen en imagen y pantalla completa. Video.js se encarga de la reproducción, los atajos de teclado y los gestos.
Uso
<script>
import { MediaPlayer } from 'fluentui-svelte';
</script>
<MediaPlayer src="video.mp4" poster="poster.jpg" /> Carga diferida
deferred muestra el póster con un botón de reproducir grande y retiene el reproductor, Video.js y el medio hasta pulsarlo: una página llena de videos que nadie reproduce no descarga ninguno. Con click la carga empieza al pulsar, con intent cuando el puntero o el foco llegan al botón, y con visible en cuanto el reproductor entra en pantalla.
Diseño compacto
layout="compact" reúne el botón de reproducir, la barra de búsqueda y los botones esenciales en una sola fila, ideal para tarjetas e incrustaciones pequeñas.
Reproductores estrechos
Por debajo de 26rem de ancho, el diseño estándar se reduce a los botones de volumen, reproducir, imagen en imagen y pantalla completa.
Volumen vertical
volumeOrientation="vertical" coloca el slider de volumen en vertical sobre su botón, útil cuando la fila tiene poco espacio.
Video vertical
Un video vertical crece tanto como su ancho permite. Dale un ancho al reproductor y ajusta aspectRatio a la forma del medio, aquí 9 / 16, para reservar su espacio mientras carga. Con ese ancho quedan solo los botones esenciales.
Subtítulos
Pasa archivos WebVTT en tracks. Una sola pista muestra un botón para activarla, y varias, un menú para elegir.
Apariencia de los subtítulos
subtitlesAppearance="translucent" cambia el panel acrílico por texto claro sobre un velo oscuro, parecido a los subtítulos nativos. subtitlesSize elige entre small, medium o large.
Botones para saltar y velocidad de reproducción
skipBackward acepta 10 o 15 segundos y skipForward 10, 15 o 30, mientras que 0 oculta cualquiera de los dos. playbackRates lista las velocidades del menú de más opciones; una lista vacía las quita.
Anterior y siguiente
onPrevious y onNext agregan los botones de anterior y siguiente junto a los de reproducción. Los controles multimedia del sistema, incluida la imagen en imagen, también los activan.
Controles y elementos de menú personalizados
showRepeat agrega el botón de repetir integrado, enlazado a loop. startContent, centerContent y endContent ubican tus propios controles en cada grupo de la fila, mientras que moreContent amplía el menú de más opciones; todos reciben el store de Video.js. MediaPlayerButton le da a un control el aspecto y el tooltip de los integrados, y la clase optional lo oculta en reproductores estrechos.
Controlar el reproductor desde código
Enlaza playerRef para acceder al store de Video.js y manejar el reproductor con su estado y sus acciones, como seek, play, pause o setPlaybackRate.
Textos y traducciones
labels define los nombres y tooltips de los controles, menús y mensajes. Los textos que faltan vuelven al inglés, y los controles personalizados reciben el conjunto final para nombrarse de forma coherente. Cada reproductor de esta página sigue el idioma del sitio.
Propiedades del componente
| Name | Type | Default | Description |
|---|---|---|---|
src | string | La URL del medio a reproducir. | |
poster | string | La imagen que se muestra hasta que se reproduce el medio. | |
tracks | MediaPlayerTrack[] | Las pistas de texto del medio: subtítulos, subtítulos para sordos o capítulos. | |
layout | 'standard' | 'compact' | 'standard' | Cómo se distribuyen los controles de transporte. |
deferred | 'click' | 'intent' | 'visible' | Muestra un splash ligero en lugar del reproductor, con el póster y un botón de reproducir, y carga el reproductor, sus scripts y el medio solo al pulsar ese botón. Video.js y el medio no descargan nada antes. | |
aspectRatio | string | '16 / 9' | La forma del reproductor hasta que carga su medio, y del splash de un reproductor diferido, como un aspect-ratio de CSS. Ajústala al medio y nada se mueve cuando llega el video. |
volumeOrientation | 'horizontal' | 'vertical' | 'horizontal' | La dirección del slider de volumen en su ventana emergente. |
autoHideControls | boolean | true | Oculta los controles de transporte mientras el medio se reproduce y el usuario no interactúa, y los vuelve a mostrar con cualquier actividad. false los mantiene en pantalla. |
autoHideWhenPaused | boolean | Oculta también los controles de transporte de un medio en pausa, cuando el usuario deja de interactuar. Sin ella, una pausa los mantiene en pantalla. | |
subtitlesAppearance | 'acrylic' | 'translucent' | 'acrylic' | Cómo se ven los subtítulos. |
subtitlesSize | 'small' | 'medium' | 'large' | 'medium' | El tamaño del texto de los subtítulos. Un reproductor estrecho baja un tamaño. |
loop bindable | boolean | Reproduce el medio otra vez desde el inicio cuando termina. El botón de repetir lo activa y desactiva. | |
showRepeat | boolean | Muestra un botón de repetir, que activa y desactiva loop. | |
skipBackward | 0 | 10 | 15 | 10 | Cuántos segundos retrocede el botón de retroceso. 0 oculta el botón. |
skipForward | 0 | 10 | 15 | 30 | 30 | Cuántos segundos avanza el botón de avance. 0 oculta el botón. |
playbackRates | number[] | [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2] | Las velocidades del menú de más opciones. Una lista vacía quita el grupo de velocidad de reproducción. |
onPrevious | () => void | Muestra un botón anterior y se llama al pulsarlo, o cuando los controles multimedia del sistema piden la pista anterior. | |
onNext | () => void | Muestra un botón siguiente y se llama al pulsarlo, o cuando los controles multimedia del sistema piden la pista siguiente. | |
startContent | Snippet | Component | Controles personalizados al inicio de la fila de botones, después de los botones de volumen y subtítulos. | |
centerContent | Snippet | Component | Controles personalizados en el centro de la fila de botones, después del botón siguiente. | |
endContent | Snippet | Component | Controles personalizados al final de la fila de botones, antes del botón de imagen en imagen. | |
moreContent | Snippet | Component | Elementos personalizados para el menú de más opciones, después del grupo de velocidad de reproducción. Usa los elementos de Menu. | |
label | string | 'Media player' | El nombre accesible del reproductor. |
labels | Partial<MediaPlayerLabels> | Los textos de los controles, sus tooltips y menús. Los que se omiten usan el inglés. | |
ref bindable | HTMLVideoElement | null | La referencia DOM del elemento de video nativo. Los demás atributos del reproductor se aplican a él. | |
playerRef bindable | VideoPlayerElement | El elemento <video-player> de Video.js. Su store guarda el estado y las acciones del reproductor. | |
wrapperAttributes | HTMLAttributes | Los atributos que se aplican al elemento que dibuja el reproductor. | |
children | Snippet | Elementos <source> o <track> adicionales para el video. | |
HTMLVideoAttributes without src, poster, controls, children, loop |
MediaPlayerButton
| Name | Type | Default | Description |
|---|---|---|---|
label | string | El nombre accesible del botón, que también se muestra en su tooltip. | |
tooltipPlacement | Placement | 'top' | Dónde se coloca el tooltip respecto al botón. |
hideTooltip | boolean | Mantiene el tooltip cerrado, para un botón cuya ventana emergente está abierta. | |
ref bindable | HTMLButtonElement | null | La referencia DOM del elemento botón. | |
children | Snippet | El icono del botón. | |
ButtonProps<'button'> without ref, children, appearance |

