unified-video-framework 1.3.0 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/INSTALLATION.md +285 -0
- package/README.md +23 -2
- package/index.d.ts +14 -0
- package/index.js +21 -0
- package/package.json +36 -3
- package/packages/core/dist/BasePlayer.d.ts +60 -0
- package/packages/core/dist/BasePlayer.d.ts.map +1 -0
- package/packages/core/dist/BasePlayer.js +179 -0
- package/packages/core/dist/BasePlayer.js.map +1 -0
- package/packages/core/dist/PlayerFactory.d.ts +11 -0
- package/packages/core/dist/PlayerFactory.d.ts.map +1 -0
- package/packages/core/dist/PlayerFactory.js +194 -0
- package/packages/core/dist/PlayerFactory.js.map +1 -0
- package/packages/core/dist/VideoPlayer.d.ts +71 -0
- package/packages/core/dist/VideoPlayer.d.ts.map +1 -0
- package/packages/core/dist/VideoPlayer.js +134 -0
- package/packages/core/dist/VideoPlayer.js.map +1 -0
- package/packages/core/dist/VideoPlayerFactory.d.ts +8 -0
- package/packages/core/dist/VideoPlayerFactory.d.ts.map +1 -0
- package/packages/core/dist/VideoPlayerFactory.js +93 -0
- package/packages/core/dist/VideoPlayerFactory.js.map +1 -0
- package/packages/core/dist/index.d.ts +7 -0
- package/packages/core/dist/index.d.ts.map +1 -0
- package/packages/core/dist/index.js +26 -0
- package/packages/core/dist/index.js.map +1 -0
- package/packages/core/dist/interfaces/IVideoPlayer.d.ts +150 -0
- package/packages/core/dist/interfaces/IVideoPlayer.d.ts.map +1 -0
- package/packages/core/dist/interfaces/IVideoPlayer.js +3 -0
- package/packages/core/dist/interfaces/IVideoPlayer.js.map +1 -0
- package/packages/core/dist/interfaces.d.ts +192 -0
- package/packages/core/dist/interfaces.d.ts.map +1 -0
- package/packages/core/dist/interfaces.js +34 -0
- package/packages/core/dist/interfaces.js.map +1 -0
- package/packages/core/dist/utils/EventEmitter.d.ts +14 -0
- package/packages/core/dist/utils/EventEmitter.d.ts.map +1 -0
- package/packages/core/dist/utils/EventEmitter.js +59 -0
- package/packages/core/dist/utils/EventEmitter.js.map +1 -0
- package/packages/core/dist/utils/PlatformDetector.d.ts +29 -0
- package/packages/core/dist/utils/PlatformDetector.d.ts.map +1 -0
- package/packages/core/dist/utils/PlatformDetector.js +263 -0
- package/packages/core/dist/utils/PlatformDetector.js.map +1 -0
- package/packages/react-native/dist/ReactNativePlayer.d.ts +16 -0
- package/packages/react-native/dist/ReactNativePlayer.d.ts.map +1 -0
- package/packages/react-native/dist/ReactNativePlayer.js +312 -0
- package/packages/react-native/dist/ReactNativePlayer.js.map +1 -0
- package/packages/react-native/dist/VideoPlayer.d.ts +43 -0
- package/packages/react-native/dist/VideoPlayer.d.ts.map +1 -0
- package/packages/react-native/dist/VideoPlayer.js +148 -0
- package/packages/react-native/dist/VideoPlayer.js.map +1 -0
- package/packages/react-native/dist/index.d.ts +5 -0
- package/packages/react-native/dist/index.d.ts.map +1 -0
- package/packages/react-native/dist/index.js +9 -0
- package/packages/react-native/dist/index.js.map +1 -0
- package/packages/react-native/dist/utils/EventEmitter.d.ts +14 -0
- package/packages/react-native/dist/utils/EventEmitter.d.ts.map +1 -0
- package/packages/react-native/dist/utils/EventEmitter.js +59 -0
- package/packages/react-native/dist/utils/EventEmitter.js.map +1 -0
- package/packages/web/dist/HTML5Player.d.ts +63 -0
- package/packages/web/dist/HTML5Player.d.ts.map +1 -0
- package/packages/web/dist/HTML5Player.js +447 -0
- package/packages/web/dist/HTML5Player.js.map +1 -0
- package/packages/web/dist/SecureVideoPlayer.d.ts +132 -0
- package/packages/web/dist/SecureVideoPlayer.d.ts.map +1 -0
- package/packages/web/dist/SecureVideoPlayer.js +866 -0
- package/packages/web/dist/SecureVideoPlayer.js.map +1 -0
- package/packages/web/dist/WebPlayer.d.ts +121 -0
- package/packages/web/dist/WebPlayer.d.ts.map +1 -0
- package/packages/web/dist/WebPlayer.js +2950 -0
- package/packages/web/dist/WebPlayer.js.map +1 -0
- package/packages/web/dist/index.d.ts +5 -0
- package/packages/web/dist/index.d.ts.map +1 -0
- package/packages/web/dist/index.js +24 -0
- package/packages/web/dist/index.js.map +1 -0
- package/packages/web/dist/paywall/PaywallController.d.ts +24 -0
- package/packages/web/dist/paywall/PaywallController.d.ts.map +1 -0
- package/packages/web/dist/paywall/PaywallController.js +222 -0
- package/packages/web/dist/paywall/PaywallController.js.map +1 -0
- package/packages/web/dist/react/WebPlayerView.d.ts +32 -0
- package/packages/web/dist/react/WebPlayerView.d.ts.map +1 -0
- package/packages/web/dist/react/WebPlayerView.js +164 -0
- package/packages/web/dist/react/WebPlayerView.js.map +1 -0
- package/.github/workflows/ci.yml +0 -253
- package/ANDROID_TV_IMPLEMENTATION.md +0 -313
- package/COMPLETION_STATUS.md +0 -165
- package/CONTRIBUTING.md +0 -376
- package/FINAL_STATUS_REPORT.md +0 -170
- package/FRAMEWORK_REVIEW.md +0 -247
- package/IMPROVEMENTS_SUMMARY.md +0 -168
- package/NATIVE_APP_INTEGRATION_GUIDE.md +0 -903
- package/PAYWALL_RENTAL_FLOW.md +0 -499
- package/PLATFORM_SETUP_GUIDE.md +0 -1636
- package/RUN_LOCALLY.md +0 -151
- package/apps/demo/cast-sender-min.html +0 -173
- package/apps/demo/custom-player.html +0 -883
- package/apps/demo/demo.html +0 -990
- package/apps/demo/enhanced-player.html +0 -3556
- package/apps/demo/index.html +0 -159
- package/apps/rental-api/.env.example +0 -24
- package/apps/rental-api/README.md +0 -23
- package/apps/rental-api/migrations/001_init.sql +0 -35
- package/apps/rental-api/migrations/002_videos.sql +0 -10
- package/apps/rental-api/migrations/003_add_gateway_subref.sql +0 -4
- package/apps/rental-api/migrations/004_update_gateways.sql +0 -4
- package/apps/rental-api/migrations/005_seed_demo_video.sql +0 -5
- package/apps/rental-api/package-lock.json +0 -2045
- package/apps/rental-api/package.json +0 -33
- package/apps/rental-api/scripts/run-migration.js +0 -42
- package/apps/rental-api/scripts/update-video-currency.js +0 -21
- package/apps/rental-api/scripts/update-video-price.js +0 -19
- package/apps/rental-api/src/config.ts +0 -14
- package/apps/rental-api/src/db.ts +0 -10
- package/apps/rental-api/src/routes/cashfree.ts +0 -167
- package/apps/rental-api/src/routes/pesapal.ts +0 -92
- package/apps/rental-api/src/routes/rentals.ts +0 -242
- package/apps/rental-api/src/routes/webhooks.ts +0 -73
- package/apps/rental-api/src/server.ts +0 -41
- package/apps/rental-api/src/services/entitlements.ts +0 -45
- package/apps/rental-api/src/services/payments.ts +0 -22
- package/apps/rental-api/tsconfig.json +0 -17
- package/check-urls.ps1 +0 -74
- package/comparison-report.md +0 -181
- package/docs/PAYWALL.md +0 -95
- package/docs/PLAYER_UI_VISIBILITY.md +0 -431
- package/docs/README.md +0 -7
- package/docs/SYSTEM_ARCHITECTURE.md +0 -612
- package/docs/VDOCIPHER_CLONE_REQUIREMENTS.md +0 -403
- package/examples/android/JavaSampleApp/MainActivity.java +0 -641
- package/examples/android/JavaSampleApp/activity_main.xml +0 -226
- package/examples/android/SampleApp/MainActivity.kt +0 -430
- package/examples/ios/SampleApp/ViewController.swift +0 -337
- package/examples/ios/SwiftUISampleApp/ContentView.swift +0 -304
- package/iOS_IMPLEMENTATION_OPTIONS.md +0 -470
- package/ios/UnifiedVideoPlayer/UnifiedVideoPlayer.podspec +0 -33
- package/jest.config.js +0 -33
- package/jitpack.yml +0 -5
- package/lerna.json +0 -35
- package/packages/PLATFORM_STATUS.md +0 -163
- package/packages/android/build.gradle +0 -135
- package/packages/core/tsconfig.json +0 -20
- package/packages/ios/BUILD_INSTRUCTIONS.md +0 -108
- package/packages/ios/FIX_EMBED_ISSUE.md +0 -142
- package/packages/ios/GETTING_STARTED.md +0 -100
- package/packages/ios/Package.swift +0 -35
- package/packages/ios/Sources/UnifiedVideoPlayer/Analytics/AnalyticsEmitter.swift +0 -26
- package/packages/ios/Sources/UnifiedVideoPlayer/DRM/FairPlayDRMManager.swift +0 -102
- package/packages/ios/Sources/UnifiedVideoPlayer/Info.plist +0 -24
- package/packages/ios/Sources/UnifiedVideoPlayer/Remote/RemoteCommandCenter.swift +0 -109
- package/packages/ios/Sources/UnifiedVideoPlayer/UnifiedVideoPlayer.swift +0 -811
- package/packages/ios/Sources/UnifiedVideoPlayer/UnifiedVideoPlayerView.swift +0 -640
- package/packages/ios/Sources/UnifiedVideoPlayer/Utilities/Color+Hex.swift +0 -36
- package/packages/ios/UnifiedVideoPlayer.podspec +0 -27
- package/packages/ios/UnifiedVideoPlayer.xcodeproj/project.pbxproj +0 -385
- package/packages/ios/build_framework.sh +0 -55
- package/packages/react-native/android/src/main/java/com/unifiedvideo/UnifiedVideoPlayerModule.kt +0 -482
- package/packages/react-native/ios/UnifiedVideoPlayer.swift +0 -436
- package/packages/react-native/tsconfig.json +0 -31
- package/packages/roku/components/UnifiedVideoPlayer.brs +0 -400
- package/packages/roku/source/VideoPlayer.brs +0 -231
- package/packages/roku/source/main.brs +0 -28
- package/packages/web/GETTING_STARTED.md +0 -292
- package/packages/web/jest.config.js +0 -28
- package/packages/web/jest.setup.ts +0 -110
- package/packages/web/tsconfig.json +0 -23
- package/packages/web/webpack.config.js +0 -45
- package/server.js +0 -131
- package/server.py +0 -84
- package/test-urls.ps1 +0 -97
- package/test-video-urls.ps1 +0 -87
- package/tsconfig.json +0 -39
package/INSTALLATION.md
ADDED
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
# Installation Guide - Unified Video Framework
|
|
2
|
+
|
|
3
|
+
This guide will help you install and use the Unified Video Framework in your project.
|
|
4
|
+
|
|
5
|
+
## 🚀 Installation Methods
|
|
6
|
+
|
|
7
|
+
### Method 1: Install from npm (Recommended)
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Using npm
|
|
11
|
+
npm install unified-video-framework
|
|
12
|
+
|
|
13
|
+
# Using yarn
|
|
14
|
+
yarn add unified-video-framework
|
|
15
|
+
|
|
16
|
+
# Using pnpm
|
|
17
|
+
pnpm add unified-video-framework
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Method 2: Install from GitHub (Latest Development)
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Install from the main branch
|
|
24
|
+
npm install github:flicknexs/unified-video-framework
|
|
25
|
+
|
|
26
|
+
# Or install from a specific branch/tag
|
|
27
|
+
npm install github:flicknexs/unified-video-framework#main
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Method 3: Install from Local Path
|
|
31
|
+
|
|
32
|
+
If you have cloned the repository locally:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# First, build the packages
|
|
36
|
+
cd /path/to/unified-video-framework
|
|
37
|
+
npm install
|
|
38
|
+
npm run build
|
|
39
|
+
|
|
40
|
+
# Then in your project, install from local path
|
|
41
|
+
cd /path/to/your-project
|
|
42
|
+
npm install /path/to/unified-video-framework
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Method 4: Using npm link (For Development)
|
|
46
|
+
|
|
47
|
+
This is useful when you're actively developing both the framework and your application:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# In the framework directory
|
|
51
|
+
cd /path/to/unified-video-framework
|
|
52
|
+
npm link
|
|
53
|
+
|
|
54
|
+
# In your project directory
|
|
55
|
+
cd /path/to/your-project
|
|
56
|
+
npm link unified-video-framework
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## 📦 Usage in Your Project
|
|
60
|
+
|
|
61
|
+
### Basic Import
|
|
62
|
+
|
|
63
|
+
```javascript
|
|
64
|
+
// CommonJS
|
|
65
|
+
const { UnifiedVideoPlayer, WebPlayer } = require('unified-video-framework');
|
|
66
|
+
|
|
67
|
+
// ES6 Modules
|
|
68
|
+
import { UnifiedVideoPlayer, WebPlayer } from 'unified-video-framework';
|
|
69
|
+
|
|
70
|
+
// Import specific packages
|
|
71
|
+
import { WebPlayer } from 'unified-video-framework/web';
|
|
72
|
+
import { BasePlayer } from 'unified-video-framework/core';
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### TypeScript Usage
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
import {
|
|
79
|
+
UnifiedVideoPlayer,
|
|
80
|
+
VideoPlayerConfig,
|
|
81
|
+
VideoSource,
|
|
82
|
+
PlayerState
|
|
83
|
+
} from 'unified-video-framework';
|
|
84
|
+
|
|
85
|
+
// Use with proper types
|
|
86
|
+
const config: VideoPlayerConfig = {
|
|
87
|
+
autoPlay: true,
|
|
88
|
+
controls: true
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
const player = new UnifiedVideoPlayer(container, config);
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### React Component Usage
|
|
95
|
+
|
|
96
|
+
```jsx
|
|
97
|
+
import React from 'react';
|
|
98
|
+
import { WebPlayerView } from 'unified-video-framework/web';
|
|
99
|
+
|
|
100
|
+
function VideoComponent() {
|
|
101
|
+
return (
|
|
102
|
+
<WebPlayerView
|
|
103
|
+
url="https://example.com/video.m3u8"
|
|
104
|
+
type="hls"
|
|
105
|
+
config={{
|
|
106
|
+
autoPlay: true,
|
|
107
|
+
controls: true
|
|
108
|
+
}}
|
|
109
|
+
onReady={() => console.log('Player ready')}
|
|
110
|
+
onError={(error) => console.error('Player error:', error)}
|
|
111
|
+
/>
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## 🛠️ Troubleshooting
|
|
117
|
+
|
|
118
|
+
### Error: Can't resolve 'unified-video-framework'
|
|
119
|
+
|
|
120
|
+
This error occurs when the package is not properly installed or the module resolution is failing.
|
|
121
|
+
|
|
122
|
+
**Solutions:**
|
|
123
|
+
|
|
124
|
+
1. **Check if the package is installed:**
|
|
125
|
+
```bash
|
|
126
|
+
npm list unified-video-framework
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
2. **Clear npm cache and reinstall:**
|
|
130
|
+
```bash
|
|
131
|
+
npm cache clean --force
|
|
132
|
+
rm -rf node_modules package-lock.json
|
|
133
|
+
npm install
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
3. **Check your import path:**
|
|
137
|
+
```javascript
|
|
138
|
+
// Correct
|
|
139
|
+
import { WebPlayer } from 'unified-video-framework';
|
|
140
|
+
|
|
141
|
+
// Incorrect
|
|
142
|
+
import { WebPlayer } from 'unified-video-framework/packages/web';
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Error: Module not found in TypeScript
|
|
146
|
+
|
|
147
|
+
Add the types to your `tsconfig.json`:
|
|
148
|
+
|
|
149
|
+
```json
|
|
150
|
+
{
|
|
151
|
+
"compilerOptions": {
|
|
152
|
+
"types": ["unified-video-framework"]
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Build Errors
|
|
158
|
+
|
|
159
|
+
If you encounter build errors after installation:
|
|
160
|
+
|
|
161
|
+
1. **Ensure peer dependencies are installed:**
|
|
162
|
+
```bash
|
|
163
|
+
npm install hls.js dashjs
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
2. **For React Native projects:**
|
|
167
|
+
```bash
|
|
168
|
+
npm install react-native-video
|
|
169
|
+
cd ios && pod install
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## 🔧 Advanced Configuration
|
|
173
|
+
|
|
174
|
+
### Webpack Configuration
|
|
175
|
+
|
|
176
|
+
If you're using Webpack, you might need to add aliases:
|
|
177
|
+
|
|
178
|
+
```javascript
|
|
179
|
+
// webpack.config.js
|
|
180
|
+
module.exports = {
|
|
181
|
+
resolve: {
|
|
182
|
+
alias: {
|
|
183
|
+
'unified-video-framework': path.resolve(__dirname, 'node_modules/unified-video-framework')
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### Next.js Configuration
|
|
190
|
+
|
|
191
|
+
For Next.js projects, you might need to transpile the package:
|
|
192
|
+
|
|
193
|
+
```javascript
|
|
194
|
+
// next.config.js
|
|
195
|
+
module.exports = {
|
|
196
|
+
transpilePackages: ['unified-video-framework']
|
|
197
|
+
};
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## 📚 Package Structure
|
|
201
|
+
|
|
202
|
+
After installation, the package structure in your `node_modules` will be:
|
|
203
|
+
|
|
204
|
+
```
|
|
205
|
+
node_modules/
|
|
206
|
+
└── unified-video-framework/
|
|
207
|
+
├── index.js # Main entry point
|
|
208
|
+
├── index.d.ts # TypeScript definitions
|
|
209
|
+
├── package.json
|
|
210
|
+
├── README.md
|
|
211
|
+
├── LICENSE
|
|
212
|
+
└── packages/
|
|
213
|
+
├── core/ # Core interfaces and base classes
|
|
214
|
+
│ ├── dist/
|
|
215
|
+
│ └── src/
|
|
216
|
+
├── web/ # Web player implementation
|
|
217
|
+
│ ├── dist/
|
|
218
|
+
│ └── src/
|
|
219
|
+
└── react-native/ # React Native implementation
|
|
220
|
+
├── dist/
|
|
221
|
+
└── src/
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## 🚀 Quick Start Example
|
|
225
|
+
|
|
226
|
+
Here's a complete example to get you started:
|
|
227
|
+
|
|
228
|
+
```javascript
|
|
229
|
+
// Import the framework
|
|
230
|
+
import { WebPlayer } from 'unified-video-framework';
|
|
231
|
+
|
|
232
|
+
// Create a container element
|
|
233
|
+
const container = document.getElementById('video-container');
|
|
234
|
+
|
|
235
|
+
// Initialize the player
|
|
236
|
+
const player = new WebPlayer(container);
|
|
237
|
+
|
|
238
|
+
// Load and play a video
|
|
239
|
+
player.load({
|
|
240
|
+
url: 'https://example.com/video.mp4',
|
|
241
|
+
type: 'video/mp4'
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
// Listen to events
|
|
245
|
+
player.on('ready', () => {
|
|
246
|
+
console.log('Player is ready');
|
|
247
|
+
player.play();
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
player.on('error', (error) => {
|
|
251
|
+
console.error('Playback error:', error);
|
|
252
|
+
});
|
|
253
|
+
|
|
254
|
+
// Control playback
|
|
255
|
+
player.on('timeupdate', (time) => {
|
|
256
|
+
console.log('Current time:', time);
|
|
257
|
+
});
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
## 📞 Getting Help
|
|
261
|
+
|
|
262
|
+
If you encounter issues:
|
|
263
|
+
|
|
264
|
+
1. Check the [main README](./README.md) for detailed documentation
|
|
265
|
+
2. Look at the [examples](./examples) directory
|
|
266
|
+
3. Create an issue on [GitHub](https://github.com/flicknexs/unified-video-framework/issues)
|
|
267
|
+
4. Check existing issues for similar problems
|
|
268
|
+
|
|
269
|
+
## 🔄 Updating the Package
|
|
270
|
+
|
|
271
|
+
To update to the latest version:
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
# From GitHub
|
|
275
|
+
npm update unified-video-framework
|
|
276
|
+
|
|
277
|
+
# Or reinstall
|
|
278
|
+
npm uninstall unified-video-framework
|
|
279
|
+
npm install github:flicknexs/unified-video-framework
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
**Latest Version:** v1.3.1
|
|
285
|
+
**npm Package:** https://www.npmjs.com/package/unified-video-framework
|
package/README.md
CHANGED
|
@@ -33,14 +33,35 @@ A comprehensive cross-platform video player framework that provides a unified AP
|
|
|
33
33
|
|
|
34
34
|
### Using npm
|
|
35
35
|
```bash
|
|
36
|
-
npm install
|
|
36
|
+
npm install unified-video-framework
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
### Using yarn
|
|
40
40
|
```bash
|
|
41
|
-
yarn add
|
|
41
|
+
yarn add unified-video-framework
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
+
### Using pnpm
|
|
45
|
+
```bash
|
|
46
|
+
pnpm add unified-video-framework
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### From GitHub (latest development version)
|
|
50
|
+
```bash
|
|
51
|
+
npm install github:flicknexs/unified-video-framework
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Using npm link (for development)
|
|
55
|
+
```bash
|
|
56
|
+
# In the framework directory
|
|
57
|
+
npm link
|
|
58
|
+
|
|
59
|
+
# In your project
|
|
60
|
+
npm link unified-video-framework
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
📖 **For detailed installation instructions and troubleshooting, see [INSTALLATION.md](./INSTALLATION.md)**
|
|
64
|
+
|
|
44
65
|
## 🚀 Quick Start
|
|
45
66
|
|
|
46
67
|
### Basic Usage
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Video Framework - TypeScript Definitions
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export * from './packages/core/dist/index';
|
|
6
|
+
export * from './packages/web/dist/index';
|
|
7
|
+
|
|
8
|
+
// Re-export the main classes
|
|
9
|
+
export { VideoPlayerFactory, BasePlayer } from './packages/core/dist/index';
|
|
10
|
+
export { WebPlayer, WebPlayerView } from './packages/web/dist/index';
|
|
11
|
+
|
|
12
|
+
// Export namespaces for sub-packages
|
|
13
|
+
export * as core from './packages/core/dist/index';
|
|
14
|
+
export * as web from './packages/web/dist/index';
|
package/index.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Video Framework
|
|
3
|
+
* Main entry point that re-exports from packages
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
// Re-export everything from core
|
|
7
|
+
module.exports = require('./packages/core/dist/index.js');
|
|
8
|
+
|
|
9
|
+
// Also export specific packages
|
|
10
|
+
module.exports.core = require('./packages/core/dist/index.js');
|
|
11
|
+
module.exports.web = require('./packages/web/dist/index.js');
|
|
12
|
+
|
|
13
|
+
// Export web-specific components if available
|
|
14
|
+
try {
|
|
15
|
+
const webExports = require('./packages/web/dist/index.js');
|
|
16
|
+
Object.keys(webExports).forEach(key => {
|
|
17
|
+
module.exports[key] = webExports[key];
|
|
18
|
+
});
|
|
19
|
+
} catch (e) {
|
|
20
|
+
// Web package may not be built yet
|
|
21
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,41 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "unified-video-framework",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.2",
|
|
4
4
|
"description": "Cross-platform video player framework supporting iOS, Android, Web, Smart TVs (Samsung/LG), Roku, and more",
|
|
5
|
+
"main": "packages/core/dist/index.js",
|
|
6
|
+
"types": "packages/core/dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"require": "./packages/core/dist/index.js",
|
|
10
|
+
"import": "./packages/core/dist/index.js",
|
|
11
|
+
"types": "./packages/core/dist/index.d.ts"
|
|
12
|
+
},
|
|
13
|
+
"./core": {
|
|
14
|
+
"require": "./packages/core/dist/index.js",
|
|
15
|
+
"import": "./packages/core/dist/index.js",
|
|
16
|
+
"types": "./packages/core/dist/index.d.ts"
|
|
17
|
+
},
|
|
18
|
+
"./web": {
|
|
19
|
+
"require": "./packages/web/dist/index.js",
|
|
20
|
+
"import": "./packages/web/dist/index.js",
|
|
21
|
+
"types": "./packages/web/dist/index.d.ts"
|
|
22
|
+
},
|
|
23
|
+
"./react-native": {
|
|
24
|
+
"require": "./packages/react-native/dist/index.js",
|
|
25
|
+
"import": "./packages/react-native/dist/index.js",
|
|
26
|
+
"types": "./packages/react-native/dist/index.d.ts"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"index.js",
|
|
31
|
+
"index.d.ts",
|
|
32
|
+
"packages/*/dist/**/*",
|
|
33
|
+
"packages/*/src/**/*",
|
|
34
|
+
"packages/*/package.json",
|
|
35
|
+
"README.md",
|
|
36
|
+
"LICENSE",
|
|
37
|
+
"INSTALLATION.md"
|
|
38
|
+
],
|
|
5
39
|
"private": false,
|
|
6
40
|
"workspaces": [
|
|
7
41
|
"packages/*",
|
|
@@ -9,7 +43,6 @@
|
|
|
9
43
|
"tools/*"
|
|
10
44
|
],
|
|
11
45
|
"scripts": {
|
|
12
|
-
"postinstall": "npm run build:core",
|
|
13
46
|
"bootstrap": "lerna bootstrap --legacy-peer-deps",
|
|
14
47
|
"build": "npm run build:core && npm run build:web && npm run build:rental-api",
|
|
15
48
|
"build:core": "cd packages/core && npm run build",
|
|
@@ -26,7 +59,7 @@
|
|
|
26
59
|
"test:watch": "jest --watch",
|
|
27
60
|
"lint": "eslint . --ext .ts,.tsx,.js,.jsx",
|
|
28
61
|
"type-check": "tsc --noEmit",
|
|
29
|
-
"
|
|
62
|
+
"prepublishOnly": "npm run build",
|
|
30
63
|
"dev": "lerna run dev --parallel",
|
|
31
64
|
"serve:demo": "node server.js",
|
|
32
65
|
"docs": "typedoc --out docs packages/core/src"
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { IVideoPlayer, VideoSource, PlayerConfig, PlayerState, PlayerEvents, PlayerError, Quality, SubtitleTrack } from './interfaces/IVideoPlayer';
|
|
2
|
+
import { EventEmitter } from './utils/EventEmitter';
|
|
3
|
+
export declare abstract class BasePlayer implements IVideoPlayer {
|
|
4
|
+
protected container: HTMLElement | null;
|
|
5
|
+
protected config: PlayerConfig;
|
|
6
|
+
protected events: EventEmitter;
|
|
7
|
+
protected state: PlayerState;
|
|
8
|
+
protected source: VideoSource | null;
|
|
9
|
+
protected subtitles: SubtitleTrack[];
|
|
10
|
+
protected currentSubtitleIndex: number;
|
|
11
|
+
constructor();
|
|
12
|
+
protected getDefaultConfig(): PlayerConfig;
|
|
13
|
+
protected getDefaultState(): PlayerState;
|
|
14
|
+
initialize(container: HTMLElement | string, config?: PlayerConfig): Promise<void>;
|
|
15
|
+
protected abstract setupPlayer(): Promise<void>;
|
|
16
|
+
abstract destroy(): Promise<void>;
|
|
17
|
+
abstract load(source: VideoSource): Promise<void>;
|
|
18
|
+
play(): Promise<void>;
|
|
19
|
+
pause(): void;
|
|
20
|
+
stop(): void;
|
|
21
|
+
abstract seek(time: number): void;
|
|
22
|
+
setVolume(level: number): void;
|
|
23
|
+
mute(): void;
|
|
24
|
+
unmute(): void;
|
|
25
|
+
toggleMute(): void;
|
|
26
|
+
abstract getQualities(): Quality[];
|
|
27
|
+
abstract getCurrentQuality(): Quality | null;
|
|
28
|
+
abstract setQuality(index: number): void;
|
|
29
|
+
abstract setAutoQuality(enabled: boolean): void;
|
|
30
|
+
setPlaybackRate(rate: number): void;
|
|
31
|
+
getPlaybackRate(): number;
|
|
32
|
+
getCurrentTime(): number;
|
|
33
|
+
getDuration(): number;
|
|
34
|
+
getBufferedPercentage(): number;
|
|
35
|
+
getState(): PlayerState;
|
|
36
|
+
isPlaying(): boolean;
|
|
37
|
+
isPaused(): boolean;
|
|
38
|
+
isEnded(): boolean;
|
|
39
|
+
abstract enterFullscreen(): Promise<void>;
|
|
40
|
+
abstract exitFullscreen(): Promise<void>;
|
|
41
|
+
toggleFullscreen(): Promise<void>;
|
|
42
|
+
abstract enterPictureInPicture(): Promise<void>;
|
|
43
|
+
abstract exitPictureInPicture(): Promise<void>;
|
|
44
|
+
on(event: keyof PlayerEvents, handler: Function): void;
|
|
45
|
+
off(event: keyof PlayerEvents, handler?: Function): void;
|
|
46
|
+
once(event: keyof PlayerEvents, handler: Function): void;
|
|
47
|
+
protected emit(event: keyof PlayerEvents, ...args: any[]): void;
|
|
48
|
+
setFreeDuration?(seconds: number): void;
|
|
49
|
+
resetFreePreviewGate?(): void;
|
|
50
|
+
getSubtitles(): SubtitleTrack[];
|
|
51
|
+
setSubtitleTrack(index: number): void;
|
|
52
|
+
disableSubtitles(): void;
|
|
53
|
+
protected abstract applySubtitleTrack(track: SubtitleTrack): void;
|
|
54
|
+
protected abstract removeSubtitles(): void;
|
|
55
|
+
protected handleError(error: PlayerError): void;
|
|
56
|
+
protected updateTime(time: number): void;
|
|
57
|
+
protected updateBuffered(percentage: number): void;
|
|
58
|
+
protected setBuffering(isBuffering: boolean): void;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=BasePlayer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BasePlayer.d.ts","sourceRoot":"","sources":["../src/BasePlayer.ts"],"names":[],"mappings":"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InD"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BasePlayer = void 0;
|
|
4
|
+
const EventEmitter_1 = require("./utils/EventEmitter");
|
|
5
|
+
class BasePlayer {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.container = null;
|
|
8
|
+
this.source = null;
|
|
9
|
+
this.subtitles = [];
|
|
10
|
+
this.currentSubtitleIndex = -1;
|
|
11
|
+
this.config = this.getDefaultConfig();
|
|
12
|
+
this.events = new EventEmitter_1.EventEmitter();
|
|
13
|
+
this.state = this.getDefaultState();
|
|
14
|
+
}
|
|
15
|
+
getDefaultConfig() {
|
|
16
|
+
return {
|
|
17
|
+
autoPlay: false,
|
|
18
|
+
muted: false,
|
|
19
|
+
volume: 1.0,
|
|
20
|
+
controls: true,
|
|
21
|
+
loop: false,
|
|
22
|
+
preload: 'metadata',
|
|
23
|
+
playsInline: true,
|
|
24
|
+
enableAdaptiveBitrate: true,
|
|
25
|
+
debug: false,
|
|
26
|
+
freeDuration: 0
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
getDefaultState() {
|
|
30
|
+
return {
|
|
31
|
+
isPlaying: false,
|
|
32
|
+
isPaused: true,
|
|
33
|
+
isBuffering: false,
|
|
34
|
+
isEnded: false,
|
|
35
|
+
isError: false,
|
|
36
|
+
currentTime: 0,
|
|
37
|
+
duration: 0,
|
|
38
|
+
bufferedPercentage: 0,
|
|
39
|
+
volume: 1.0,
|
|
40
|
+
isMuted: false,
|
|
41
|
+
playbackRate: 1.0,
|
|
42
|
+
availableQualities: []
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
async initialize(container, config) {
|
|
46
|
+
if (typeof container === 'string') {
|
|
47
|
+
const element = document.querySelector(container);
|
|
48
|
+
if (!element) {
|
|
49
|
+
throw new Error(`Container element not found: ${container}`);
|
|
50
|
+
}
|
|
51
|
+
this.container = element;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
this.container = container;
|
|
55
|
+
}
|
|
56
|
+
this.config = { ...this.getDefaultConfig(), ...config };
|
|
57
|
+
this.state.volume = this.config.volume || 1.0;
|
|
58
|
+
this.state.isMuted = this.config.muted || false;
|
|
59
|
+
await this.setupPlayer();
|
|
60
|
+
}
|
|
61
|
+
async play() {
|
|
62
|
+
this.state.isPlaying = true;
|
|
63
|
+
this.state.isPaused = false;
|
|
64
|
+
this.emit('onPlay');
|
|
65
|
+
}
|
|
66
|
+
pause() {
|
|
67
|
+
this.state.isPlaying = false;
|
|
68
|
+
this.state.isPaused = true;
|
|
69
|
+
this.emit('onPause');
|
|
70
|
+
}
|
|
71
|
+
stop() {
|
|
72
|
+
this.pause();
|
|
73
|
+
this.seek(0);
|
|
74
|
+
this.state.isEnded = true;
|
|
75
|
+
}
|
|
76
|
+
setVolume(level) {
|
|
77
|
+
const volume = Math.max(0, Math.min(1, level));
|
|
78
|
+
this.state.volume = volume;
|
|
79
|
+
this.emit('onVolumeChanged', volume);
|
|
80
|
+
}
|
|
81
|
+
mute() {
|
|
82
|
+
this.state.isMuted = true;
|
|
83
|
+
this.emit('onVolumeChanged', 0);
|
|
84
|
+
}
|
|
85
|
+
unmute() {
|
|
86
|
+
this.state.isMuted = false;
|
|
87
|
+
this.emit('onVolumeChanged', this.state.volume);
|
|
88
|
+
}
|
|
89
|
+
toggleMute() {
|
|
90
|
+
if (this.state.isMuted) {
|
|
91
|
+
this.unmute();
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
this.mute();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
setPlaybackRate(rate) {
|
|
98
|
+
this.state.playbackRate = rate;
|
|
99
|
+
}
|
|
100
|
+
getPlaybackRate() {
|
|
101
|
+
return this.state.playbackRate;
|
|
102
|
+
}
|
|
103
|
+
getCurrentTime() {
|
|
104
|
+
return this.state.currentTime;
|
|
105
|
+
}
|
|
106
|
+
getDuration() {
|
|
107
|
+
return this.state.duration;
|
|
108
|
+
}
|
|
109
|
+
getBufferedPercentage() {
|
|
110
|
+
return this.state.bufferedPercentage;
|
|
111
|
+
}
|
|
112
|
+
getState() {
|
|
113
|
+
return { ...this.state };
|
|
114
|
+
}
|
|
115
|
+
isPlaying() {
|
|
116
|
+
return this.state.isPlaying;
|
|
117
|
+
}
|
|
118
|
+
isPaused() {
|
|
119
|
+
return this.state.isPaused;
|
|
120
|
+
}
|
|
121
|
+
isEnded() {
|
|
122
|
+
return this.state.isEnded;
|
|
123
|
+
}
|
|
124
|
+
async toggleFullscreen() {
|
|
125
|
+
if (document.fullscreenElement) {
|
|
126
|
+
await this.exitFullscreen();
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
await this.enterFullscreen();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
on(event, handler) {
|
|
133
|
+
this.events.on(event, handler);
|
|
134
|
+
}
|
|
135
|
+
off(event, handler) {
|
|
136
|
+
this.events.off(event, handler);
|
|
137
|
+
}
|
|
138
|
+
once(event, handler) {
|
|
139
|
+
this.events.once(event, handler);
|
|
140
|
+
}
|
|
141
|
+
emit(event, ...args) {
|
|
142
|
+
this.events.emit(event, ...args);
|
|
143
|
+
}
|
|
144
|
+
getSubtitles() {
|
|
145
|
+
return this.subtitles;
|
|
146
|
+
}
|
|
147
|
+
setSubtitleTrack(index) {
|
|
148
|
+
if (index >= 0 && index < this.subtitles.length) {
|
|
149
|
+
this.currentSubtitleIndex = index;
|
|
150
|
+
this.applySubtitleTrack(this.subtitles[index]);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
disableSubtitles() {
|
|
154
|
+
this.currentSubtitleIndex = -1;
|
|
155
|
+
this.removeSubtitles();
|
|
156
|
+
}
|
|
157
|
+
handleError(error) {
|
|
158
|
+
this.state.isError = true;
|
|
159
|
+
this.state.isPlaying = false;
|
|
160
|
+
this.emit('onError', error);
|
|
161
|
+
if (this.config.debug) {
|
|
162
|
+
console.error('[VideoPlayer Error]', error);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
updateTime(time) {
|
|
166
|
+
this.state.currentTime = time;
|
|
167
|
+
this.emit('onTimeUpdate', time);
|
|
168
|
+
}
|
|
169
|
+
updateBuffered(percentage) {
|
|
170
|
+
this.state.bufferedPercentage = percentage;
|
|
171
|
+
this.emit('onProgress', percentage);
|
|
172
|
+
}
|
|
173
|
+
setBuffering(isBuffering) {
|
|
174
|
+
this.state.isBuffering = isBuffering;
|
|
175
|
+
this.emit('onBuffering', isBuffering);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
exports.BasePlayer = BasePlayer;
|
|
179
|
+
//# sourceMappingURL=BasePlayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BasePlayer.js","sourceRoot":"","sources":["../src/BasePlayer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { VideoPlayer } from './VideoPlayer';
|
|
2
|
+
import { VideoPlayerConfig, PlatformInfo } from './interfaces';
|
|
3
|
+
export declare class PlayerFactory {
|
|
4
|
+
private static platformDetector;
|
|
5
|
+
static createPlayer(container: HTMLElement | any, config?: VideoPlayerConfig): Promise<VideoPlayer>;
|
|
6
|
+
static getPlatformInfo(): PlatformInfo;
|
|
7
|
+
static isFeatureSupported(feature: string): boolean;
|
|
8
|
+
private static getFeatureSupport;
|
|
9
|
+
static getOptimizedConfig(baseConfig?: VideoPlayerConfig): VideoPlayerConfig;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=PlayerFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlayerFactory.d.ts","sourceRoot":"","sources":["../src/PlayerFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAgB,YAAY,EAAE,MAAM,cAAc,CAAC;AAG7E,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAA0B;WAQ5C,YAAY,CACvB,SAAS,EAAE,WAAW,GAAG,GAAG,EAC5B,MAAM,GAAE,iBAAsB,GAC7B,OAAO,CAAC,WAAW,CAAC;IAiDvB,MAAM,CAAC,eAAe,IAAI,YAAY;IAStC,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKnD,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA2DhC,MAAM,CAAC,kBAAkB,CAAC,UAAU,GAAE,iBAAsB,GAAG,iBAAiB;CAwEjF"}
|