# XStream Player SDK

A powerful and feature-rich video player SDK for streaming content, built with TypeScript and HLS.js.

## Features

- HLS (HTTP Live Streaming) support
- Adaptive bitrate streaming
- Analytics tracking
- Quality level switching
- Customizable UI
- TypeScript support
- Comprehensive event system
- Bandwidth monitoring
- Watch time tracking

## Installation

```bash
npm install @xnstream/player-sdk
```

## Quick Start

```typescript
import { StreamPlayer } from '@xnstream/player-sdk';

// Create player instance
const player = await StreamPlayer.create({
  appId: 'your-app-id',
  stream_code: 'your-stream-code',
  containerId: 'player-container'
});

// Initialize the player
await player.initialize();

// Play the stream
await player.play();
```

## API Reference

### StreamPlayer

The main player class that handles video playback and streaming.

#### Methods

- `create(options: StreamPlayerOptions): Promise<StreamPlayer>`
- `initialize(): Promise<void>`
- `play(): Promise<void>`
- `pause(): void`
- `seek(time: number): void`
- `setVolume(volume: number): void`
- `getVolume(): number`
- `isMuted(): boolean`
- `toggleMute(): void`
- `switchLevel(level: number): void`
- `getLevels(): Level[]`
- `getCurrentLevel(): number`
- `isAutolevelEnabled(): boolean`
- `seekToLive(): void`
- `destroy(): void`

#### Events

- `ready`: Emitted when the player is ready to play
- `playing`: Emitted when playback starts
- `paused`: Emitted when playback is paused
- `ended`: Emitted when playback ends
- `buffering`: Emitted when the player is buffering
- `error`: Emitted when an error occurs
- `onProgressUpdate`: Emitted with playback progress updates
- `onLevelsLoaded`: Emitted when quality levels are loaded
- `onLevelSwitch`: Emitted when quality level changes
- `onBufferUpdated`: Emitted when buffer is updated
- `onDataLoaded`: Emitted when video data is loaded
- `volumechange`: Emitted when volume changes
- `onResourceChange`: Emitted when the resource changes

## Configuration

### StreamPlayerOptions

```typescript
interface StreamPlayerOptions {
  appId: string;
  stream_code: string;
  containerId: string;
}
```

## Analytics

The SDK includes built-in analytics tracking for:
- Watch time
- Bandwidth usage
- Error tracking
- Quality level changes

## Browser Support

- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)

## License

MIT

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

## Repository

This project is hosted on GitHub: [https://github.com/caltek/xPlayerSDKJS](https://github.com/caltek/xPlayerSDKJS) 