expo-libvlc-player 2.5.0 → 3.0.0
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/README.md +36 -35
- package/android/build.gradle +2 -2
- package/android/src/main/java/expo/modules/libvlcplayer/LibVlcPlayerModule.kt +14 -8
- package/android/src/main/java/expo/modules/libvlcplayer/LibVlcPlayerView.kt +8 -7
- package/android/src/main/java/expo/modules/libvlcplayer/MediaPlayerManager.kt +9 -1
- package/build/LibVlcPlayer.types.d.ts +33 -24
- package/build/LibVlcPlayer.types.d.ts.map +1 -1
- package/build/LibVlcPlayer.types.js.map +1 -1
- package/build/LibVlcPlayerView.js +7 -7
- package/build/LibVlcPlayerView.js.map +1 -1
- package/ios/LibVlcPlayerModule.swift +14 -8
- package/ios/LibVlcPlayerView.swift +8 -7
- package/ios/MediaPlayerManager.swift +7 -1
- package/package.json +1 -1
- package/src/LibVlcPlayer.types.ts +36 -26
- package/src/LibVlcPlayerView.tsx +8 -8
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
|
|
30
30
|
### Installation
|
|
31
31
|
|
|
32
|
-
Add the package to your npm dependencies
|
|
32
|
+
Add the package to your npm dependencies.
|
|
33
33
|
|
|
34
34
|
```
|
|
35
35
|
npm install expo-libvlc-player
|
|
@@ -67,7 +67,7 @@ https://developer.apple.com/documentation/technotes/tn3179-understanding-local-n
|
|
|
67
67
|
|
|
68
68
|
On iOS, the `VLCKit` player experiences a small audio delay when resuming or muting media playback.
|
|
69
69
|
|
|
70
|
-
This might be related to the internal clock used by the library core causing inaccurate
|
|
70
|
+
This might be related to the internal clock used by the library core causing inaccurate time values.
|
|
71
71
|
|
|
72
72
|
https://code.videolan.org/videolan/VLCKit/-/issues/233
|
|
73
73
|
|
|
@@ -127,16 +127,16 @@ See the [Example App](example/components/PlayerView.tsx) for additional usage.
|
|
|
127
127
|
|
|
128
128
|
### Player methods
|
|
129
129
|
|
|
130
|
-
| Method | Description
|
|
131
|
-
| -------------------------------------------------- |
|
|
132
|
-
| `play()` | Starts playback of the current player
|
|
133
|
-
| `pause()` | Pauses playback of the current player
|
|
134
|
-
| `stop()` | Stops playback of the current player
|
|
135
|
-
| `seek(value: number, type?: "
|
|
136
|
-
| `record(path?: string)` | Starts or stops recording the current media. Must be a valid string
|
|
137
|
-
| `snapshot(path: string)` | Takes a snapshot of the current media. Must be a valid string
|
|
138
|
-
| `postAction(action: number)` | Posts an answer to a [`Dialog`](#dialog). Must be an integer of `1` or `2`
|
|
139
|
-
| `dismiss()` | Dismisses a [`Dialog`](#dialog)
|
|
130
|
+
| Method | Description |
|
|
131
|
+
| -------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
|
|
132
|
+
| `play()` | Starts playback of the current player |
|
|
133
|
+
| `pause()` | Pauses playback of the current player |
|
|
134
|
+
| `stop()` | Stops playback of the current player |
|
|
135
|
+
| `seek(value: number, type?: "time" \| "position")` | Sets the time or position of the current player. Must be a number equal or greater than `0`, type defaults to `"time"` |
|
|
136
|
+
| `record(path?: string)` | Starts or stops recording the current media. Must be a valid string |
|
|
137
|
+
| `snapshot(path: string)` | Takes a snapshot of the current media. Must be a valid string |
|
|
138
|
+
| `postAction(action: number)` | Posts an answer to a [`Dialog`](#dialog). Must be an integer of `1` or `2` |
|
|
139
|
+
| `dismiss()` | Dismisses a [`Dialog`](#dialog) |
|
|
140
140
|
|
|
141
141
|
### Player props
|
|
142
142
|
|
|
@@ -155,8 +155,8 @@ The `LibVlcPlayerView` extends React Native `ViewProps` and implements the follo
|
|
|
155
155
|
| `volume` | Sets the player volume. Must be an integer between `0` and `100` | `100` |
|
|
156
156
|
| `mute` | Sets the player volume to `0` when `true`. Previous value is set when `false` | `false` |
|
|
157
157
|
| `audioMixingMode` | Determines how the player will interact with other audio in the system | `"auto"` |
|
|
158
|
-
| `repeat` | Determines whether the media should repeat once ended | `false` |
|
|
159
158
|
| `playInBackground` | Determines whether the media should continue playing in the background | `false` |
|
|
159
|
+
| `repeat` | Determines whether the media should repeat once ended | `false` |
|
|
160
160
|
| `autoplay` | Determines whether the media should autoplay once created | `true` |
|
|
161
161
|
|
|
162
162
|
#### Callback props
|
|
@@ -169,13 +169,14 @@ The `LibVlcPlayerView` extends React Native `ViewProps` and implements the follo
|
|
|
169
169
|
| `onStopped` | Called after the `Stopped` player event | |
|
|
170
170
|
| `onEndReached` | Called after the `EndReached` player event | |
|
|
171
171
|
| `onEncounteredError` | Called after the `EncounteredError` player event | `{ error: string }` |
|
|
172
|
+
| `onDialogDisplay` | Called after a `Dialog` needs to be displayed | [`Dialog`](#dialog) |
|
|
172
173
|
| `onTimeChanged` | Called after the `TimeChanged` player event | `{ time: number }` |
|
|
173
174
|
| `onPositionChanged` | Called after the `PositionChanged` player event | `{ position: number }` |
|
|
174
175
|
| `onESAdded` | Called after the `ESAdded` player event | [`MediaTracks`](#mediatracks) |
|
|
175
176
|
| `onRecordChanged` | Called after the `RecordChanged` player event | [`Recording`](#recording) |
|
|
176
177
|
| `onSnapshotTaken` | Called after a media snapshot is taken | `{ path: string }` |
|
|
177
|
-
| `onDialogDisplay` | Called after a `Dialog` needs to be displayed | [`Dialog`](#dialog) |
|
|
178
178
|
| `onFirstPlay` | Called after the player first playing event | [`MediaInfo`](#mediainfo) |
|
|
179
|
+
| `onForeground` | Called after the player enters the foreground | |
|
|
179
180
|
| `onBackground` | Called after the player enters the background | |
|
|
180
181
|
|
|
181
182
|
### Player types
|
|
@@ -200,6 +201,27 @@ The `LibVlcPlayerView` extends React Native `ViewProps` and implements the follo
|
|
|
200
201
|
}
|
|
201
202
|
```
|
|
202
203
|
|
|
204
|
+
#### `Dialog`
|
|
205
|
+
|
|
206
|
+
```ts
|
|
207
|
+
{
|
|
208
|
+
title: string;
|
|
209
|
+
text: string;
|
|
210
|
+
cancelText?: string;
|
|
211
|
+
action1Text?: string;
|
|
212
|
+
action2Text?: string;
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
#### `Recording`
|
|
217
|
+
|
|
218
|
+
```ts
|
|
219
|
+
{
|
|
220
|
+
path: string | null;
|
|
221
|
+
isRecording: boolean;
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
203
225
|
#### `Track`
|
|
204
226
|
|
|
205
227
|
```ts
|
|
@@ -231,27 +253,6 @@ The `LibVlcPlayerView` extends React Native `ViewProps` and implements the follo
|
|
|
231
253
|
}
|
|
232
254
|
```
|
|
233
255
|
|
|
234
|
-
#### `Recording`
|
|
235
|
-
|
|
236
|
-
```ts
|
|
237
|
-
{
|
|
238
|
-
path: string | null;
|
|
239
|
-
isRecording: boolean;
|
|
240
|
-
}
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
#### `Dialog`
|
|
244
|
-
|
|
245
|
-
```ts
|
|
246
|
-
{
|
|
247
|
-
title: string;
|
|
248
|
-
text: string;
|
|
249
|
-
cancelText?: string;
|
|
250
|
-
action1Text?: string;
|
|
251
|
-
action2Text?: string;
|
|
252
|
-
}
|
|
253
|
-
```
|
|
254
|
-
|
|
255
256
|
## Disclaimer
|
|
256
257
|
|
|
257
258
|
This project is not affiliated with, endorsed by, or officially supported by VideoLAN. The VLC icon is trademark of VideoLAN and is used here solely to indicate compatibility with the following **LibVLC** bindings:
|
package/android/build.gradle
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
apply plugin: "com.android.library"
|
|
2
2
|
|
|
3
3
|
group = "expo.modules.libvlcplayer"
|
|
4
|
-
version = "
|
|
4
|
+
version = "3.0.0"
|
|
5
5
|
|
|
6
6
|
def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
|
|
7
7
|
apply from: expoModulesCorePlugin
|
|
@@ -27,7 +27,7 @@ android {
|
|
|
27
27
|
namespace "expo.modules.libvlcplayer"
|
|
28
28
|
defaultConfig {
|
|
29
29
|
versionCode 1
|
|
30
|
-
versionName "
|
|
30
|
+
versionName "3.0.0"
|
|
31
31
|
consumerProguardFiles("proguard-rules.pro")
|
|
32
32
|
}
|
|
33
33
|
lintOptions {
|
|
@@ -12,13 +12,14 @@ private const val PAUSED_EVENT = "onPaused"
|
|
|
12
12
|
private const val STOPPED_EVENT = "onStopped"
|
|
13
13
|
private const val END_REACHED_EVENT = "onEndReached"
|
|
14
14
|
private const val ENCOUNTERED_ERROR_EVENT = "onEncounteredError"
|
|
15
|
+
private const val DIALOG_DISPLAY_EVENT = "onDialogDisplay"
|
|
15
16
|
private const val TIME_CHANGED_EVENT = "onTimeChanged"
|
|
16
17
|
private const val POSITION_CHANGED_EVENT = "onPositionChanged"
|
|
17
18
|
private const val ES_ADDED_EVENT = "onESAdded"
|
|
18
19
|
private const val RECORD_CHANGED_EVENT = "onRecordChanged"
|
|
19
20
|
private const val SNAPSHOT_TAKEN_EVENT = "onSnapshotTaken"
|
|
20
|
-
private const val DIALOG_DISPLAY_EVENT = "onDialogDisplay"
|
|
21
21
|
private const val FIRST_PLAY_EVENT = "onFirstPlay"
|
|
22
|
+
private const val FOREROUND_EVENT = "onForeground"
|
|
22
23
|
private const val BACKGROUND_EVENT = "onBackground"
|
|
23
24
|
|
|
24
25
|
val playerEvents =
|
|
@@ -29,13 +30,14 @@ val playerEvents =
|
|
|
29
30
|
STOPPED_EVENT,
|
|
30
31
|
END_REACHED_EVENT,
|
|
31
32
|
ENCOUNTERED_ERROR_EVENT,
|
|
33
|
+
DIALOG_DISPLAY_EVENT,
|
|
32
34
|
TIME_CHANGED_EVENT,
|
|
33
35
|
POSITION_CHANGED_EVENT,
|
|
34
36
|
ES_ADDED_EVENT,
|
|
35
37
|
RECORD_CHANGED_EVENT,
|
|
36
38
|
SNAPSHOT_TAKEN_EVENT,
|
|
37
|
-
DIALOG_DISPLAY_EVENT,
|
|
38
39
|
FIRST_PLAY_EVENT,
|
|
40
|
+
FOREROUND_EVENT,
|
|
39
41
|
BACKGROUND_EVENT,
|
|
40
42
|
)
|
|
41
43
|
|
|
@@ -99,14 +101,14 @@ class LibVlcPlayerModule : Module() {
|
|
|
99
101
|
view.audioMixingMode = audioMixingMode ?: AudioMixingMode.AUTO
|
|
100
102
|
}
|
|
101
103
|
|
|
102
|
-
Prop("repeat") { view: LibVlcPlayerView, repeat: Boolean? ->
|
|
103
|
-
view.repeat = repeat ?: false
|
|
104
|
-
}
|
|
105
|
-
|
|
106
104
|
Prop("playInBackground") { view: LibVlcPlayerView, playInBackground: Boolean? ->
|
|
107
105
|
view.playInBackground = playInBackground ?: false
|
|
108
106
|
}
|
|
109
107
|
|
|
108
|
+
Prop("repeat") { view: LibVlcPlayerView, repeat: Boolean? ->
|
|
109
|
+
view.repeat = repeat ?: false
|
|
110
|
+
}
|
|
111
|
+
|
|
110
112
|
Prop("autoplay") { view: LibVlcPlayerView, autoplay: Boolean? ->
|
|
111
113
|
view.autoplay = autoplay ?: true
|
|
112
114
|
}
|
|
@@ -133,7 +135,7 @@ class LibVlcPlayerModule : Module() {
|
|
|
133
135
|
}
|
|
134
136
|
|
|
135
137
|
AsyncFunction("seek") { view: LibVlcPlayerView, value: Double, type: String? ->
|
|
136
|
-
view.seek(value, type ?: "
|
|
138
|
+
view.seek(value, type ?: "time")
|
|
137
139
|
}
|
|
138
140
|
|
|
139
141
|
AsyncFunction("record") { view: LibVlcPlayerView, path: String? ->
|
|
@@ -153,8 +155,12 @@ class LibVlcPlayerModule : Module() {
|
|
|
153
155
|
}
|
|
154
156
|
}
|
|
155
157
|
|
|
158
|
+
OnActivityEntersForeground {
|
|
159
|
+
MediaPlayerManager.onPlayerForeground()
|
|
160
|
+
}
|
|
161
|
+
|
|
156
162
|
OnActivityEntersBackground {
|
|
157
|
-
MediaPlayerManager.
|
|
163
|
+
MediaPlayerManager.onPlayerBackground()
|
|
158
164
|
}
|
|
159
165
|
}
|
|
160
166
|
}
|
|
@@ -71,13 +71,14 @@ class LibVlcPlayerView(
|
|
|
71
71
|
internal val onStopped by EventDispatcher<Unit>()
|
|
72
72
|
internal val onEndReached by EventDispatcher<Unit>()
|
|
73
73
|
internal val onEncounteredError by EventDispatcher()
|
|
74
|
+
internal val onDialogDisplay by EventDispatcher<Dialog>()
|
|
74
75
|
internal val onTimeChanged by EventDispatcher()
|
|
75
76
|
internal val onPositionChanged by EventDispatcher()
|
|
76
77
|
internal val onESAdded by EventDispatcher<MediaTracks>()
|
|
77
78
|
internal val onRecordChanged by EventDispatcher<Recording>()
|
|
78
79
|
internal val onSnapshotTaken by EventDispatcher()
|
|
79
|
-
internal val onDialogDisplay by EventDispatcher<Dialog>()
|
|
80
80
|
internal val onFirstPlay by EventDispatcher<MediaInfo>()
|
|
81
|
+
internal val onForeground by EventDispatcher<Unit>()
|
|
81
82
|
internal val onBackground by EventDispatcher<Unit>()
|
|
82
83
|
|
|
83
84
|
init {
|
|
@@ -397,6 +398,12 @@ class LibVlcPlayerView(
|
|
|
397
398
|
MediaPlayerManager.audioFocusManager.updateAudioFocus()
|
|
398
399
|
}
|
|
399
400
|
|
|
401
|
+
var playInBackground: Boolean = false
|
|
402
|
+
set(value) {
|
|
403
|
+
field = value
|
|
404
|
+
MediaPlayerManager.audioFocusManager.updateAudioFocus()
|
|
405
|
+
}
|
|
406
|
+
|
|
400
407
|
var repeat: Boolean = false
|
|
401
408
|
set(value) {
|
|
402
409
|
field = value
|
|
@@ -407,12 +414,6 @@ class LibVlcPlayerView(
|
|
|
407
414
|
}
|
|
408
415
|
}
|
|
409
416
|
|
|
410
|
-
var playInBackground: Boolean = false
|
|
411
|
-
set(value) {
|
|
412
|
-
field = value
|
|
413
|
-
MediaPlayerManager.audioFocusManager.updateAudioFocus()
|
|
414
|
-
}
|
|
415
|
-
|
|
416
417
|
var autoplay: Boolean = true
|
|
417
418
|
set(value) {
|
|
418
419
|
field = value
|
|
@@ -31,7 +31,15 @@ object MediaPlayerManager {
|
|
|
31
31
|
playerViews.removeAll { it.get() == view }
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
fun
|
|
34
|
+
fun onPlayerForeground() {
|
|
35
|
+
playerViews.forEach { playerView ->
|
|
36
|
+
playerView.get()?.let { view ->
|
|
37
|
+
view.onForeground(Unit)
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
fun onPlayerBackground() {
|
|
35
43
|
playerViews.forEach { playerView ->
|
|
36
44
|
playerView.get()?.let { view ->
|
|
37
45
|
view.onBackground(Unit)
|
|
@@ -19,14 +19,14 @@ export interface LibVlcPlayerViewRef {
|
|
|
19
19
|
*/
|
|
20
20
|
readonly stop: () => Promise<void>;
|
|
21
21
|
/**
|
|
22
|
-
* Sets the
|
|
22
|
+
* Sets the time or position of the current player
|
|
23
23
|
*
|
|
24
24
|
* @param value - Must be a number equal or greater than `0`
|
|
25
|
-
* @param type - Defaults to `"
|
|
25
|
+
* @param type - Defaults to `"time"`
|
|
26
26
|
*
|
|
27
27
|
* @returns A promise which resolves to `void`
|
|
28
28
|
*/
|
|
29
|
-
readonly seek: (value: number, type?: "
|
|
29
|
+
readonly seek: (value: number, type?: "time" | "position") => Promise<void>;
|
|
30
30
|
/**
|
|
31
31
|
* Starts or stops recording the current media
|
|
32
32
|
*
|
|
@@ -77,6 +77,17 @@ export interface NativeEvent<T> {
|
|
|
77
77
|
nativeEvent: T & NativeEventProps;
|
|
78
78
|
}
|
|
79
79
|
export type LibVlcEvent<T> = Omit<T & NativeEventProps, "target">;
|
|
80
|
+
export interface Dialog {
|
|
81
|
+
title: string;
|
|
82
|
+
text: string;
|
|
83
|
+
cancelText?: string;
|
|
84
|
+
action1Text?: string;
|
|
85
|
+
action2Text?: string;
|
|
86
|
+
}
|
|
87
|
+
export interface Recording {
|
|
88
|
+
path: string | null;
|
|
89
|
+
isRecording: boolean;
|
|
90
|
+
}
|
|
80
91
|
export interface Track {
|
|
81
92
|
id: number;
|
|
82
93
|
name: string;
|
|
@@ -93,17 +104,6 @@ export interface MediaInfo {
|
|
|
93
104
|
seekable: boolean;
|
|
94
105
|
tracks: MediaTracks;
|
|
95
106
|
}
|
|
96
|
-
export interface Recording {
|
|
97
|
-
path: string | null;
|
|
98
|
-
isRecording: boolean;
|
|
99
|
-
}
|
|
100
|
-
export interface Dialog {
|
|
101
|
-
title: string;
|
|
102
|
-
text: string;
|
|
103
|
-
cancelText?: string;
|
|
104
|
-
action1Text?: string;
|
|
105
|
-
action2Text?: string;
|
|
106
|
-
}
|
|
107
107
|
/**
|
|
108
108
|
* @hidden
|
|
109
109
|
*/
|
|
@@ -168,6 +168,10 @@ type DialogDisplayListener = (event: NativeEvent<Dialog>) => void;
|
|
|
168
168
|
* @hidden
|
|
169
169
|
*/
|
|
170
170
|
type FirstPlayListener = (event: NativeEvent<MediaInfo>) => void;
|
|
171
|
+
/**
|
|
172
|
+
* @hidden
|
|
173
|
+
*/
|
|
174
|
+
type ForegroundListener = () => void;
|
|
171
175
|
/**
|
|
172
176
|
* @hidden
|
|
173
177
|
*/
|
|
@@ -188,8 +192,8 @@ export interface LibVlcPlayerViewNativeProps {
|
|
|
188
192
|
volume?: number;
|
|
189
193
|
mute?: boolean;
|
|
190
194
|
audioMixingMode?: AudioMixingMode;
|
|
191
|
-
repeat?: boolean;
|
|
192
195
|
playInBackground?: boolean;
|
|
196
|
+
repeat?: boolean;
|
|
193
197
|
autoplay?: boolean;
|
|
194
198
|
onBuffering?: BufferingListener;
|
|
195
199
|
onPlaying?: PlayingListener;
|
|
@@ -197,13 +201,14 @@ export interface LibVlcPlayerViewNativeProps {
|
|
|
197
201
|
onStopped?: StoppedListener;
|
|
198
202
|
onEndReached?: EndReachedListener;
|
|
199
203
|
onEncounteredError?: EncounteredErrorListener;
|
|
204
|
+
onDialogDisplay?: DialogDisplayListener;
|
|
200
205
|
onTimeChanged?: TimeChangedListener;
|
|
201
206
|
onPositionChanged?: PositionChangedListener;
|
|
202
207
|
onESAdded?: ESAddedListener;
|
|
203
208
|
onRecordChanged?: RecordChangedListener;
|
|
204
209
|
onSnapshotTaken?: SnapshotTakenListener;
|
|
205
|
-
onDialogDisplay?: DialogDisplayListener;
|
|
206
210
|
onFirstPlay?: FirstPlayListener;
|
|
211
|
+
onForeground?: ForegroundListener;
|
|
207
212
|
onBackground?: BackgroundListener;
|
|
208
213
|
}
|
|
209
214
|
export interface LibVlcPlayerViewProps extends ViewProps {
|
|
@@ -302,17 +307,17 @@ export interface LibVlcPlayerViewProps extends ViewProps {
|
|
|
302
307
|
*/
|
|
303
308
|
audioMixingMode?: AudioMixingMode;
|
|
304
309
|
/**
|
|
305
|
-
* Determines whether the media should
|
|
310
|
+
* Determines whether the media should continue playing in the background
|
|
306
311
|
*
|
|
307
312
|
* @default false
|
|
308
313
|
*/
|
|
309
|
-
|
|
314
|
+
playInBackground?: boolean;
|
|
310
315
|
/**
|
|
311
|
-
* Determines whether the media should
|
|
316
|
+
* Determines whether the media should repeat once ended
|
|
312
317
|
*
|
|
313
318
|
* @default false
|
|
314
319
|
*/
|
|
315
|
-
|
|
320
|
+
repeat?: boolean;
|
|
316
321
|
/**
|
|
317
322
|
* Determines whether the media should autoplay once created
|
|
318
323
|
*
|
|
@@ -343,6 +348,10 @@ export interface LibVlcPlayerViewProps extends ViewProps {
|
|
|
343
348
|
* Called after the `EncounteredError` player event
|
|
344
349
|
*/
|
|
345
350
|
onEncounteredError?: (event: Error) => void;
|
|
351
|
+
/**
|
|
352
|
+
* Called after a `Dialog` needs to be displayed
|
|
353
|
+
*/
|
|
354
|
+
onDialogDisplay?: (event: Dialog) => void;
|
|
346
355
|
/**
|
|
347
356
|
* Called after the `TimeChanged` player event
|
|
348
357
|
*/
|
|
@@ -363,14 +372,14 @@ export interface LibVlcPlayerViewProps extends ViewProps {
|
|
|
363
372
|
* Called after a media snapshot is taken
|
|
364
373
|
*/
|
|
365
374
|
onSnapshotTaken?: (event: Snapshot) => void;
|
|
366
|
-
/**
|
|
367
|
-
* Called after a `Dialog` needs to be displayed
|
|
368
|
-
*/
|
|
369
|
-
onDialogDisplay?: (event: Dialog) => void;
|
|
370
375
|
/**
|
|
371
376
|
* Called after the player first playing event
|
|
372
377
|
*/
|
|
373
378
|
onFirstPlay?: (event: MediaInfo) => void;
|
|
379
|
+
/**
|
|
380
|
+
* Called after the player enters the foreground
|
|
381
|
+
*/
|
|
382
|
+
onForeground?: () => void;
|
|
374
383
|
/**
|
|
375
384
|
* Called after the player enters the background
|
|
376
385
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LibVlcPlayer.types.d.ts","sourceRoot":"","sources":["../src/LibVlcPlayer.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"LibVlcPlayer.types.d.ts","sourceRoot":"","sources":["../src/LibVlcPlayer.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LibVlcPlayer.types.js","sourceRoot":"","sources":["../src/LibVlcPlayer.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ViewProps } from \"react-native\";\n\nexport interface LibVlcPlayerViewRef {\n /**\n * Starts playback of the current player\n *\n * @returns A promise which resolves to `void`\n */\n readonly play: () => Promise<void>;\n /**\n * Pauses playback of the current player\n *\n * @returns A promise which resolves to `void`\n */\n readonly pause: () => Promise<void>;\n /**\n * Stops playback of the current player\n *\n * @returns A promise which resolves to `void`\n */\n readonly stop: () => Promise<void>;\n /**\n * Sets the
|
|
1
|
+
{"version":3,"file":"LibVlcPlayer.types.js","sourceRoot":"","sources":["../src/LibVlcPlayer.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ViewProps } from \"react-native\";\n\nexport interface LibVlcPlayerViewRef {\n /**\n * Starts playback of the current player\n *\n * @returns A promise which resolves to `void`\n */\n readonly play: () => Promise<void>;\n /**\n * Pauses playback of the current player\n *\n * @returns A promise which resolves to `void`\n */\n readonly pause: () => Promise<void>;\n /**\n * Stops playback of the current player\n *\n * @returns A promise which resolves to `void`\n */\n readonly stop: () => Promise<void>;\n /**\n * Sets the time or position of the current player\n *\n * @param value - Must be a number equal or greater than `0`\n * @param type - Defaults to `\"time\"`\n *\n * @returns A promise which resolves to `void`\n */\n readonly seek: (value: number, type?: \"time\" | \"position\") => Promise<void>;\n /**\n * Starts or stops recording the current media\n *\n * @param path - Must be a valid string\n *\n * @returns A promise which resolves to `void`\n */\n readonly record: (path?: string) => Promise<void>;\n /**\n * Takes a snapshot of the current media\n *\n * @param path - Must be a valid string\n *\n * @returns A promise which resolves to `void`\n */\n readonly snapshot: (path: string) => Promise<void>;\n /**\n * Posts an answer to a `Dialog`\n *\n * @param action - Must be an integer of `1` or `2`\n *\n * @returns A promise which resolves to `void`\n */\n readonly postAction: (action: 1 | 2) => Promise<void>;\n /**\n * Dismisses a `Dialog`\n *\n * @returns A promise which resolves to `void`\n */\n readonly dismiss: () => Promise<void>;\n}\n\nexport type LibVlcSource = string | number | null;\n\nexport interface Tracks {\n audio?: number;\n video?: number;\n subtitle?: number;\n}\n\nexport interface Slave {\n source: NonNullable<LibVlcSource>;\n type: \"audio\" | \"subtitle\";\n selected?: boolean;\n}\n\nexport type AudioMixingMode =\n | \"mixWithOthers\"\n | \"duckOthers\"\n | \"auto\"\n | \"doNotMix\";\n\nexport interface NativeEventProps {\n target: number;\n}\n\nexport interface NativeEvent<T> {\n nativeEvent: T & NativeEventProps;\n}\n\nexport type LibVlcEvent<T> = Omit<T & NativeEventProps, \"target\">;\n\nexport interface Dialog {\n title: string;\n text: string;\n cancelText?: string;\n action1Text?: string;\n action2Text?: string;\n}\n\nexport interface Recording {\n path: string | null;\n isRecording: boolean;\n}\n\nexport interface Track {\n id: number;\n name: string;\n}\n\nexport interface MediaTracks {\n audio: Track[];\n video: Track[];\n subtitle: Track[];\n}\n\nexport interface MediaInfo {\n width: number;\n height: number;\n length: number;\n seekable: boolean;\n tracks: MediaTracks;\n}\n\n/**\n * @hidden\n */\ntype BufferingListener = () => void;\n\n/**\n * @hidden\n */\ntype PlayingListener = () => void;\n\n/**\n * @hidden\n */\ntype PausedListener = () => void;\n\n/**\n * @hidden\n */\ntype StoppedListener = () => void;\n\n/**\n * @hidden\n */\ntype EndReachedListener = () => void;\n\nexport type Error = { error: string };\n\n/**\n * @hidden\n */\ntype EncounteredErrorListener = (event: NativeEvent<Error>) => void;\n\nexport type Time = { time: number };\n\n/**\n * @hidden\n */\ntype TimeChangedListener = (event: NativeEvent<Time>) => void;\n\nexport type Position = { position: number };\n\n/**\n * @hidden\n */\ntype PositionChangedListener = (event: NativeEvent<Position>) => void;\n\n/**\n * @hidden\n */\ntype ESAddedListener = (event: NativeEvent<MediaTracks>) => void;\n\n/**\n * @hidden\n */\ntype RecordChangedListener = (event: NativeEvent<Recording>) => void;\n\nexport type Snapshot = { path: string };\n\n/**\n * @hidden\n */\ntype SnapshotTakenListener = (event: NativeEvent<Snapshot>) => void;\n\n/**\n * @hidden\n */\ntype DialogDisplayListener = (event: NativeEvent<Dialog>) => void;\n\n/**\n * @hidden\n */\ntype FirstPlayListener = (event: NativeEvent<MediaInfo>) => void;\n\n/**\n * @hidden\n */\ntype ForegroundListener = () => void;\n\n/**\n * @hidden\n */\ntype BackgroundListener = () => void;\n\n/**\n * @hidden\n */\nexport interface LibVlcPlayerViewNativeProps {\n ref?: React.Ref<LibVlcPlayerViewRef>;\n source?: LibVlcSource;\n options?: string[];\n tracks?: Tracks;\n slaves?: Slave[];\n scale?: number;\n aspectRatio?: string | null;\n rate?: number;\n time?: number;\n volume?: number;\n mute?: boolean;\n audioMixingMode?: AudioMixingMode;\n playInBackground?: boolean;\n repeat?: boolean;\n autoplay?: boolean;\n onBuffering?: BufferingListener;\n onPlaying?: PlayingListener;\n onPaused?: PausedListener;\n onStopped?: StoppedListener;\n onEndReached?: EndReachedListener;\n onEncounteredError?: EncounteredErrorListener;\n onDialogDisplay?: DialogDisplayListener;\n onTimeChanged?: TimeChangedListener;\n onPositionChanged?: PositionChangedListener;\n onESAdded?: ESAddedListener;\n onRecordChanged?: RecordChangedListener;\n onSnapshotTaken?: SnapshotTakenListener;\n onFirstPlay?: FirstPlayListener;\n onForeground?: ForegroundListener;\n onBackground?: BackgroundListener;\n}\n\nexport interface LibVlcPlayerViewProps extends ViewProps {\n /**\n * Sets the source of the media to be played. Set to `null` to release the player\n */\n source: LibVlcSource;\n /**\n * Sets the VLC options to initialize the player with\n *\n * https://wiki.videolan.org/VLC_command-line_help/\n *\n * @example [\"--network-caching=1000\"]\n *\n * @default []\n */\n options?: string[];\n /**\n * Sets the player audio, video and subtitle tracks\n *\n * @example\n * ```tsx\n * <LibVlcPlayerView\n * tracks={{\n * audio: 0,\n * video: 1,\n * subtitle: 2,\n * }}\n * />\n * ```\n *\n * @default undefined\n */\n tracks?: Tracks;\n /**\n * Sets the player audio and subtitle slaves\n *\n * @example\n * ```tsx\n * <LibVlcPlayerView\n * slaves={[\n * {\n * source: \"file://path/to/subtitle.srt\",\n * type: \"subtitle\",\n * selected: true\n * },\n * ]}\n * />\n * ```\n *\n * @default []\n */\n slaves?: Slave[];\n /**\n * Sets the player scaling factor. Must be a float equal or greater than `0`\n *\n * @default 0\n */\n scale?: number;\n /**\n * Sets the player aspect ratio. Must be a valid string or `null` for default\n *\n * @example \"16:9\"\n *\n * @default undefined\n */\n aspectRatio?: string | null;\n /**\n * Sets the player rate. Must be a float equal or greater than `1`\n *\n * @default 1\n */\n rate?: number;\n /**\n * Sets the initial player time. Must be an integer in milliseconds\n *\n * @default 0\n */\n time?: number;\n /**\n * Sets the player volume. Must be an integer between `0` and `100`\n *\n * @default 100\n */\n volume?: number;\n /**\n * Sets the player volume to `0` when `true`. Previous value is set when `false`\n *\n * @default false\n */\n mute?: boolean;\n /**\n * Determines how the player will interact with other audio playing in the system\n *\n * @default \"auto\"\n */\n audioMixingMode?: AudioMixingMode;\n /**\n * Determines whether the media should continue playing in the background\n *\n * @default false\n */\n playInBackground?: boolean;\n /**\n * Determines whether the media should repeat once ended\n *\n * @default false\n */\n repeat?: boolean;\n /**\n * Determines whether the media should autoplay once created\n *\n * @default true\n */\n autoplay?: boolean;\n /**\n * Called after the `Buffering` player event\n */\n onBuffering?: () => void;\n /**\n * Called after the `Playing` player event\n */\n onPlaying?: () => void;\n /**\n * Called after the `Paused` player event\n */\n onPaused?: () => void;\n /**\n * Called after the `Stopped` player event\n */\n onStopped?: () => void;\n /**\n * Called after the `EndReached` player event\n */\n onEndReached?: () => void;\n /**\n * Called after the `EncounteredError` player event\n */\n onEncounteredError?: (event: Error) => void;\n /**\n * Called after a `Dialog` needs to be displayed\n */\n onDialogDisplay?: (event: Dialog) => void;\n /**\n * Called after the `TimeChanged` player event\n */\n onTimeChanged?: (event: Time) => void;\n /**\n * Called after the `PositionChanged` player event\n */\n onPositionChanged?: (event: Position) => void;\n /**\n * Called after the `ESAdded` player event\n */\n onESAdded?: (event: MediaTracks) => void;\n /**\n * Called after the `RecordChanged` player event\n */\n onRecordChanged?: (event: Recording) => void;\n /**\n * Called after a media snapshot is taken\n */\n onSnapshotTaken?: (event: Snapshot) => void;\n /**\n * Called after the player first playing event\n */\n onFirstPlay?: (event: MediaInfo) => void;\n /**\n * Called after the player enters the foreground\n */\n onForeground?: () => void;\n /**\n * Called after the player enters the background\n */\n onBackground?: () => void;\n}\n"]}
|
|
@@ -18,6 +18,12 @@ const LibVlcPlayerView = forwardRef((props, ref) => {
|
|
|
18
18
|
props.onEncounteredError(nativeEvent);
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
|
+
const onDialogDisplay = (event) => {
|
|
22
|
+
if (props.onDialogDisplay) {
|
|
23
|
+
const nativeEvent = converNativeEvent(event);
|
|
24
|
+
props.onDialogDisplay(nativeEvent);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
21
27
|
const onTimeChanged = (event) => {
|
|
22
28
|
if (props.onTimeChanged) {
|
|
23
29
|
const nativeEvent = converNativeEvent(event);
|
|
@@ -48,12 +54,6 @@ const LibVlcPlayerView = forwardRef((props, ref) => {
|
|
|
48
54
|
props.onSnapshotTaken(nativeEvent);
|
|
49
55
|
}
|
|
50
56
|
};
|
|
51
|
-
const onDialogDisplay = (event) => {
|
|
52
|
-
if (props.onDialogDisplay) {
|
|
53
|
-
const nativeEvent = converNativeEvent(event);
|
|
54
|
-
props.onDialogDisplay(nativeEvent);
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
57
|
const onFirstPlay = (event) => {
|
|
58
58
|
if (props.onFirstPlay) {
|
|
59
59
|
const nativeEvent = converNativeEvent(event);
|
|
@@ -63,7 +63,7 @@ const LibVlcPlayerView = forwardRef((props, ref) => {
|
|
|
63
63
|
return (<NativeView {...nativeProps} ref={ref} source={parseSource(props.source)} slaves={props.slaves?.map((slave) => ({
|
|
64
64
|
...slave,
|
|
65
65
|
source: parseSource(slave.source),
|
|
66
|
-
}))} onEncounteredError={onEncounteredError} onTimeChanged={onTimeChanged} onPositionChanged={onPositionChanged} onESAdded={onESAdded} onRecordChanged={onRecordChanged} onSnapshotTaken={onSnapshotTaken}
|
|
66
|
+
}))} onEncounteredError={onEncounteredError} onDialogDisplay={onDialogDisplay} onTimeChanged={onTimeChanged} onPositionChanged={onPositionChanged} onESAdded={onESAdded} onRecordChanged={onRecordChanged} onSnapshotTaken={onSnapshotTaken} onFirstPlay={onFirstPlay}/>);
|
|
67
67
|
});
|
|
68
68
|
export default LibVlcPlayerView;
|
|
69
69
|
//# sourceMappingURL=LibVlcPlayerView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LibVlcPlayerView.js","sourceRoot":"","sources":["../src/LibVlcPlayerView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AACzC,OAAO,EAAE,UAAU,EAAsB,MAAM,OAAO,CAAC;AAgBvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,UAAU,GACd,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;AAExC,IAAI,8BAA8B,GAAY,KAAK,CAAC;AAEpD,MAAM,gBAAgB,GAAG,UAAU,CACjC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACb,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAE9C,mBAAmB;IACnB,IAAI,WAAW,CAAC,QAAQ,IAAI,CAAC,8BAA8B,EAAE,CAAC;QAC5D,OAAO,CAAC,IAAI,CACV,gNAAgN,CACjN,CAAC;QACF,8BAA8B,GAAG,IAAI,CAAC;IACxC,CAAC;IAED,MAAM,kBAAkB,GAAG,CAAC,KAAyB,EAAE,EAAE;QACvD,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;YAC7B,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC7C,KAAK,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,
|
|
1
|
+
{"version":3,"file":"LibVlcPlayerView.js","sourceRoot":"","sources":["../src/LibVlcPlayerView.tsx"],"names":[],"mappings":"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","sourcesContent":["import { requireNativeView } from \"expo\";\nimport { forwardRef, type ComponentType } from \"react\";\n\nimport {\n LibVlcPlayerViewNativeProps,\n LibVlcPlayerViewProps,\n LibVlcPlayerViewRef,\n type Dialog,\n type Error,\n type MediaInfo,\n type MediaTracks,\n type NativeEvent,\n type Position,\n type Recording,\n type Snapshot,\n type Time,\n} from \"./LibVlcPlayer.types\";\nimport { parseSource } from \"./utils/assets\";\nimport { converNativeEvent } from \"./utils/events\";\nimport { convertNativeProps } from \"./utils/props\";\n\nconst NativeView: ComponentType<LibVlcPlayerViewNativeProps> =\n requireNativeView(\"ExpoLibVlcPlayer\");\n\nlet loggedRenderingChildrenWarning: boolean = false;\n\nconst LibVlcPlayerView = forwardRef<LibVlcPlayerViewRef, LibVlcPlayerViewProps>(\n (props, ref) => {\n const nativeProps = convertNativeProps(props);\n\n // @ts-expect-error\n if (nativeProps.children && !loggedRenderingChildrenWarning) {\n console.warn(\n \"The <LibVlcPlayerView> component does not support children. This may lead to inconsistent behaviour or crashes. If you want to render content on top of the LibVlcPlayer, consider using absolute positioning.\",\n );\n loggedRenderingChildrenWarning = true;\n }\n\n const onEncounteredError = (event: NativeEvent<Error>) => {\n if (props.onEncounteredError) {\n const nativeEvent = converNativeEvent(event);\n props.onEncounteredError(nativeEvent);\n }\n };\n\n const onDialogDisplay = (event: NativeEvent<Dialog>) => {\n if (props.onDialogDisplay) {\n const nativeEvent = converNativeEvent(event);\n props.onDialogDisplay(nativeEvent);\n }\n };\n\n const onTimeChanged = (event: NativeEvent<Time>) => {\n if (props.onTimeChanged) {\n const nativeEvent = converNativeEvent(event);\n props.onTimeChanged(nativeEvent);\n }\n };\n\n const onPositionChanged = (event: NativeEvent<Position>) => {\n if (props.onPositionChanged) {\n const nativeEvent = converNativeEvent(event);\n props.onPositionChanged(nativeEvent);\n }\n };\n\n const onESAdded = (event: NativeEvent<MediaTracks>) => {\n if (props.onESAdded) {\n const nativeEvent = converNativeEvent(event);\n props.onESAdded(nativeEvent);\n }\n };\n\n const onRecordChanged = (event: NativeEvent<Recording>) => {\n if (props.onRecordChanged) {\n const nativeEvent = converNativeEvent(event);\n props.onRecordChanged(nativeEvent);\n }\n };\n\n const onSnapshotTaken = (event: NativeEvent<Snapshot>) => {\n if (props.onSnapshotTaken) {\n const nativeEvent = converNativeEvent(event);\n props.onSnapshotTaken(nativeEvent);\n }\n };\n\n const onFirstPlay = (event: NativeEvent<MediaInfo>) => {\n if (props.onFirstPlay) {\n const nativeEvent = converNativeEvent(event);\n props.onFirstPlay(nativeEvent);\n }\n };\n\n return (\n <NativeView\n {...nativeProps}\n ref={ref}\n source={parseSource(props.source)}\n slaves={props.slaves?.map((slave) => ({\n ...slave,\n source: parseSource(slave.source)!,\n }))}\n onEncounteredError={onEncounteredError}\n onDialogDisplay={onDialogDisplay}\n onTimeChanged={onTimeChanged}\n onPositionChanged={onPositionChanged}\n onESAdded={onESAdded}\n onRecordChanged={onRecordChanged}\n onSnapshotTaken={onSnapshotTaken}\n onFirstPlay={onFirstPlay}\n />\n );\n },\n);\n\nexport default LibVlcPlayerView;\n"]}
|
|
@@ -6,13 +6,14 @@ private let pausedEvent = "onPaused"
|
|
|
6
6
|
private let stoppedEvent = "onStopped"
|
|
7
7
|
private let endReachedEvent = "onEndReached"
|
|
8
8
|
private let encounteredErrorEvent = "onEncounteredError"
|
|
9
|
+
private let dialogDisplayEvent = "onDialogDisplay"
|
|
9
10
|
private let timeChangedEvent = "onTimeChanged"
|
|
10
11
|
private let positionChangedEvent = "onPositionChanged"
|
|
11
12
|
private let esAddedEvent = "onESAdded"
|
|
12
13
|
private let recordChangedEvent = "onRecordChanged"
|
|
13
14
|
private let snapshotTakenEvent = "onSnapshotTaken"
|
|
14
|
-
private let dialogDisplayEvent = "onDialogDisplay"
|
|
15
15
|
private let firstPlayEvent = "onFirstPlay"
|
|
16
|
+
private let foregroundEvent = "onForeground"
|
|
16
17
|
private let backgroundEvent = "onBackground"
|
|
17
18
|
|
|
18
19
|
let playerEvents = [
|
|
@@ -22,13 +23,14 @@ let playerEvents = [
|
|
|
22
23
|
stoppedEvent,
|
|
23
24
|
endReachedEvent,
|
|
24
25
|
encounteredErrorEvent,
|
|
26
|
+
dialogDisplayEvent,
|
|
25
27
|
timeChangedEvent,
|
|
26
28
|
positionChangedEvent,
|
|
27
29
|
esAddedEvent,
|
|
28
30
|
recordChangedEvent,
|
|
29
31
|
snapshotTakenEvent,
|
|
30
|
-
dialogDisplayEvent,
|
|
31
32
|
firstPlayEvent,
|
|
33
|
+
foregroundEvent,
|
|
32
34
|
backgroundEvent,
|
|
33
35
|
]
|
|
34
36
|
|
|
@@ -87,14 +89,14 @@ public class LibVlcPlayerModule: Module {
|
|
|
87
89
|
view.audioMixingMode = audioMixingMode ?? .auto
|
|
88
90
|
}
|
|
89
91
|
|
|
90
|
-
Prop("repeat") { (view: LibVlcPlayerView, shouldRepeat: Bool?) in
|
|
91
|
-
view.shouldRepeat = shouldRepeat ?? false
|
|
92
|
-
}
|
|
93
|
-
|
|
94
92
|
Prop("playInBackground") { (view: LibVlcPlayerView, playInBackground: Bool?) in
|
|
95
93
|
view.playInBackground = playInBackground ?? false
|
|
96
94
|
}
|
|
97
95
|
|
|
96
|
+
Prop("repeat") { (view: LibVlcPlayerView, shouldRepeat: Bool?) in
|
|
97
|
+
view.shouldRepeat = shouldRepeat ?? false
|
|
98
|
+
}
|
|
99
|
+
|
|
98
100
|
Prop("autoplay") { (view: LibVlcPlayerView, autoplay: Bool?) in
|
|
99
101
|
view.autoplay = autoplay ?? true
|
|
100
102
|
}
|
|
@@ -116,7 +118,7 @@ public class LibVlcPlayerModule: Module {
|
|
|
116
118
|
}
|
|
117
119
|
|
|
118
120
|
AsyncFunction("seek") { (view: LibVlcPlayerView, value: Double, type: String?) in
|
|
119
|
-
view.seek(value, type ?? "
|
|
121
|
+
view.seek(value, type ?? "time")
|
|
120
122
|
}
|
|
121
123
|
|
|
122
124
|
AsyncFunction("record") { (view: LibVlcPlayerView, path: String?) in
|
|
@@ -136,8 +138,12 @@ public class LibVlcPlayerModule: Module {
|
|
|
136
138
|
}
|
|
137
139
|
}
|
|
138
140
|
|
|
141
|
+
OnAppEntersForeground {
|
|
142
|
+
MediaPlayerManager.shared.onPlayerForeground()
|
|
143
|
+
}
|
|
144
|
+
|
|
139
145
|
OnAppEntersBackground {
|
|
140
|
-
MediaPlayerManager.shared.
|
|
146
|
+
MediaPlayerManager.shared.onPlayerBackground()
|
|
141
147
|
}
|
|
142
148
|
}
|
|
143
149
|
}
|
|
@@ -36,13 +36,14 @@ class LibVlcPlayerView: ExpoView {
|
|
|
36
36
|
let onStopped = EventDispatcher()
|
|
37
37
|
let onEndReached = EventDispatcher()
|
|
38
38
|
let onEncounteredError = EventDispatcher()
|
|
39
|
+
let onDialogDisplay = EventDispatcher()
|
|
39
40
|
let onTimeChanged = EventDispatcher()
|
|
40
41
|
let onPositionChanged = EventDispatcher()
|
|
41
42
|
let onESAdded = EventDispatcher()
|
|
42
43
|
let onRecordChanged = EventDispatcher()
|
|
43
44
|
let onSnapshotTaken = EventDispatcher()
|
|
44
|
-
let onDialogDisplay = EventDispatcher()
|
|
45
45
|
let onFirstPlay = EventDispatcher()
|
|
46
|
+
let onForeground = EventDispatcher()
|
|
46
47
|
let onBackground = EventDispatcher()
|
|
47
48
|
|
|
48
49
|
required init(appContext: AppContext? = nil) {
|
|
@@ -344,6 +345,12 @@ class LibVlcPlayerView: ExpoView {
|
|
|
344
345
|
}
|
|
345
346
|
}
|
|
346
347
|
|
|
348
|
+
var playInBackground: Bool = false {
|
|
349
|
+
didSet {
|
|
350
|
+
MediaPlayerManager.shared.setAppropriateAudioSession()
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
|
|
347
354
|
var shouldRepeat: Bool = false {
|
|
348
355
|
didSet {
|
|
349
356
|
if options.hasRepeatOption() {
|
|
@@ -353,12 +360,6 @@ class LibVlcPlayerView: ExpoView {
|
|
|
353
360
|
}
|
|
354
361
|
}
|
|
355
362
|
|
|
356
|
-
var playInBackground: Bool = false {
|
|
357
|
-
didSet {
|
|
358
|
-
MediaPlayerManager.shared.setAppropriateAudioSession()
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
|
|
362
363
|
var autoplay: Bool = true {
|
|
363
364
|
didSet {
|
|
364
365
|
if !autoplay {
|
|
@@ -19,7 +19,13 @@ class MediaPlayerManager {
|
|
|
19
19
|
playerViews.remove(view)
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
func
|
|
22
|
+
func onPlayerForeground() {
|
|
23
|
+
for view in playerViews.allObjects {
|
|
24
|
+
view.onForeground()
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
func onPlayerBackground() {
|
|
23
29
|
for view in playerViews.allObjects {
|
|
24
30
|
view.onBackground()
|
|
25
31
|
|
package/package.json
CHANGED
|
@@ -20,14 +20,14 @@ export interface LibVlcPlayerViewRef {
|
|
|
20
20
|
*/
|
|
21
21
|
readonly stop: () => Promise<void>;
|
|
22
22
|
/**
|
|
23
|
-
* Sets the
|
|
23
|
+
* Sets the time or position of the current player
|
|
24
24
|
*
|
|
25
25
|
* @param value - Must be a number equal or greater than `0`
|
|
26
|
-
* @param type - Defaults to `"
|
|
26
|
+
* @param type - Defaults to `"time"`
|
|
27
27
|
*
|
|
28
28
|
* @returns A promise which resolves to `void`
|
|
29
29
|
*/
|
|
30
|
-
readonly seek: (value: number, type?: "
|
|
30
|
+
readonly seek: (value: number, type?: "time" | "position") => Promise<void>;
|
|
31
31
|
/**
|
|
32
32
|
* Starts or stops recording the current media
|
|
33
33
|
*
|
|
@@ -90,6 +90,19 @@ export interface NativeEvent<T> {
|
|
|
90
90
|
|
|
91
91
|
export type LibVlcEvent<T> = Omit<T & NativeEventProps, "target">;
|
|
92
92
|
|
|
93
|
+
export interface Dialog {
|
|
94
|
+
title: string;
|
|
95
|
+
text: string;
|
|
96
|
+
cancelText?: string;
|
|
97
|
+
action1Text?: string;
|
|
98
|
+
action2Text?: string;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export interface Recording {
|
|
102
|
+
path: string | null;
|
|
103
|
+
isRecording: boolean;
|
|
104
|
+
}
|
|
105
|
+
|
|
93
106
|
export interface Track {
|
|
94
107
|
id: number;
|
|
95
108
|
name: string;
|
|
@@ -109,19 +122,6 @@ export interface MediaInfo {
|
|
|
109
122
|
tracks: MediaTracks;
|
|
110
123
|
}
|
|
111
124
|
|
|
112
|
-
export interface Recording {
|
|
113
|
-
path: string | null;
|
|
114
|
-
isRecording: boolean;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
export interface Dialog {
|
|
118
|
-
title: string;
|
|
119
|
-
text: string;
|
|
120
|
-
cancelText?: string;
|
|
121
|
-
action1Text?: string;
|
|
122
|
-
action2Text?: string;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
125
|
/**
|
|
126
126
|
* @hidden
|
|
127
127
|
*/
|
|
@@ -195,6 +195,11 @@ type DialogDisplayListener = (event: NativeEvent<Dialog>) => void;
|
|
|
195
195
|
*/
|
|
196
196
|
type FirstPlayListener = (event: NativeEvent<MediaInfo>) => void;
|
|
197
197
|
|
|
198
|
+
/**
|
|
199
|
+
* @hidden
|
|
200
|
+
*/
|
|
201
|
+
type ForegroundListener = () => void;
|
|
202
|
+
|
|
198
203
|
/**
|
|
199
204
|
* @hidden
|
|
200
205
|
*/
|
|
@@ -216,8 +221,8 @@ export interface LibVlcPlayerViewNativeProps {
|
|
|
216
221
|
volume?: number;
|
|
217
222
|
mute?: boolean;
|
|
218
223
|
audioMixingMode?: AudioMixingMode;
|
|
219
|
-
repeat?: boolean;
|
|
220
224
|
playInBackground?: boolean;
|
|
225
|
+
repeat?: boolean;
|
|
221
226
|
autoplay?: boolean;
|
|
222
227
|
onBuffering?: BufferingListener;
|
|
223
228
|
onPlaying?: PlayingListener;
|
|
@@ -225,13 +230,14 @@ export interface LibVlcPlayerViewNativeProps {
|
|
|
225
230
|
onStopped?: StoppedListener;
|
|
226
231
|
onEndReached?: EndReachedListener;
|
|
227
232
|
onEncounteredError?: EncounteredErrorListener;
|
|
233
|
+
onDialogDisplay?: DialogDisplayListener;
|
|
228
234
|
onTimeChanged?: TimeChangedListener;
|
|
229
235
|
onPositionChanged?: PositionChangedListener;
|
|
230
236
|
onESAdded?: ESAddedListener;
|
|
231
237
|
onRecordChanged?: RecordChangedListener;
|
|
232
238
|
onSnapshotTaken?: SnapshotTakenListener;
|
|
233
|
-
onDialogDisplay?: DialogDisplayListener;
|
|
234
239
|
onFirstPlay?: FirstPlayListener;
|
|
240
|
+
onForeground?: ForegroundListener;
|
|
235
241
|
onBackground?: BackgroundListener;
|
|
236
242
|
}
|
|
237
243
|
|
|
@@ -331,17 +337,17 @@ export interface LibVlcPlayerViewProps extends ViewProps {
|
|
|
331
337
|
*/
|
|
332
338
|
audioMixingMode?: AudioMixingMode;
|
|
333
339
|
/**
|
|
334
|
-
* Determines whether the media should
|
|
340
|
+
* Determines whether the media should continue playing in the background
|
|
335
341
|
*
|
|
336
342
|
* @default false
|
|
337
343
|
*/
|
|
338
|
-
|
|
344
|
+
playInBackground?: boolean;
|
|
339
345
|
/**
|
|
340
|
-
* Determines whether the media should
|
|
346
|
+
* Determines whether the media should repeat once ended
|
|
341
347
|
*
|
|
342
348
|
* @default false
|
|
343
349
|
*/
|
|
344
|
-
|
|
350
|
+
repeat?: boolean;
|
|
345
351
|
/**
|
|
346
352
|
* Determines whether the media should autoplay once created
|
|
347
353
|
*
|
|
@@ -372,6 +378,10 @@ export interface LibVlcPlayerViewProps extends ViewProps {
|
|
|
372
378
|
* Called after the `EncounteredError` player event
|
|
373
379
|
*/
|
|
374
380
|
onEncounteredError?: (event: Error) => void;
|
|
381
|
+
/**
|
|
382
|
+
* Called after a `Dialog` needs to be displayed
|
|
383
|
+
*/
|
|
384
|
+
onDialogDisplay?: (event: Dialog) => void;
|
|
375
385
|
/**
|
|
376
386
|
* Called after the `TimeChanged` player event
|
|
377
387
|
*/
|
|
@@ -392,14 +402,14 @@ export interface LibVlcPlayerViewProps extends ViewProps {
|
|
|
392
402
|
* Called after a media snapshot is taken
|
|
393
403
|
*/
|
|
394
404
|
onSnapshotTaken?: (event: Snapshot) => void;
|
|
395
|
-
/**
|
|
396
|
-
* Called after a `Dialog` needs to be displayed
|
|
397
|
-
*/
|
|
398
|
-
onDialogDisplay?: (event: Dialog) => void;
|
|
399
405
|
/**
|
|
400
406
|
* Called after the player first playing event
|
|
401
407
|
*/
|
|
402
408
|
onFirstPlay?: (event: MediaInfo) => void;
|
|
409
|
+
/**
|
|
410
|
+
* Called after the player enters the foreground
|
|
411
|
+
*/
|
|
412
|
+
onForeground?: () => void;
|
|
403
413
|
/**
|
|
404
414
|
* Called after the player enters the background
|
|
405
415
|
*/
|
package/src/LibVlcPlayerView.tsx
CHANGED
|
@@ -43,6 +43,13 @@ const LibVlcPlayerView = forwardRef<LibVlcPlayerViewRef, LibVlcPlayerViewProps>(
|
|
|
43
43
|
}
|
|
44
44
|
};
|
|
45
45
|
|
|
46
|
+
const onDialogDisplay = (event: NativeEvent<Dialog>) => {
|
|
47
|
+
if (props.onDialogDisplay) {
|
|
48
|
+
const nativeEvent = converNativeEvent(event);
|
|
49
|
+
props.onDialogDisplay(nativeEvent);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
46
53
|
const onTimeChanged = (event: NativeEvent<Time>) => {
|
|
47
54
|
if (props.onTimeChanged) {
|
|
48
55
|
const nativeEvent = converNativeEvent(event);
|
|
@@ -78,13 +85,6 @@ const LibVlcPlayerView = forwardRef<LibVlcPlayerViewRef, LibVlcPlayerViewProps>(
|
|
|
78
85
|
}
|
|
79
86
|
};
|
|
80
87
|
|
|
81
|
-
const onDialogDisplay = (event: NativeEvent<Dialog>) => {
|
|
82
|
-
if (props.onDialogDisplay) {
|
|
83
|
-
const nativeEvent = converNativeEvent(event);
|
|
84
|
-
props.onDialogDisplay(nativeEvent);
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
|
|
88
88
|
const onFirstPlay = (event: NativeEvent<MediaInfo>) => {
|
|
89
89
|
if (props.onFirstPlay) {
|
|
90
90
|
const nativeEvent = converNativeEvent(event);
|
|
@@ -102,12 +102,12 @@ const LibVlcPlayerView = forwardRef<LibVlcPlayerViewRef, LibVlcPlayerViewProps>(
|
|
|
102
102
|
source: parseSource(slave.source)!,
|
|
103
103
|
}))}
|
|
104
104
|
onEncounteredError={onEncounteredError}
|
|
105
|
+
onDialogDisplay={onDialogDisplay}
|
|
105
106
|
onTimeChanged={onTimeChanged}
|
|
106
107
|
onPositionChanged={onPositionChanged}
|
|
107
108
|
onESAdded={onESAdded}
|
|
108
109
|
onRecordChanged={onRecordChanged}
|
|
109
110
|
onSnapshotTaken={onSnapshotTaken}
|
|
110
|
-
onDialogDisplay={onDialogDisplay}
|
|
111
111
|
onFirstPlay={onFirstPlay}
|
|
112
112
|
/>
|
|
113
113
|
);
|