Empezando
-
Instalar el paquete
Ventana de terminal npm i @capgo/ivs-playerVentana de terminal pnpm add @capgo/ivs-playerVentana de terminal yarn add @capgo/ivs-playerVentana de terminal bun add @capgo/ivs-player -
Sincronización con proyectos nativos
Ventana de terminal npx cap syncVentana de terminal pnpm cap syncVentana de terminal yarn cap syncVentana de terminal bunx cap sync -
Configurar el complemento
Configuración básica del reproductor:
import { IvsPlayer } from '@capgo/ivs-player';// Create a playerconst { playerId } = await IvsPlayer.create({url: 'https://your-ivs-playback-url.m3u8',autoplay: true});// Start playbackawait IvsPlayer.play({ playerId });Controles del jugador:
// Pause playbackawait IvsPlayer.pause({ playerId });// Set volumeawait IvsPlayer.setVolume({playerId,volume: 0.5 // 0.0 to 1.0});// Seek to positionawait IvsPlayer.seekTo({playerId,position: 30 // seconds});Agregue a su
Info.plist:<key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key><true/></dict>Agregue a su
AndroidManifest.xml:<uses-permission android:name="android.permission.INTERNET" /> -
Manejo de eventos
import { IvsPlayer } from '@capgo/ivs-player';// Listen for player eventsIvsPlayer.addListener('onState', (event) => {console.log('Player state:', event.state);// States: idle, buffering, ready, playing, ended});IvsPlayer.addListener('onError', (event) => {console.error('Player error:', event.error);});IvsPlayer.addListener('onDuration', (event) => {console.log('Video duration:', event.duration);});IvsPlayer.addListener('onProgress', (event) => {console.log('Current position:', event.position);});// Listen for timed metadataIvsPlayer.addListener('onMetadata', (event) => {console.log('Timed metadata:', event.metadata);}); -
Uso avanzado
import { IvsPlayer } from '@capgo/ivs-player';export class StreamPlayer {private playerId: string | null = null;private listeners: any[] = [];async initialize(streamUrl: string) {// Create player with custom configurationconst result = await IvsPlayer.create({url: streamUrl,autoplay: false,muted: true, // Start muted for autoplay policiescontrols: true});this.playerId = result.playerId;this.setupEventListeners();}private setupEventListeners() {// State changesconst stateListener = IvsPlayer.addListener('onState', (event) => {this.handleStateChange(event.state);});this.listeners.push(stateListener);// Quality changesconst qualityListener = IvsPlayer.addListener('onQuality', (event) => {console.log(`Quality changed to: ${event.quality.name}`);});this.listeners.push(qualityListener);// Buffer updatesconst bufferListener = IvsPlayer.addListener('onBuffer', (event) => {console.log(`Buffer: ${event.percentage}%`);});this.listeners.push(bufferListener);}private handleStateChange(state: string) {switch (state) {case 'playing':console.log('Stream is playing');break;case 'buffering':console.log('Stream is buffering');break;case 'ended':console.log('Stream ended');break;}}async play() {if (this.playerId) {await IvsPlayer.play({ playerId: this.playerId });}}async pause() {if (this.playerId) {await IvsPlayer.pause({ playerId: this.playerId });}}async setQuality(qualityName: string) {if (this.playerId) {await IvsPlayer.setQuality({playerId: this.playerId,quality: qualityName});}}async destroy() {// Remove listenersthis.listeners.forEach(listener => listener.remove());// Destroy playerif (this.playerId) {await IvsPlayer.destroy({ playerId: this.playerId });}}}
API Referencia
Section titled “API Referencia”Métodos
Section titled “Métodos”create(options: CreateOptions)
Section titled “create(options: CreateOptions)”Cree una nueva instancia de reproductor IVS.
Parámetros:
options: Configuración del reproductorurl: cadena - URL de reproducción de IVSautoplay: booleano - Iniciar reproducción automáticamentemuted: booleano - Inicio silenciadocontrols: booleano - Mostrar controles nativos
Devoluciones: Promise<{ playerId: string }>
play(options: PlayerOptions)
Section titled “play(options: PlayerOptions)”Inicie la reproducción.
pause(options: PlayerOptions)
Section titled “pause(options: PlayerOptions)”Pausar la reproducción.
stop(options: PlayerOptions)
Section titled “stop(options: PlayerOptions)”Detenga la reproducción y restablezca la posición.
seekTo(options: SeekOptions)
Section titled “seekTo(options: SeekOptions)”Buscar un puesto específico.
setVolume(options: VolumeOptions)
Section titled “setVolume(options: VolumeOptions)”Establece el volumen del reproductor (0,0 a 1,0).
setQuality(options: QualityOptions)
Section titled “setQuality(options: QualityOptions)”Establece la calidad de reproducción.
destroy(options: PlayerOptions)
Section titled “destroy(options: PlayerOptions)”Destruye la instancia del jugador.
Eventos
Section titled “Eventos”onState: Cambios de estado del jugadoronError: Errores de reproducciónonDuration: Duración del vídeo disponibleonProgress: actualizaciones del progreso de la reproducciónonQuality: Cambios de calidadonMetadata: Eventos de metadatos cronometradosonBuffer: Actualizaciones de estado del búfer
Interfaces
Section titled “Interfaces”interface CreateOptions { url: string; autoplay?: boolean; muted?: boolean; controls?: boolean;}
interface PlayerOptions { playerId: string;}
interface SeekOptions extends PlayerOptions { position: number; // seconds}
interface VolumeOptions extends PlayerOptions { volume: number; // 0.0 to 1.0}
interface QualityOptions extends PlayerOptions { quality: string; // quality name}Notas de plataforma
Section titled “Notas de plataforma”- Requiere iOS 12.0 o posterior
- Utiliza AVPlayer nativo con extensiones IVS
- Admite imagen en imagen en iPads
Android
Section titled “Android”- Requiere Android 5.0 (API nivel 21) o posterior
- Utiliza el reproductor Amazon IVS SDK
- Se recomienda aceleración de hardware
Casos de uso comunes
Section titled “Casos de uso comunes”- Transmisión en vivo: eventos, deportes y juegos en tiempo real
- Transmisión interactiva: encuestas de espectadores, sesiones de preguntas y respuestas
- Comercio electrónico: compras en vivo con productos destacados
- Educación: Clases en vivo con contenido cronometrado
- Entretenimiento: Conciertos, espectáculos con interacción del público.
Mejores prácticas
Section titled “Mejores prácticas”-
Manejo de red: monitorear la calidad de la conexión
IvsPlayer.addListener('onError', (event) => {if (event.error.includes('network')) {// Handle network errorsshowRetryButton();}}); -
Gestión de recursos: Destruye siempre a los jugadores cuando hayas terminado
-
Políticas de reproducción automática: inicio silenciado para una reproducción automática confiable
-
Selección de calidad: deje que IVS se encargue del cambio automático de calidad
Solución de problemas
Section titled “Solución de problemas”La transmisión no se reproduce:
- Verifique que la URL de reproducción de IVS sea válida
- Verificar permisos de red
- Asegúrate de que la transmisión esté en vivo.
Alta latencia:
- IVS está optimizado para baja latencia, verifique la configuración de su codificador
- Verifica que estás usando la URL de reproducción específica de IVS
Problemas de calidad:
- Permitir el cambio automático de calidad.
- Verifique los requisitos de ancho de banda de la red