expo-libvlc-player 7.0.37 → 7.0.39
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/android/build.gradle +1 -1
- package/android/src/main/java/expo/modules/libvlcplayer/LibVlcPlayerView.kt +1 -11
- package/build/LibVlcPlayerView.d.ts.map +1 -1
- package/build/LibVlcPlayerView.js +7 -7
- package/build/LibVlcPlayerView.js.map +1 -1
- package/ios/LibVlcPlayerView.swift +13 -35
- package/package.json +1 -1
- package/src/LibVlcPlayerView.tsx +7 -8
package/android/build.gradle
CHANGED
|
@@ -397,17 +397,7 @@ class LibVlcPlayerView(
|
|
|
397
397
|
return mediaTracks
|
|
398
398
|
}
|
|
399
399
|
|
|
400
|
-
fun getMediaLength(): Int
|
|
401
|
-
var length = 0
|
|
402
|
-
|
|
403
|
-
val duration = mediaPlayer?.getLength()?.toInt() ?: 0
|
|
404
|
-
|
|
405
|
-
if (duration > 0) {
|
|
406
|
-
length = duration
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
return length
|
|
410
|
-
}
|
|
400
|
+
fun getMediaLength(): Int = (mediaPlayer?.getLength() ?: 0).toInt()
|
|
411
401
|
|
|
412
402
|
fun getMediaInfo(): MediaInfo {
|
|
413
403
|
val video = getVideoSize()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LibVlcPlayerView.d.ts","sourceRoot":"","sources":["../src/LibVlcPlayerView.tsx"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,qBAAqB,EAW3B,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"LibVlcPlayerView.d.ts","sourceRoot":"","sources":["../src/LibVlcPlayerView.tsx"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,qBAAqB,EAW3B,MAAM,sBAAsB,CAAC;AAa9B,QAAA,MAAM,gBAAgB,GAAI,mBAAmB,qBAAqB,gCAsGjE,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { requireNativeView } from "expo";
|
|
2
|
-
import {
|
|
2
|
+
import { useState } from "react";
|
|
3
3
|
import { View } from "react-native";
|
|
4
4
|
import { convertAspectRatio } from "./utils/aspect";
|
|
5
5
|
import { parseNativeSource } from "./utils/assets";
|
|
6
6
|
import { convertNativeEvent } from "./utils/events";
|
|
7
7
|
const NativeView = requireNativeView("ExpoLibVlcPlayer");
|
|
8
8
|
const RENDERING_CHILDREN_WARNING = "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.";
|
|
9
|
-
let loggedRenderingChildrenWarning = false;
|
|
10
9
|
const FALLBACK_RATIO = 16 / 9;
|
|
11
10
|
const LibVlcPlayerView = ({ ref, ...props }) => {
|
|
12
|
-
const defaultRatio =
|
|
13
|
-
|
|
11
|
+
const [defaultRatio, setDefaultRatio] = useState(FALLBACK_RATIO);
|
|
12
|
+
const [loggedWarning, setLoggedWarning] = useState(false);
|
|
13
|
+
if (props.children && !loggedWarning) {
|
|
14
14
|
console.warn(RENDERING_CHILDREN_WARNING);
|
|
15
|
-
|
|
15
|
+
setLoggedWarning(true);
|
|
16
16
|
}
|
|
17
17
|
const onEncounteredError = (event) => {
|
|
18
18
|
const nativeEvent = convertNativeEvent(event);
|
|
@@ -62,10 +62,10 @@ const LibVlcPlayerView = ({ ref, ...props }) => {
|
|
|
62
62
|
if (props.onFirstPlay) {
|
|
63
63
|
props.onFirstPlay(nativeEvent);
|
|
64
64
|
}
|
|
65
|
-
|
|
65
|
+
setDefaultRatio(mediaRatio || FALLBACK_RATIO);
|
|
66
66
|
};
|
|
67
67
|
const propRatio = props.aspectRatio;
|
|
68
|
-
const aspectRatio = propRatio === "auto" ? defaultRatio
|
|
68
|
+
const aspectRatio = propRatio === "auto" ? defaultRatio : propRatio;
|
|
69
69
|
const nativeRatio = convertAspectRatio(aspectRatio);
|
|
70
70
|
return (<View style={[props.style, { aspectRatio: nativeRatio }]}>
|
|
71
71
|
<NativeView {...props} ref={ref} style={[props.style, { height: "100%" }]} source={parseNativeSource(props.source)} slaves={props.slaves?.map((slave) => ({
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"LibVlcPlayerView.js","sourceRoot":"","sources":["../src/LibVlcPlayerView.tsx"],"names":[],"mappings":"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","sourcesContent":["import { requireNativeView } from \"expo\";\nimport { useState, type ComponentType } from \"react\";\nimport { View } from \"react-native\";\n\nimport {\n type LibVlcPlayerViewNativeProps,\n type LibVlcPlayerViewProps,\n type VideoAspectRatio,\n type NativeEvent,\n type Error,\n type Dialog,\n type Time,\n type Position,\n type MediaTracks,\n type Recording,\n type Snapshot,\n type MediaInfo,\n} from \"./LibVlcPlayer.types\";\nimport { convertAspectRatio } from \"./utils/aspect\";\nimport { parseNativeSource } from \"./utils/assets\";\nimport { convertNativeEvent } from \"./utils/events\";\n\nconst NativeView: ComponentType<LibVlcPlayerViewNativeProps> =\n requireNativeView(\"ExpoLibVlcPlayer\");\n\nconst RENDERING_CHILDREN_WARNING =\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\nconst FALLBACK_RATIO = 16 / 9;\n\nconst LibVlcPlayerView = ({ ref, ...props }: LibVlcPlayerViewProps) => {\n const [defaultRatio, setDefaultRatio] = useState<VideoAspectRatio>(FALLBACK_RATIO);\n const [loggedWarning, setLoggedWarning] = useState<boolean>(false);\n\n if (props.children && !loggedWarning) {\n console.warn(RENDERING_CHILDREN_WARNING);\n setLoggedWarning(true);\n }\n\n const onEncounteredError = (event: NativeEvent<Error>) => {\n const nativeEvent = convertNativeEvent(event);\n\n if (props.onEncounteredError) {\n props.onEncounteredError(nativeEvent);\n }\n };\n\n const onDialogDisplay = (event: NativeEvent<Dialog>) => {\n const nativeEvent = convertNativeEvent(event);\n\n if (props.onDialogDisplay) {\n props.onDialogDisplay(nativeEvent);\n }\n };\n\n const onTimeChanged = (event: NativeEvent<Time>) => {\n const nativeEvent = convertNativeEvent(event);\n\n if (props.onTimeChanged) {\n props.onTimeChanged(nativeEvent);\n }\n };\n\n const onPositionChanged = (event: NativeEvent<Position>) => {\n const nativeEvent = convertNativeEvent(event);\n\n if (props.onPositionChanged) {\n props.onPositionChanged(nativeEvent);\n }\n };\n\n const onESAdded = (event: NativeEvent<MediaTracks>) => {\n const nativeEvent = convertNativeEvent(event);\n\n if (props.onESAdded) {\n props.onESAdded(nativeEvent);\n }\n };\n\n const onRecordChanged = (event: NativeEvent<Recording>) => {\n const nativeEvent = convertNativeEvent(event);\n\n if (props.onRecordChanged) {\n props.onRecordChanged(nativeEvent);\n }\n };\n\n const onSnapshotTaken = (event: NativeEvent<Snapshot>) => {\n const nativeEvent = convertNativeEvent(event);\n\n if (props.onSnapshotTaken) {\n props.onSnapshotTaken(nativeEvent);\n }\n };\n\n const onFirstPlay = (event: NativeEvent<MediaInfo>) => {\n const nativeEvent = convertNativeEvent(event);\n const mediaRatio = nativeEvent.width / nativeEvent.height;\n\n if (props.onFirstPlay) {\n props.onFirstPlay(nativeEvent);\n }\n\n setDefaultRatio(mediaRatio || FALLBACK_RATIO);\n };\n\n const propRatio = props.aspectRatio;\n const aspectRatio = propRatio === \"auto\" ? defaultRatio : propRatio;\n const nativeRatio = convertAspectRatio(aspectRatio);\n\n return (\n <View style={[props.style, { aspectRatio: nativeRatio }]}>\n <NativeView\n {...props}\n ref={ref}\n style={[props.style, { height: \"100%\" }]}\n source={parseNativeSource(props.source)}\n slaves={props.slaves?.map((slave) => ({\n ...slave,\n source: parseNativeSource(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 </View>\n );\n};\n\nexport default LibVlcPlayerView;\n"]}
|
|
@@ -235,47 +235,25 @@ class LibVlcPlayerView: ExpoView {
|
|
|
235
235
|
}
|
|
236
236
|
|
|
237
237
|
func getMediaTracks() -> MediaTracks {
|
|
238
|
-
|
|
238
|
+
guard let player = mediaPlayer else { return MediaTracks() }
|
|
239
239
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
let name = audio.trackName
|
|
244
|
-
return Track(id: Int(id), name: name)
|
|
245
|
-
}
|
|
240
|
+
let audioTracks = player.audioTracks.enumerated()
|
|
241
|
+
let videoTracks = player.videoTracks.enumerated()
|
|
242
|
+
let subtitleTracks = player.textTracks.enumerated()
|
|
246
243
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
return Track(id: Int(id), name: name)
|
|
251
|
-
}
|
|
244
|
+
let audio = audioTracks.map { index, audio in Track(id: index, name: audio.trackName) }
|
|
245
|
+
let video = videoTracks.map { index, video in Track(id: index, name: video.trackName) }
|
|
246
|
+
let subtitle = subtitleTracks.map { index, subtitle in Track(id: index, name: subtitle.trackName) }
|
|
252
247
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
mediaTracks = MediaTracks(
|
|
260
|
-
audio: audioTracks,
|
|
261
|
-
video: videoTracks,
|
|
262
|
-
subtitle: subtitleTracks
|
|
263
|
-
)
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
return mediaTracks
|
|
248
|
+
return MediaTracks(
|
|
249
|
+
audio: audio,
|
|
250
|
+
video: video,
|
|
251
|
+
subtitle: subtitle
|
|
252
|
+
)
|
|
267
253
|
}
|
|
268
254
|
|
|
269
255
|
func getMediaLength() -> Int {
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
let duration = Int(mediaPlayer?.media?.length.intValue ?? 0)
|
|
273
|
-
|
|
274
|
-
if duration > 0 {
|
|
275
|
-
length = duration
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
return length
|
|
256
|
+
Int(mediaPlayer?.media?.length.intValue ?? 0)
|
|
279
257
|
}
|
|
280
258
|
|
|
281
259
|
func getMediaInfo() -> MediaInfo {
|
package/package.json
CHANGED
package/src/LibVlcPlayerView.tsx
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { requireNativeView } from "expo";
|
|
2
|
-
import {
|
|
2
|
+
import { useState, type ComponentType } from "react";
|
|
3
3
|
import { View } from "react-native";
|
|
4
4
|
|
|
5
5
|
import {
|
|
@@ -26,16 +26,15 @@ const NativeView: ComponentType<LibVlcPlayerViewNativeProps> =
|
|
|
26
26
|
const RENDERING_CHILDREN_WARNING =
|
|
27
27
|
"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.";
|
|
28
28
|
|
|
29
|
-
let loggedRenderingChildrenWarning = false;
|
|
30
|
-
|
|
31
29
|
const FALLBACK_RATIO = 16 / 9;
|
|
32
30
|
|
|
33
31
|
const LibVlcPlayerView = ({ ref, ...props }: LibVlcPlayerViewProps) => {
|
|
34
|
-
const defaultRatio =
|
|
32
|
+
const [defaultRatio, setDefaultRatio] = useState<VideoAspectRatio>(FALLBACK_RATIO);
|
|
33
|
+
const [loggedWarning, setLoggedWarning] = useState<boolean>(false);
|
|
35
34
|
|
|
36
|
-
if (props.children && !
|
|
35
|
+
if (props.children && !loggedWarning) {
|
|
37
36
|
console.warn(RENDERING_CHILDREN_WARNING);
|
|
38
|
-
|
|
37
|
+
setLoggedWarning(true);
|
|
39
38
|
}
|
|
40
39
|
|
|
41
40
|
const onEncounteredError = (event: NativeEvent<Error>) => {
|
|
@@ -102,11 +101,11 @@ const LibVlcPlayerView = ({ ref, ...props }: LibVlcPlayerViewProps) => {
|
|
|
102
101
|
props.onFirstPlay(nativeEvent);
|
|
103
102
|
}
|
|
104
103
|
|
|
105
|
-
|
|
104
|
+
setDefaultRatio(mediaRatio || FALLBACK_RATIO);
|
|
106
105
|
};
|
|
107
106
|
|
|
108
107
|
const propRatio = props.aspectRatio;
|
|
109
|
-
const aspectRatio = propRatio === "auto" ? defaultRatio
|
|
108
|
+
const aspectRatio = propRatio === "auto" ? defaultRatio : propRatio;
|
|
110
109
|
const nativeRatio = convertAspectRatio(aspectRatio);
|
|
111
110
|
|
|
112
111
|
return (
|