Erste Schritte
-
Installieren Sie das Paket
Terminal-Fenster npm i @capgo/ivs-playerTerminal-Fenster pnpm add @capgo/ivs-playerTerminal-Fenster yarn add @capgo/ivs-playerTerminal-Fenster bun add @capgo/ivs-player -
Mit nativen Projekten synchronisieren
Terminal-Fenster npx cap syncTerminal-Fenster pnpm cap syncTerminal-Fenster yarn cap syncTerminal-Fenster bunx cap sync -
Konfigurieren Sie das Plugin
Grundlegende Player-Einrichtung:
import { IvsPlayer } from '@capgo/ivs-player';// Player erstellenconst { playerId } = await IvsPlayer.create({url: 'https://your-ivs-playback-url.m3u8',autoplay: true});// Wiedergabe startenawait IvsPlayer.play({ playerId });Player-Steuerung:
// Wiedergabe pausierenawait IvsPlayer.pause({ playerId });// Lautstärke einstellenawait IvsPlayer.setVolume({playerId,volume: 0.5 // 0.0 bis 1.0});// Zu Position springenawait IvsPlayer.seekTo({playerId,position: 30 // Sekunden});Fügen Sie zu Ihrer
Info.plisthinzu:<key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key><true/></dict>Fügen Sie zu Ihrer
AndroidManifest.xmlhinzu:<uses-permission android:name="android.permission.INTERNET" /> -
Ereignisbehandlung
import { IvsPlayer } from '@capgo/ivs-player';// Player-Ereignisse abhörenIvsPlayer.addListener('onState', (event) => {console.log('Player-Status:', event.state);// Status: idle, buffering, ready, playing, ended});IvsPlayer.addListener('onError', (event) => {console.error('Player-Fehler:', event.error);});IvsPlayer.addListener('onDuration', (event) => {console.log('Video-Dauer:', event.duration);});IvsPlayer.addListener('onProgress', (event) => {console.log('Aktuelle Position:', event.position);});// Zeitgesteuerte Metadaten abhörenIvsPlayer.addListener('onMetadata', (event) => {console.log('Zeitgesteuerte Metadaten:', event.metadata);}); -
Erweiterte Verwendung
import { IvsPlayer } from '@capgo/ivs-player';export class StreamPlayer {private playerId: string | null = null;private listeners: any[] = [];async initialize(streamUrl: string) {// Player mit benutzerdefinierter Konfiguration erstellenconst result = await IvsPlayer.create({url: streamUrl,autoplay: false,muted: true, // Stummgeschaltet starten für Autoplay-Richtliniencontrols: true});this.playerId = result.playerId;this.setupEventListeners();}private setupEventListeners() {// Statusänderungenconst stateListener = IvsPlayer.addListener('onState', (event) => {this.handleStateChange(event.state);});this.listeners.push(stateListener);// Qualitätsänderungenconst qualityListener = IvsPlayer.addListener('onQuality', (event) => {console.log(`Qualität geändert zu: ${event.quality.name}`);});this.listeners.push(qualityListener);// Puffer-Updatesconst bufferListener = IvsPlayer.addListener('onBuffer', (event) => {console.log(`Puffer: ${event.percentage}%`);});this.listeners.push(bufferListener);}private handleStateChange(state: string) {switch (state) {case 'playing':console.log('Stream wird abgespielt');break;case 'buffering':console.log('Stream puffert');break;case 'ended':console.log('Stream beendet');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() {// Listener entfernenthis.listeners.forEach(listener => listener.remove());// Player zerstörenif (this.playerId) {await IvsPlayer.destroy({ playerId: this.playerId });}}}
API-Referenz
Section titled “API-Referenz”Methoden
Section titled “Methoden”create(options: CreateOptions)
Section titled “create(options: CreateOptions)”Erstellen Sie eine neue IVS Player-Instanz.
Parameter:
options: Player-Konfigurationurl: string - IVS Wiedergabe-URLautoplay: boolean - Wiedergabe automatisch startenmuted: boolean - Stummgeschaltet startencontrols: boolean - Native Steuerelemente anzeigen
Rückgabe: Promise<{ playerId: string }>
play(options: PlayerOptions)
Section titled “play(options: PlayerOptions)”Wiedergabe starten.
pause(options: PlayerOptions)
Section titled “pause(options: PlayerOptions)”Wiedergabe pausieren.
stop(options: PlayerOptions)
Section titled “stop(options: PlayerOptions)”Wiedergabe stoppen und Position zurücksetzen.
seekTo(options: SeekOptions)
Section titled “seekTo(options: SeekOptions)”Zu einer bestimmten Position springen.
setVolume(options: VolumeOptions)
Section titled “setVolume(options: VolumeOptions)”Player-Lautstärke einstellen (0.0 bis 1.0).
setQuality(options: QualityOptions)
Section titled “setQuality(options: QualityOptions)”Wiedergabequalität einstellen.
destroy(options: PlayerOptions)
Section titled “destroy(options: PlayerOptions)”Player-Instanz zerstören.
Ereignisse
Section titled “Ereignisse”onState: Player-StatusänderungenonError: WiedergabefehleronDuration: Video-Dauer verfügbaronProgress: Wiedergabefortschritt-UpdatesonQuality: QualitätsänderungenonMetadata: Zeitgesteuerte Metadaten-EreignisseonBuffer: Pufferstatus-Updates
Schnittstellen
Section titled “Schnittstellen”interface CreateOptions { url: string; autoplay?: boolean; muted?: boolean; controls?: boolean;}
interface PlayerOptions { playerId: string;}
interface SeekOptions extends PlayerOptions { position: number; // Sekunden}
interface VolumeOptions extends PlayerOptions { volume: number; // 0.0 bis 1.0}
interface QualityOptions extends PlayerOptions { quality: string; // Qualitätsname}Plattform-Hinweise
Section titled “Plattform-Hinweise”- Erfordert iOS 12.0 oder höher
- Verwendet nativen AVPlayer mit IVS-Erweiterungen
- Unterstützt Bild-in-Bild auf iPads
Android
Section titled “Android”- Erfordert Android 5.0 (API-Level 21) oder höher
- Verwendet Amazon IVS Player SDK
- Hardware-Beschleunigung empfohlen
Häufige Anwendungsfälle
Section titled “Häufige Anwendungsfälle”- Live-Streaming: Echtzeit-Events, Sport, Gaming
- Interaktives Streaming: Zuschauer-Umfragen, Q&A-Sessions
- E-Commerce: Live-Shopping mit Produkthighlights
- Bildung: Live-Kurse mit zeitgesteuerten Inhalten
- Unterhaltung: Konzerte, Shows mit Publikumsinteraktion
Best Practices
Section titled “Best Practices”-
Netzwerk-Behandlung: Verbindungsqualität überwachen
IvsPlayer.addListener('onError', (event) => {if (event.error.includes('network')) {// Netzwerkfehler behandelnshowRetryButton();}}); -
Ressourcenverwaltung: Player immer zerstören, wenn fertig
-
Autoplay-Richtlinien: Stummgeschaltet starten für zuverlässiges Autoplay
-
Qualitätsauswahl: IVS automatische Qualitätsumschaltung handhaben lassen
Fehlerbehebung
Section titled “Fehlerbehebung”Stream wird nicht abgespielt:
- Überprüfen Sie, ob die IVS-Wiedergabe-URL gültig ist
- Netzwerkberechtigungen prüfen
- Stellen Sie sicher, dass der Stream live ist
Hohe Latenz:
- IVS ist für niedrige Latenz optimiert, überprüfen Sie Ihre Encoder-Einstellungen
- Stellen Sie sicher, dass Sie die IVS-spezifische Wiedergabe-URL verwenden
Qualitätsprobleme:
- Automatische Qualitätsumschaltung zulassen
- Netzwerkbandbreiten-Anforderungen prüfen