expo-libvlc-player 7.0.39 → 7.0.40
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.
|
@@ -359,42 +359,21 @@ class LibVlcPlayerView(
|
|
|
359
359
|
}
|
|
360
360
|
|
|
361
361
|
fun getMediaTracks(): MediaTracks {
|
|
362
|
-
|
|
362
|
+
val player = mediaPlayer ?: return MediaTracks()
|
|
363
363
|
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
audios?.forEach { track ->
|
|
369
|
-
val trackObj = Track(id = track.id, name = track.name)
|
|
370
|
-
audioTracks.add(trackObj)
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
val videoTracks = mutableListOf<Track>()
|
|
374
|
-
val videos = player.getVideoTracks()
|
|
375
|
-
|
|
376
|
-
videos?.forEach { track ->
|
|
377
|
-
val trackObj = Track(id = track.id, name = track.name)
|
|
378
|
-
videoTracks.add(trackObj)
|
|
379
|
-
}
|
|
364
|
+
val audios = player.getAudioTracks()?.map { track -> Track(id = track.id, name = track.name) }
|
|
365
|
+
val videos = player.getVideoTracks()?.map { track -> Track(id = track.id, name = track.name) }
|
|
366
|
+
val subtitles = player.getSpuTracks()?.map { track -> Track(id = track.id, name = track.name) }
|
|
380
367
|
|
|
381
|
-
|
|
382
|
-
|
|
368
|
+
val audio = audios ?: emptyList()
|
|
369
|
+
val video = videos ?: emptyList()
|
|
370
|
+
val subtitle = subtitles ?: emptyList()
|
|
383
371
|
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
mediaTracks =
|
|
390
|
-
MediaTracks(
|
|
391
|
-
audio = audioTracks,
|
|
392
|
-
video = videoTracks,
|
|
393
|
-
subtitle = subtitleTracks,
|
|
394
|
-
)
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
return mediaTracks
|
|
372
|
+
return MediaTracks(
|
|
373
|
+
audio = audio,
|
|
374
|
+
video = video,
|
|
375
|
+
subtitle = subtitle,
|
|
376
|
+
)
|
|
398
377
|
}
|
|
399
378
|
|
|
400
379
|
fun getMediaLength(): Int = (mediaPlayer?.getLength() ?: 0).toInt()
|
|
@@ -413,9 +392,8 @@ class LibVlcPlayerView(
|
|
|
413
392
|
}
|
|
414
393
|
|
|
415
394
|
fun getVideoSize(): Size {
|
|
416
|
-
val video = mediaPlayer?.getCurrentVideoTrack()
|
|
417
|
-
|
|
418
|
-
return Size(0, 0)
|
|
395
|
+
val video = mediaPlayer?.getCurrentVideoTrack() ?: return Size(0, 0)
|
|
396
|
+
return Size(video.width, video.height)
|
|
419
397
|
}
|
|
420
398
|
|
|
421
399
|
val hasVideoSize: Boolean
|
|
@@ -424,20 +402,16 @@ class LibVlcPlayerView(
|
|
|
424
402
|
return video.width > 0 && video.height > 0
|
|
425
403
|
}
|
|
426
404
|
|
|
427
|
-
val
|
|
405
|
+
val hasMediaLength: Boolean
|
|
428
406
|
get() {
|
|
429
|
-
val tracks = getMediaTracks()
|
|
430
407
|
val length = getMediaLength()
|
|
431
|
-
|
|
432
|
-
return hasVideo && hasVideoSize && length > 0
|
|
408
|
+
return length > 0
|
|
433
409
|
}
|
|
434
410
|
|
|
435
|
-
val
|
|
411
|
+
val hasMediaVolume: Boolean
|
|
436
412
|
get() {
|
|
437
|
-
val tracks = getMediaTracks()
|
|
438
|
-
val hasAudio = tracks.audio.any { track -> track.id != -1 }
|
|
439
413
|
val volume = mediaPlayer?.getVolume() ?: MediaPlayerConstants.MIN_PLAYER_VOLUME
|
|
440
|
-
return
|
|
414
|
+
return volume > MediaPlayerConstants.MIN_PLAYER_VOLUME
|
|
441
415
|
}
|
|
442
416
|
|
|
443
417
|
var source: String? = null
|
|
@@ -741,11 +715,11 @@ fun LibVlcPlayerView.setPlayerListener(mediaPlayer: MediaPlayer?) {
|
|
|
741
715
|
setPlayerTracks()
|
|
742
716
|
|
|
743
717
|
retryUntil { isLastAttempt ->
|
|
744
|
-
if (
|
|
718
|
+
if (hasMediaLength || isLastAttempt) {
|
|
745
719
|
onFirstPlay(getMediaInfo())
|
|
746
720
|
}
|
|
747
721
|
|
|
748
|
-
return@retryUntil
|
|
722
|
+
return@retryUntil hasMediaLength
|
|
749
723
|
}
|
|
750
724
|
|
|
751
725
|
retryUntil {
|
|
@@ -758,11 +732,11 @@ fun LibVlcPlayerView.setPlayerListener(mediaPlayer: MediaPlayer?) {
|
|
|
758
732
|
}
|
|
759
733
|
|
|
760
734
|
retryUntil {
|
|
761
|
-
if (
|
|
735
|
+
if (hasMediaVolume) {
|
|
762
736
|
MediaPlayerManager.audioFocusManager.updateAudioFocus()
|
|
763
737
|
}
|
|
764
738
|
|
|
765
|
-
return@retryUntil
|
|
739
|
+
return@retryUntil hasMediaVolume
|
|
766
740
|
}
|
|
767
741
|
|
|
768
742
|
firstPlay = false
|
|
@@ -6,8 +6,8 @@ import expo.modules.libvlcplayer.records.Track
|
|
|
6
6
|
import java.io.Serializable
|
|
7
7
|
|
|
8
8
|
class MediaTracks(
|
|
9
|
-
@Field var audio:
|
|
10
|
-
@Field var video:
|
|
11
|
-
@Field var subtitle:
|
|
9
|
+
@Field var audio: List<Track> = emptyList(),
|
|
10
|
+
@Field var video: List<Track> = emptyList(),
|
|
11
|
+
@Field var subtitle: List<Track> = emptyList(),
|
|
12
12
|
) : Record,
|
|
13
13
|
Serializable
|
|
@@ -237,13 +237,15 @@ class LibVlcPlayerView: ExpoView {
|
|
|
237
237
|
func getMediaTracks() -> MediaTracks {
|
|
238
238
|
guard let player = mediaPlayer else { return MediaTracks() }
|
|
239
239
|
|
|
240
|
-
let
|
|
241
|
-
let videoTracks = player.videoTracks.enumerated()
|
|
242
|
-
let subtitleTracks = player.textTracks.enumerated()
|
|
240
|
+
let disableTrack = Track(id: -1, name: "Disable")
|
|
243
241
|
|
|
244
|
-
let
|
|
245
|
-
let
|
|
246
|
-
let
|
|
242
|
+
let audios = player.audioTracks.enumerated()
|
|
243
|
+
let videos = player.videoTracks.enumerated()
|
|
244
|
+
let subtitles = player.textTracks.enumerated()
|
|
245
|
+
|
|
246
|
+
let audio = [disableTrack] + audios.map { index, audio in Track(id: index, name: audio.trackName) }
|
|
247
|
+
let video = [disableTrack] + videos.map { index, video in Track(id: index, name: video.trackName) }
|
|
248
|
+
let subtitle = [disableTrack] + subtitles.map { index, subtitle in Track(id: index, name: subtitle.trackName) }
|
|
247
249
|
|
|
248
250
|
return MediaTracks(
|
|
249
251
|
audio: audio,
|
|
@@ -270,8 +272,8 @@ class LibVlcPlayerView: ExpoView {
|
|
|
270
272
|
}
|
|
271
273
|
|
|
272
274
|
func getVideoSize() -> CGSize {
|
|
273
|
-
|
|
274
|
-
return
|
|
275
|
+
guard let size = mediaPlayer?.videoSize else { return CGSize(width: 0, height: 0) }
|
|
276
|
+
return size
|
|
275
277
|
}
|
|
276
278
|
|
|
277
279
|
func resetVideoTrack() {
|
|
@@ -291,18 +293,14 @@ class LibVlcPlayerView: ExpoView {
|
|
|
291
293
|
return video.width > 0 && video.height > 0
|
|
292
294
|
}
|
|
293
295
|
|
|
294
|
-
var
|
|
295
|
-
let tracks = getMediaTracks()
|
|
296
|
+
var hasMediaLength: Bool {
|
|
296
297
|
let length = getMediaLength()
|
|
297
|
-
|
|
298
|
-
return hasVideo && hasVideoSize && length > 0
|
|
298
|
+
return length > 0
|
|
299
299
|
}
|
|
300
300
|
|
|
301
|
-
var
|
|
302
|
-
let tracks = getMediaTracks()
|
|
303
|
-
let hasAudio = tracks.audio.count > 0
|
|
301
|
+
var hasMediaVolume: Bool {
|
|
304
302
|
let volume = mediaPlayer?.audio?.volume ?? Int32(MediaPlayerConstants.minPlayerVolume)
|
|
305
|
-
return
|
|
303
|
+
return volume > MediaPlayerConstants.minPlayerVolume
|
|
306
304
|
}
|
|
307
305
|
|
|
308
306
|
var source: String? {
|
|
@@ -556,11 +554,11 @@ extension LibVlcPlayerView: VLCMediaPlayerDelegate {
|
|
|
556
554
|
retryUntil { [weak self] isLastAttempt in
|
|
557
555
|
guard let self else { return true }
|
|
558
556
|
|
|
559
|
-
if
|
|
557
|
+
if hasMediaLength || isLastAttempt {
|
|
560
558
|
onFirstPlay(getMediaInfo())
|
|
561
559
|
}
|
|
562
560
|
|
|
563
|
-
return
|
|
561
|
+
return hasMediaLength
|
|
564
562
|
}
|
|
565
563
|
|
|
566
564
|
retryUntil { [weak self] _ in
|
|
@@ -577,11 +575,11 @@ extension LibVlcPlayerView: VLCMediaPlayerDelegate {
|
|
|
577
575
|
retryUntil { [weak self] _ in
|
|
578
576
|
guard let self else { return true }
|
|
579
577
|
|
|
580
|
-
if
|
|
578
|
+
if hasMediaVolume {
|
|
581
579
|
MediaPlayerManager.shared.audioSessionManager.setAppropriateAudioSession()
|
|
582
580
|
}
|
|
583
581
|
|
|
584
|
-
return
|
|
582
|
+
return hasMediaVolume
|
|
585
583
|
}
|
|
586
584
|
|
|
587
585
|
firstPlay = false
|