expo-video 2.1.8 → 2.2.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/CHANGELOG.md +18 -0
- package/android/build.gradle +2 -2
- package/android/src/main/java/expo/modules/video/VideoModule.kt +21 -1
- package/android/src/main/java/expo/modules/video/VideoView.kt +7 -4
- package/android/src/main/java/expo/modules/video/player/FirstFrameEventGenerator.kt +3 -2
- package/android/src/main/java/expo/modules/video/player/PlayerEvent.kt +20 -2
- package/android/src/main/java/expo/modules/video/player/VideoPlayer.kt +16 -1
- package/android/src/main/java/expo/modules/video/player/VideoPlayerAudioTracks.kt +125 -0
- package/android/src/main/java/expo/modules/video/records/Tracks.kt +21 -0
- package/android/src/main/java/expo/modules/video/records/VideoEventPayloads.kt +12 -1
- package/build/VideoPlayer.types.d.ts +30 -0
- package/build/VideoPlayer.types.d.ts.map +1 -1
- package/build/VideoPlayer.types.js.map +1 -1
- package/build/VideoPlayer.web.d.ts +3 -1
- package/build/VideoPlayer.web.d.ts.map +1 -1
- package/build/VideoPlayer.web.js +2 -0
- package/build/VideoPlayer.web.js.map +1 -1
- package/build/VideoPlayerEvents.types.d.ts +34 -1
- package/build/VideoPlayerEvents.types.d.ts.map +1 -1
- package/build/VideoPlayerEvents.types.js.map +1 -1
- package/build/VideoView.types.d.ts +9 -1
- package/build/VideoView.types.d.ts.map +1 -1
- package/build/VideoView.types.js.map +1 -1
- package/build/VideoView.web.js +1 -1
- package/build/VideoView.web.js.map +1 -1
- package/build/index.d.ts +1 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js.map +1 -1
- package/expo-module.config.json +1 -1
- package/ios/Records/Tracks.swift +13 -0
- package/ios/Records/VideoEventPayloads.swift +11 -0
- package/ios/VideoModule.swift +11 -0
- package/ios/VideoPlayer.swift +20 -1
- package/ios/VideoPlayerAudioTracks.swift +72 -0
- package/ios/VideoPlayerObserver.swift +15 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/{2.1.8/expo.modules.video-2.1.8-sources.jar → 2.2.0/expo.modules.video-2.2.0-sources.jar} +0 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.2.0/expo.modules.video-2.2.0-sources.jar.md5 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.2.0/expo.modules.video-2.2.0-sources.jar.sha1 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.2.0/expo.modules.video-2.2.0-sources.jar.sha256 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.2.0/expo.modules.video-2.2.0-sources.jar.sha512 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.2.0/expo.modules.video-2.2.0.aar +0 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.2.0/expo.modules.video-2.2.0.aar.md5 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.2.0/expo.modules.video-2.2.0.aar.sha1 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.2.0/expo.modules.video-2.2.0.aar.sha256 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.2.0/expo.modules.video-2.2.0.aar.sha512 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/{2.1.8/expo.modules.video-2.1.8.module → 2.2.0/expo.modules.video-2.2.0.module} +22 -22
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.2.0/expo.modules.video-2.2.0.module.md5 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.2.0/expo.modules.video-2.2.0.module.sha1 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.2.0/expo.modules.video-2.2.0.module.sha256 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.2.0/expo.modules.video-2.2.0.module.sha512 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/{2.1.8/expo.modules.video-2.1.8.pom → 2.2.0/expo.modules.video-2.2.0.pom} +1 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.2.0/expo.modules.video-2.2.0.pom.md5 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.2.0/expo.modules.video-2.2.0.pom.sha1 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.2.0/expo.modules.video-2.2.0.pom.sha256 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.2.0/expo.modules.video-2.2.0.pom.sha512 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/maven-metadata.xml +4 -4
- package/local-maven-repo/host/exp/exponent/expo.modules.video/maven-metadata.xml.md5 +1 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/maven-metadata.xml.sha1 +1 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/maven-metadata.xml.sha256 +1 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/maven-metadata.xml.sha512 +1 -1
- package/package.json +3 -3
- package/src/VideoPlayer.types.ts +35 -0
- package/src/VideoPlayer.web.tsx +3 -0
- package/src/VideoPlayerEvents.types.ts +40 -0
- package/src/VideoView.types.ts +10 -1
- package/src/VideoView.web.tsx +1 -1
- package/src/index.ts +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.1.8/expo.modules.video-2.1.8-sources.jar.md5 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.1.8/expo.modules.video-2.1.8-sources.jar.sha1 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.1.8/expo.modules.video-2.1.8-sources.jar.sha256 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.1.8/expo.modules.video-2.1.8-sources.jar.sha512 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.1.8/expo.modules.video-2.1.8.aar +0 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.1.8/expo.modules.video-2.1.8.aar.md5 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.1.8/expo.modules.video-2.1.8.aar.sha1 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.1.8/expo.modules.video-2.1.8.aar.sha256 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.1.8/expo.modules.video-2.1.8.aar.sha512 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.1.8/expo.modules.video-2.1.8.module.md5 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.1.8/expo.modules.video-2.1.8.module.sha1 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.1.8/expo.modules.video-2.1.8.module.sha256 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.1.8/expo.modules.video-2.1.8.module.sha512 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.1.8/expo.modules.video-2.1.8.pom.md5 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.1.8/expo.modules.video-2.1.8.pom.sha1 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.1.8/expo.modules.video-2.1.8.pom.sha256 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/2.1.8/expo.modules.video-2.1.8.pom.sha512 +0 -1
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import AVFoundation
|
|
3
|
+
|
|
4
|
+
class VideoPlayerAudioTracks {
|
|
5
|
+
weak var owner: VideoPlayer?
|
|
6
|
+
private(set) var availableAudioTracks: [AudioTrack] = []
|
|
7
|
+
private(set) var currentAudioTrack: AudioTrack?
|
|
8
|
+
|
|
9
|
+
init (owner: VideoPlayer) {
|
|
10
|
+
self.owner = owner
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
func onNewAudioTrackSelected(audioTrack: AudioTrack?) {
|
|
14
|
+
currentAudioTrack = audioTrack
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
func onNewPlayerItemLoaded(playerItem: AVPlayerItem?) {
|
|
18
|
+
availableAudioTracks = Self.findAvailableAudioTracks(for: playerItem)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
func selectAudioTrack(audioTrack: AudioTrack?) {
|
|
22
|
+
guard let currentItem = self.owner?.ref.currentItem else {
|
|
23
|
+
return
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if let group = currentItem.asset.mediaSelectionGroup(forMediaCharacteristic: .audible) {
|
|
27
|
+
let option = group.options.first {
|
|
28
|
+
$0.displayName == audioTrack?.label && $0.locale?.identifier == audioTrack?.language
|
|
29
|
+
}
|
|
30
|
+
currentItem.select(option, in: group)
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
static func findAvailableAudioTracks(for playerItem: AVPlayerItem?) -> [AudioTrack] {
|
|
35
|
+
var availableAudioTracks: [AudioTrack] = []
|
|
36
|
+
|
|
37
|
+
guard let asset = playerItem?.asset else {
|
|
38
|
+
return availableAudioTracks
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
let mediaSelectionCharacteristics = asset.availableMediaCharacteristicsWithMediaSelectionOptions
|
|
42
|
+
|
|
43
|
+
for characteristic in mediaSelectionCharacteristics {
|
|
44
|
+
guard characteristic == .audible else {
|
|
45
|
+
continue
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if let group = asset.mediaSelectionGroup(forMediaCharacteristic: characteristic) {
|
|
49
|
+
for option in group.options {
|
|
50
|
+
guard let audioTrack = AudioTrack.from(mediaSelectionOption: option) else {
|
|
51
|
+
continue
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
availableAudioTracks.append(audioTrack)
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return availableAudioTracks
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
static func findCurrentAudioTrack(for playerItem: AVPlayerItem?) -> AudioTrack? {
|
|
62
|
+
guard
|
|
63
|
+
let currentItem = playerItem,
|
|
64
|
+
let mediaSelectionGroup = currentItem.asset.mediaSelectionGroup(forMediaCharacteristic: .audible),
|
|
65
|
+
let selectedMediaOption = currentItem.currentMediaSelection.selectedMediaOption(in: mediaSelectionGroup)
|
|
66
|
+
else {
|
|
67
|
+
return nil
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return AudioTrack.from(mediaSelectionOption: selectedMediaOption)
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -24,6 +24,7 @@ protocol VideoPlayerObserverDelegate: AnyObject {
|
|
|
24
24
|
func onTimeUpdate(player: AVPlayer, timeUpdate: TimeUpdate)
|
|
25
25
|
func onAudioMixingModeChanged(player: AVPlayer, oldAudioMixingMode: AudioMixingMode, newAudioMixingMode: AudioMixingMode)
|
|
26
26
|
func onSubtitleSelectionChanged(player: AVPlayer, playerItem: AVPlayerItem?, subtitleTrack: SubtitleTrack?)
|
|
27
|
+
func onAudioTrackSelectionChanged(player: AVPlayer, playerItem: AVPlayerItem?, audioTrack: AudioTrack?)
|
|
27
28
|
func onLoadedPlayerItem(player: AVPlayer, playerItem: AVPlayerItem?)
|
|
28
29
|
func onVideoTrackChanged(player: AVPlayer, oldVideoTrack: VideoTrack?, newVideoTrack: VideoTrack?)
|
|
29
30
|
}
|
|
@@ -41,6 +42,7 @@ extension VideoPlayerObserverDelegate {
|
|
|
41
42
|
func onTimeUpdate(player: AVPlayer, timeUpdate: TimeUpdate) {}
|
|
42
43
|
func onAudioMixingModeChanged(player: AVPlayer, oldAudioMixingMode: AudioMixingMode, newAudioMixingMode: AudioMixingMode) {}
|
|
43
44
|
func onSubtitleSelectionChanged(player: AVPlayer, playerItem: AVPlayerItem?, subtitleTrack: SubtitleTrack?) {}
|
|
45
|
+
func onAudioTrackSelectionChanged(player: AVPlayer, playerItem: AVPlayerItem?, audioTrack: AudioTrack?) {}
|
|
44
46
|
func onLoadedPlayerItem(player: AVPlayer, playerItem: AVPlayerItem?) {}
|
|
45
47
|
func onVideoTrackChanged(player: AVPlayer, oldVideoTrack: VideoTrack?, newVideoTrack: VideoTrack?) {}
|
|
46
48
|
}
|
|
@@ -123,6 +125,7 @@ class VideoPlayerObserver {
|
|
|
123
125
|
private var playerItemStatusObserver: NSKeyValueObservation?
|
|
124
126
|
private var playbackLikelyToKeepUpObserver: NSKeyValueObservation?
|
|
125
127
|
private var currentSubtitlesObserver: NSObjectProtocol?
|
|
128
|
+
private var currentAudioTracksObserver: NSObjectProtocol?
|
|
126
129
|
|
|
127
130
|
init(owner: VideoPlayer) {
|
|
128
131
|
self.owner = owner
|
|
@@ -241,6 +244,17 @@ class VideoPlayerObserver {
|
|
|
241
244
|
delegate.value?.onSubtitleSelectionChanged(player: player, playerItem: playerItem, subtitleTrack: subtitleTrack)
|
|
242
245
|
}
|
|
243
246
|
}
|
|
247
|
+
|
|
248
|
+
currentAudioTracksObserver = NotificationCenter.default.addObserver(
|
|
249
|
+
forName: AVPlayerItem.mediaSelectionDidChangeNotification,
|
|
250
|
+
object: playerItem,
|
|
251
|
+
queue: nil
|
|
252
|
+
) { [weak self] _ in
|
|
253
|
+
self?.delegates.forEach { delegate in
|
|
254
|
+
let audioTrack = VideoPlayerAudioTracks.findCurrentAudioTrack(for: playerItem)
|
|
255
|
+
delegate.value?.onAudioTrackSelectionChanged(player: player, playerItem: playerItem, audioTrack: audioTrack)
|
|
256
|
+
}
|
|
257
|
+
}
|
|
244
258
|
}
|
|
245
259
|
|
|
246
260
|
private func invalidateCurrentPlayerItemObservers() {
|
|
@@ -250,6 +264,7 @@ class VideoPlayerObserver {
|
|
|
250
264
|
tracksObserver?.invalidate()
|
|
251
265
|
NotificationCenter.default.removeObserver(playerItemObserver as Any)
|
|
252
266
|
NotificationCenter.default.removeObserver(currentSubtitlesObserver as Any)
|
|
267
|
+
NotificationCenter.default.removeObserver(currentAudioTracksObserver as Any)
|
|
253
268
|
}
|
|
254
269
|
|
|
255
270
|
func startOrUpdateTimeUpdates(forInterval interval: Double) {
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
6e1f79fc8674bec45f35f95a4f8933f3
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
f26b20423aa775f88468456856f576c24bc8149b
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ff54e2221752092ebdece914b77e4504b2864fc94504c8a1887ea67a2afa5ea0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
c7c374ab88183e831ed5a80a5e7a6f9ef2d29d4157c7b9496e30a9f87b14c4952b1e867b29f8feedbab21badccdf1b751f3a20367d1970a5e814311d96618f0e
|
package/local-maven-repo/host/exp/exponent/expo.modules.video/2.2.0/expo.modules.video-2.2.0.aar
ADDED
|
Binary file
|
package/local-maven-repo/host/exp/exponent/expo.modules.video/2.2.0/expo.modules.video-2.2.0.aar.md5
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
b87e04623a8bc68b39b0d628a278460d
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
06203802abf1c39df7bef9bddb6cf7dda03e6300
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0022fab08b59c4346e67a4bf573af546f4f0e7eb322aee1115335e035318fa2c
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
a1501f7e947680eba85a049cf0520518bca4feca64832fbdc41383cb2c483f6253ecf8d429ad936966fcce1b0494175035399894dbce9c50f4765bd099edebf1
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"component": {
|
|
4
4
|
"group": "host.exp.exponent",
|
|
5
5
|
"module": "expo.modules.video",
|
|
6
|
-
"version": "2.
|
|
6
|
+
"version": "2.2.0",
|
|
7
7
|
"attributes": {
|
|
8
8
|
"org.gradle.status": "release"
|
|
9
9
|
}
|
|
@@ -24,13 +24,13 @@
|
|
|
24
24
|
},
|
|
25
25
|
"files": [
|
|
26
26
|
{
|
|
27
|
-
"name": "expo.modules.video-2.
|
|
28
|
-
"url": "expo.modules.video-2.
|
|
29
|
-
"size":
|
|
30
|
-
"sha512": "
|
|
31
|
-
"sha256": "
|
|
32
|
-
"sha1": "
|
|
33
|
-
"md5": "
|
|
27
|
+
"name": "expo.modules.video-2.2.0.aar",
|
|
28
|
+
"url": "expo.modules.video-2.2.0.aar",
|
|
29
|
+
"size": 444322,
|
|
30
|
+
"sha512": "a1501f7e947680eba85a049cf0520518bca4feca64832fbdc41383cb2c483f6253ecf8d429ad936966fcce1b0494175035399894dbce9c50f4765bd099edebf1",
|
|
31
|
+
"sha256": "0022fab08b59c4346e67a4bf573af546f4f0e7eb322aee1115335e035318fa2c",
|
|
32
|
+
"sha1": "06203802abf1c39df7bef9bddb6cf7dda03e6300",
|
|
33
|
+
"md5": "b87e04623a8bc68b39b0d628a278460d"
|
|
34
34
|
}
|
|
35
35
|
]
|
|
36
36
|
},
|
|
@@ -113,13 +113,13 @@
|
|
|
113
113
|
],
|
|
114
114
|
"files": [
|
|
115
115
|
{
|
|
116
|
-
"name": "expo.modules.video-2.
|
|
117
|
-
"url": "expo.modules.video-2.
|
|
118
|
-
"size":
|
|
119
|
-
"sha512": "
|
|
120
|
-
"sha256": "
|
|
121
|
-
"sha1": "
|
|
122
|
-
"md5": "
|
|
116
|
+
"name": "expo.modules.video-2.2.0.aar",
|
|
117
|
+
"url": "expo.modules.video-2.2.0.aar",
|
|
118
|
+
"size": 444322,
|
|
119
|
+
"sha512": "a1501f7e947680eba85a049cf0520518bca4feca64832fbdc41383cb2c483f6253ecf8d429ad936966fcce1b0494175035399894dbce9c50f4765bd099edebf1",
|
|
120
|
+
"sha256": "0022fab08b59c4346e67a4bf573af546f4f0e7eb322aee1115335e035318fa2c",
|
|
121
|
+
"sha1": "06203802abf1c39df7bef9bddb6cf7dda03e6300",
|
|
122
|
+
"md5": "b87e04623a8bc68b39b0d628a278460d"
|
|
123
123
|
}
|
|
124
124
|
]
|
|
125
125
|
},
|
|
@@ -133,13 +133,13 @@
|
|
|
133
133
|
},
|
|
134
134
|
"files": [
|
|
135
135
|
{
|
|
136
|
-
"name": "expo.modules.video-2.
|
|
137
|
-
"url": "expo.modules.video-2.
|
|
138
|
-
"size":
|
|
139
|
-
"sha512": "
|
|
140
|
-
"sha256": "
|
|
141
|
-
"sha1": "
|
|
142
|
-
"md5": "
|
|
136
|
+
"name": "expo.modules.video-2.2.0-sources.jar",
|
|
137
|
+
"url": "expo.modules.video-2.2.0-sources.jar",
|
|
138
|
+
"size": 52499,
|
|
139
|
+
"sha512": "c7c374ab88183e831ed5a80a5e7a6f9ef2d29d4157c7b9496e30a9f87b14c4952b1e867b29f8feedbab21badccdf1b751f3a20367d1970a5e814311d96618f0e",
|
|
140
|
+
"sha256": "ff54e2221752092ebdece914b77e4504b2864fc94504c8a1887ea67a2afa5ea0",
|
|
141
|
+
"sha1": "f26b20423aa775f88468456856f576c24bc8149b",
|
|
142
|
+
"md5": "6e1f79fc8674bec45f35f95a4f8933f3"
|
|
143
143
|
}
|
|
144
144
|
]
|
|
145
145
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
c865db9b1b7212c590b04d5b3d025a92
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
6c020a0af93440c2dfa817c46c65626c0be15fa5
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
dc4736ff81e3bdb761a88697e35d0a7612f679f84daab0b6f4147510254413f2
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
8e05e96b0ea1f0b9c965ea20642b5654d498a8be3dadfe985675d0b0dbccb06b35dae83f2a0dde27019b678f7c73a8b1cb1dab61503a658150f6a4f55560348b
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<modelVersion>4.0.0</modelVersion>
|
|
10
10
|
<groupId>host.exp.exponent</groupId>
|
|
11
11
|
<artifactId>expo.modules.video</artifactId>
|
|
12
|
-
<version>2.
|
|
12
|
+
<version>2.2.0</version>
|
|
13
13
|
<packaging>aar</packaging>
|
|
14
14
|
<name>expo.modules.video</name>
|
|
15
15
|
<url>https://github.com/expo/expo</url>
|
package/local-maven-repo/host/exp/exponent/expo.modules.video/2.2.0/expo.modules.video-2.2.0.pom.md5
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
54ababb6162596e7ddfa9e1e415a0fd1
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
49d5a63d0c4fbfb5dc9f9d45ea1512c281f2a5a2
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
af02050cf8898237faf34bc624abff592a33c4a86a34352ea485a4c3d00361f3
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
6354cc8b4f6fc7cdb027d5c6302584ed0d5f8c79c61b77921dd6ffe0f751a1465eae20c7ae3f505a19070ea5f57edcbaff7a6af19934124f740461e734dc0f96
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
<groupId>host.exp.exponent</groupId>
|
|
4
4
|
<artifactId>expo.modules.video</artifactId>
|
|
5
5
|
<versioning>
|
|
6
|
-
<latest>2.
|
|
7
|
-
<release>2.
|
|
6
|
+
<latest>2.2.0</latest>
|
|
7
|
+
<release>2.2.0</release>
|
|
8
8
|
<versions>
|
|
9
|
-
<version>2.
|
|
9
|
+
<version>2.2.0</version>
|
|
10
10
|
</versions>
|
|
11
|
-
<lastUpdated>
|
|
11
|
+
<lastUpdated>20250604230414</lastUpdated>
|
|
12
12
|
</versioning>
|
|
13
13
|
</metadata>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
d7576712c099005e0070a39cce656ca6
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
52a901eebefa6fac0c034b76185f5386b9113588
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
28ab1754acdffea060d818f3e54d1bfc0823de6c803276cf828c4371524eb793
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
1eb28fa579897d17888ae6f4f6dc0f996daf6c967f6dba0e239386c00c42e399b4dce3b2a8274364679e4c562ccd3b619c4e3271b0a4ed695c29b5097711c710
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo-video",
|
|
3
3
|
"title": "Expo Video",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.2.0",
|
|
5
5
|
"description": "A cross-platform, performant video component for React Native and Expo with Web support",
|
|
6
6
|
"main": "build/index.js",
|
|
7
7
|
"types": "build/index.d.ts",
|
|
@@ -31,12 +31,12 @@
|
|
|
31
31
|
"license": "MIT",
|
|
32
32
|
"dependencies": {},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"expo-module-scripts": "^4.1.
|
|
34
|
+
"expo-module-scripts": "^4.1.7"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
37
|
"expo": "*",
|
|
38
38
|
"react": "*",
|
|
39
39
|
"react-native": "*"
|
|
40
40
|
},
|
|
41
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "7638c800b57fe78f57cc7f129022f58e84a523c5"
|
|
42
42
|
}
|
package/src/VideoPlayer.types.ts
CHANGED
|
@@ -165,6 +165,23 @@ export declare class VideoPlayer extends SharedObject<VideoPlayerEvents> {
|
|
|
165
165
|
*/
|
|
166
166
|
subtitleTrack: SubtitleTrack | null;
|
|
167
167
|
|
|
168
|
+
/**
|
|
169
|
+
* Specifies the audio track currently played by the player. `null` when no audio is played.
|
|
170
|
+
*
|
|
171
|
+
* @default null
|
|
172
|
+
* @platform android
|
|
173
|
+
* @platform ios
|
|
174
|
+
*/
|
|
175
|
+
audioTrack: AudioTrack | null;
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* An array of audio tracks available for the current video.
|
|
179
|
+
*
|
|
180
|
+
* @platform android
|
|
181
|
+
* @platform ios
|
|
182
|
+
*/
|
|
183
|
+
readonly availableAudioTracks: AudioTrack[];
|
|
184
|
+
|
|
168
185
|
/**
|
|
169
186
|
* An array of subtitle tracks available for the current video.
|
|
170
187
|
*
|
|
@@ -576,3 +593,21 @@ export type VideoSize = {
|
|
|
576
593
|
*/
|
|
577
594
|
height: number;
|
|
578
595
|
};
|
|
596
|
+
|
|
597
|
+
export type AudioTrack = {
|
|
598
|
+
/**
|
|
599
|
+
* A string used by expo-video to identify the audio track.
|
|
600
|
+
* @platform android
|
|
601
|
+
*/
|
|
602
|
+
id: string;
|
|
603
|
+
|
|
604
|
+
/**
|
|
605
|
+
* Language of the audio track. For example, 'en', 'pl', 'de'.
|
|
606
|
+
*/
|
|
607
|
+
language: string;
|
|
608
|
+
|
|
609
|
+
/**
|
|
610
|
+
* Label of the audio track in the language of the device.
|
|
611
|
+
*/
|
|
612
|
+
label: string;
|
|
613
|
+
};
|
package/src/VideoPlayer.web.tsx
CHANGED
|
@@ -9,6 +9,7 @@ import type {
|
|
|
9
9
|
SubtitleTrack,
|
|
10
10
|
AudioMixingMode,
|
|
11
11
|
VideoTrack,
|
|
12
|
+
AudioTrack,
|
|
12
13
|
} from './VideoPlayer.types';
|
|
13
14
|
import type { VideoPlayerEvents } from './VideoPlayerEvents.types';
|
|
14
15
|
import { VideoThumbnail } from './VideoThumbnail';
|
|
@@ -80,6 +81,8 @@ export default class VideoPlayerWeb
|
|
|
80
81
|
bufferOptions: BufferOptions = {} as BufferOptions; // Not supported on web. Dummy to match the interface.
|
|
81
82
|
subtitleTrack: SubtitleTrack | null = null; // Embedded subtitles are not supported by the html web player. Dummy to match the interface.
|
|
82
83
|
availableSubtitleTracks: SubtitleTrack[] = []; // Embedded subtitles are not supported by the html web player. Dummy to match the interface.
|
|
84
|
+
audioTrack: AudioTrack | null = null; // Not supported on web. Dummy to match the interface.
|
|
85
|
+
availableAudioTracks: AudioTrack[] = []; // Not supported on web. Dummy to match the interface.
|
|
83
86
|
videoTrack: VideoTrack | null = null; // Not supported on web. Dummy to match the interface.
|
|
84
87
|
availableVideoTracks: VideoTrack[] = []; // Not supported on web. Dummy to match the interface.
|
|
85
88
|
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
VideoPlayerStatus,
|
|
5
5
|
VideoSource,
|
|
6
6
|
VideoTrack,
|
|
7
|
+
AudioTrack,
|
|
7
8
|
} from './VideoPlayer.types';
|
|
8
9
|
|
|
9
10
|
/**
|
|
@@ -60,6 +61,16 @@ export type VideoPlayerEvents = {
|
|
|
60
61
|
*/
|
|
61
62
|
subtitleTrackChange(payload: SubtitleTrackChangeEventPayload): void;
|
|
62
63
|
|
|
64
|
+
/**
|
|
65
|
+
* Handler for an event emitted when the available audio tracks change.
|
|
66
|
+
*/
|
|
67
|
+
availableAudioTracksChange(payload: AvailableAudioTracksChangeEventPayload): void;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Handler for an event emitted when the current audio track changes.
|
|
71
|
+
*/
|
|
72
|
+
audioTrackChange(payload: AudioTrackChangeEventPayload): void;
|
|
73
|
+
|
|
63
74
|
/**
|
|
64
75
|
* Handler for an event emitted when the current video track changes.
|
|
65
76
|
*/
|
|
@@ -270,4 +281,33 @@ export type SourceLoadEventPayload = {
|
|
|
270
281
|
* Subtitle tracks available for the loaded video source.
|
|
271
282
|
*/
|
|
272
283
|
availableSubtitleTracks: SubtitleTrack[];
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Audio tracks available for the loaded video source.
|
|
287
|
+
*/
|
|
288
|
+
availableAudioTracks: AudioTrack[];
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
type AudioTrackChangeEventPayload = {
|
|
292
|
+
/**
|
|
293
|
+
* New audio track of the player.
|
|
294
|
+
*/
|
|
295
|
+
audioTrack: AudioTrack | null;
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Previous audio track of the player.
|
|
299
|
+
*/
|
|
300
|
+
oldAudioTrack?: AudioTrack | null;
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
type AvailableAudioTracksChangeEventPayload = {
|
|
304
|
+
/**
|
|
305
|
+
* Array of available audio tracks.
|
|
306
|
+
*/
|
|
307
|
+
availableAudioTracks: AudioTrack[];
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* Previous array of available audio tracks.
|
|
311
|
+
*/
|
|
312
|
+
oldAvailableAudioTracks?: AudioTrack[];
|
|
273
313
|
};
|
package/src/VideoView.types.ts
CHANGED
|
@@ -150,7 +150,16 @@ export interface VideoViewProps extends ViewProps {
|
|
|
150
150
|
* Setting this property to `false` makes the Android behavior the same as iOS.
|
|
151
151
|
*
|
|
152
152
|
* @platform android
|
|
153
|
-
* @default
|
|
153
|
+
* @default false
|
|
154
154
|
*/
|
|
155
155
|
useExoShutter?: boolean;
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Determines the [cross origin policy](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/crossorigin) used by the underlying native view on web.
|
|
159
|
+
* If undefined, does not use CORS at all.
|
|
160
|
+
*
|
|
161
|
+
* @platform web
|
|
162
|
+
* @default undefined
|
|
163
|
+
*/
|
|
164
|
+
crossOrigin?: 'anonymous' | 'use-credentials';
|
|
156
165
|
}
|
package/src/VideoView.web.tsx
CHANGED
|
@@ -183,7 +183,7 @@ export const VideoView = forwardRef((props: { player?: VideoPlayer } & VideoView
|
|
|
183
183
|
<video
|
|
184
184
|
controls={props.nativeControls ?? true}
|
|
185
185
|
controlsList={props.allowsFullscreen ? undefined : 'nofullscreen'}
|
|
186
|
-
crossOrigin=
|
|
186
|
+
crossOrigin={props.crossOrigin}
|
|
187
187
|
style={{
|
|
188
188
|
...mapStyles(props.style),
|
|
189
189
|
objectFit: props.contentFit,
|
package/src/index.ts
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
f04f5b0977c4bd9196d03db94c1ce682
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
28868b01957eb865b99fbd21768e0a6e0ec82b12
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
61564c98d4114378d4bf1d04c1c75323bccebf4c5249b7dfd5892f424f4ac85f
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1cf1f4000a799fa1ec2a2269a3a9e543acb0be0525aeb3c43636e676bb5e2f3f429138501d9c872af062e2396c0b6244d033fd47888dad7dea387f5c5dd6f9f0
|
package/local-maven-repo/host/exp/exponent/expo.modules.video/2.1.8/expo.modules.video-2.1.8.aar
DELETED
|
Binary file
|
package/local-maven-repo/host/exp/exponent/expo.modules.video/2.1.8/expo.modules.video-2.1.8.aar.md5
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
895bf3e66f666fe4356f66b27b028d1f
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
900945ef879b8381ba2a3e28bf3f5306241fdd4d
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
c1aecf05d8f15c1b3d7db08bcada63c446788206519e3dfd11d94fd84c45ae0b
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
e8f0c2ae00533df951287a196987118b44cfb32b69dab44c9a88bb989f94f5e33eaa75f57cfc854966667c40c5494f94fd73f0d532cf1f0cda76080ba7565360
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
e763b62c079461d14ec57ac95875fcf9
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
ceba79c6f72700f8f7ee6dccf108fc8b90226043
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
096e3382fc3ebb4398cc11dd580e701d50ff51fd305fa1786d3d67cca9d238ce
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
e76eb37642c26db67b90c0ac847ae96ffaf56cb2b6b40abbfa16f192f51861638991d745c76b6cdaa109de8e724ec59096ac7a1daca0829b4e6eb34cef7b2d6c
|
package/local-maven-repo/host/exp/exponent/expo.modules.video/2.1.8/expo.modules.video-2.1.8.pom.md5
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
93b9a70f7414384f420f620dd0ec86cd
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
a7b9fba84389db7c9cffb21c3ce259a62aa5a0a5
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
7ca323ffad0084944fa5ae7d586157f3df5a4cafaa3507fbf0dff8388b9e0ca5
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
6e8147a80e1d6e80e91b1b79b5aa00d506f470f8f2a4ade9c0981b07d3bab502d60e51270642459626bcb0064990086561454dc1df6fa04712953c7a440b66e6
|