expo-video 3.0.12-canary-20251009-9919e08 → 3.0.12-canary-20251015-a6a1272
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 +1 -0
- package/android/build.gradle +2 -2
- package/expo-module.config.json +1 -1
- package/ios/VideoPlayer.swift +3 -2
- package/ios/VideoPlayerItem.swift +4 -0
- package/ios/VideoPlayerObserver.swift +25 -7
- package/local-maven-repo/host/exp/exponent/expo.modules.video/{3.0.12-canary-20251009-9919e08/expo.modules.video-3.0.12-canary-20251009-9919e08.module → 3.0.12-canary-20251015-a6a1272/expo.modules.video-3.0.12-canary-20251015-a6a1272.module} +7 -7
- package/local-maven-repo/host/exp/exponent/expo.modules.video/3.0.12-canary-20251015-a6a1272/expo.modules.video-3.0.12-canary-20251015-a6a1272.module.md5 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/3.0.12-canary-20251015-a6a1272/expo.modules.video-3.0.12-canary-20251015-a6a1272.module.sha1 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/3.0.12-canary-20251015-a6a1272/expo.modules.video-3.0.12-canary-20251015-a6a1272.module.sha256 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/3.0.12-canary-20251015-a6a1272/expo.modules.video-3.0.12-canary-20251015-a6a1272.module.sha512 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/{3.0.12-canary-20251009-9919e08/expo.modules.video-3.0.12-canary-20251009-9919e08.pom → 3.0.12-canary-20251015-a6a1272/expo.modules.video-3.0.12-canary-20251015-a6a1272.pom} +1 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/3.0.12-canary-20251015-a6a1272/expo.modules.video-3.0.12-canary-20251015-a6a1272.pom.md5 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/3.0.12-canary-20251015-a6a1272/expo.modules.video-3.0.12-canary-20251015-a6a1272.pom.sha1 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/3.0.12-canary-20251015-a6a1272/expo.modules.video-3.0.12-canary-20251015-a6a1272.pom.sha256 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.video/3.0.12-canary-20251015-a6a1272/expo.modules.video-3.0.12-canary-20251015-a6a1272.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/local-maven-repo/host/exp/exponent/expo.modules.video/3.0.12-canary-20251009-9919e08/expo.modules.video-3.0.12-canary-20251009-9919e08.module.md5 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/3.0.12-canary-20251009-9919e08/expo.modules.video-3.0.12-canary-20251009-9919e08.module.sha1 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/3.0.12-canary-20251009-9919e08/expo.modules.video-3.0.12-canary-20251009-9919e08.module.sha256 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/3.0.12-canary-20251009-9919e08/expo.modules.video-3.0.12-canary-20251009-9919e08.module.sha512 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/3.0.12-canary-20251009-9919e08/expo.modules.video-3.0.12-canary-20251009-9919e08.pom.md5 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/3.0.12-canary-20251009-9919e08/expo.modules.video-3.0.12-canary-20251009-9919e08.pom.sha1 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/3.0.12-canary-20251009-9919e08/expo.modules.video-3.0.12-canary-20251009-9919e08.pom.sha256 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.video/3.0.12-canary-20251009-9919e08/expo.modules.video-3.0.12-canary-20251009-9919e08.pom.sha512 +0 -1
- /package/local-maven-repo/host/exp/exponent/expo.modules.video/{3.0.12-canary-20251009-9919e08/expo.modules.video-3.0.12-canary-20251009-9919e08-sources.jar → 3.0.12-canary-20251015-a6a1272/expo.modules.video-3.0.12-canary-20251015-a6a1272-sources.jar} +0 -0
- /package/local-maven-repo/host/exp/exponent/expo.modules.video/{3.0.12-canary-20251009-9919e08/expo.modules.video-3.0.12-canary-20251009-9919e08-sources.jar.md5 → 3.0.12-canary-20251015-a6a1272/expo.modules.video-3.0.12-canary-20251015-a6a1272-sources.jar.md5} +0 -0
- /package/local-maven-repo/host/exp/exponent/expo.modules.video/{3.0.12-canary-20251009-9919e08/expo.modules.video-3.0.12-canary-20251009-9919e08-sources.jar.sha1 → 3.0.12-canary-20251015-a6a1272/expo.modules.video-3.0.12-canary-20251015-a6a1272-sources.jar.sha1} +0 -0
- /package/local-maven-repo/host/exp/exponent/expo.modules.video/{3.0.12-canary-20251009-9919e08/expo.modules.video-3.0.12-canary-20251009-9919e08-sources.jar.sha256 → 3.0.12-canary-20251015-a6a1272/expo.modules.video-3.0.12-canary-20251015-a6a1272-sources.jar.sha256} +0 -0
- /package/local-maven-repo/host/exp/exponent/expo.modules.video/{3.0.12-canary-20251009-9919e08/expo.modules.video-3.0.12-canary-20251009-9919e08-sources.jar.sha512 → 3.0.12-canary-20251015-a6a1272/expo.modules.video-3.0.12-canary-20251015-a6a1272-sources.jar.sha512} +0 -0
- /package/local-maven-repo/host/exp/exponent/expo.modules.video/{3.0.12-canary-20251009-9919e08/expo.modules.video-3.0.12-canary-20251009-9919e08.aar → 3.0.12-canary-20251015-a6a1272/expo.modules.video-3.0.12-canary-20251015-a6a1272.aar} +0 -0
- /package/local-maven-repo/host/exp/exponent/expo.modules.video/{3.0.12-canary-20251009-9919e08/expo.modules.video-3.0.12-canary-20251009-9919e08.aar.md5 → 3.0.12-canary-20251015-a6a1272/expo.modules.video-3.0.12-canary-20251015-a6a1272.aar.md5} +0 -0
- /package/local-maven-repo/host/exp/exponent/expo.modules.video/{3.0.12-canary-20251009-9919e08/expo.modules.video-3.0.12-canary-20251009-9919e08.aar.sha1 → 3.0.12-canary-20251015-a6a1272/expo.modules.video-3.0.12-canary-20251015-a6a1272.aar.sha1} +0 -0
- /package/local-maven-repo/host/exp/exponent/expo.modules.video/{3.0.12-canary-20251009-9919e08/expo.modules.video-3.0.12-canary-20251009-9919e08.aar.sha256 → 3.0.12-canary-20251015-a6a1272/expo.modules.video-3.0.12-canary-20251015-a6a1272.aar.sha256} +0 -0
- /package/local-maven-repo/host/exp/exponent/expo.modules.video/{3.0.12-canary-20251009-9919e08/expo.modules.video-3.0.12-canary-20251009-9919e08.aar.sha512 → 3.0.12-canary-20251015-a6a1272/expo.modules.video-3.0.12-canary-20251015-a6a1272.aar.sha512} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
### 🐛 Bug fixes
|
|
10
10
|
|
|
11
11
|
- Fix `FOREGROUND_SERVICE_MEDIA_PLAYBACK` being always present in the manifest. ([#40074](https://github.com/expo/expo/pull/40074) by [@behenate](https://github.com/behenate))
|
|
12
|
+
- [iOS] Fix crashes when rapidly replacing HLS sources. ([#40265](https://github.com/expo/expo/pull/40265) by [@behenate](https://github.com/behenate))
|
|
12
13
|
|
|
13
14
|
### 💡 Others
|
|
14
15
|
|
package/android/build.gradle
CHANGED
|
@@ -4,13 +4,13 @@ plugins {
|
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
group = 'host.exp.exponent'
|
|
7
|
-
version = '3.0.12-canary-
|
|
7
|
+
version = '3.0.12-canary-20251015-a6a1272'
|
|
8
8
|
|
|
9
9
|
android {
|
|
10
10
|
namespace "expo.modules.video"
|
|
11
11
|
defaultConfig {
|
|
12
12
|
versionCode 1
|
|
13
|
-
versionName '3.0.12-canary-
|
|
13
|
+
versionName '3.0.12-canary-20251015-a6a1272'
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
|
package/expo-module.config.json
CHANGED
package/ios/VideoPlayer.swift
CHANGED
|
@@ -268,9 +268,10 @@ internal final class VideoPlayer: SharedRef<AVPlayer>, Hashable, VideoPlayerObse
|
|
|
268
268
|
}
|
|
269
269
|
|
|
270
270
|
private func clearCurrentItem() {
|
|
271
|
-
|
|
271
|
+
videoSourceLoader.cancelCurrentTask()
|
|
272
|
+
|
|
273
|
+
DispatchQueue.main.async { [ref, dangerousPropertiesStore] in
|
|
272
274
|
ref.replaceCurrentItem(with: nil)
|
|
273
|
-
videoSourceLoader.cancelCurrentTask()
|
|
274
275
|
dangerousPropertiesStore.reset()
|
|
275
276
|
dangerousPropertiesStore.ownerIsReplacing = false
|
|
276
277
|
}
|
|
@@ -157,6 +157,8 @@ class VideoPlayerObserver: VideoSourceLoaderListener {
|
|
|
157
157
|
private var currentSubtitlesObserver: NSObjectProtocol?
|
|
158
158
|
private var currentAudioTracksObserver: NSObjectProtocol?
|
|
159
159
|
|
|
160
|
+
private var videoTrackUpdateTask: Task<Void, Never>?
|
|
161
|
+
|
|
160
162
|
init(owner: VideoPlayer, videoSourceLoader: VideoSourceLoader) {
|
|
161
163
|
self.owner = owner
|
|
162
164
|
self.videoSourceLoader = videoSourceLoader
|
|
@@ -239,24 +241,36 @@ class VideoPlayerObserver: VideoSourceLoaderListener {
|
|
|
239
241
|
// For HLS sources AVPlayer doesn't provide the tracks when they change
|
|
240
242
|
// But it does call this event when they are loaded and when the current track changes.
|
|
241
243
|
// We have to extract the necessary information ourselves.
|
|
242
|
-
|
|
244
|
+
self?.videoTrackUpdateTask?.cancel()
|
|
245
|
+
self?.videoTrackUpdateTask = Task { [weak self, playerItem] in
|
|
243
246
|
// For HLS sources
|
|
244
247
|
if let videoPlayerItem = playerItem as? VideoPlayerItem, videoPlayerItem.isHls {
|
|
245
248
|
guard let itemUri = videoPlayerItem.videoSource.uri else {
|
|
246
249
|
return
|
|
247
250
|
}
|
|
248
|
-
let lastLog =
|
|
249
|
-
|
|
251
|
+
let lastLog = item.accessLog()?.events.last(where: { $0.uri != nil })
|
|
252
|
+
let tracks = await videoPlayerItem.videoTracks
|
|
253
|
+
|
|
254
|
+
guard let self, !Task.isCancelled else {
|
|
255
|
+
return
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
self.currentVideoTrack = lastLog?.matchToVideoTrack(videoTracks: tracks, itemUrl: itemUri)
|
|
250
259
|
return
|
|
251
260
|
}
|
|
252
261
|
|
|
253
|
-
// For
|
|
262
|
+
// For non-HLS sources
|
|
254
263
|
// The track which is currently playing will be first
|
|
255
264
|
let currentTrack = try? await item.asset.loadTracks(withMediaType: .video).first
|
|
256
265
|
|
|
257
|
-
if let currentTrack {
|
|
258
|
-
let
|
|
259
|
-
|
|
266
|
+
if let currentTrack, !Task.isCancelled {
|
|
267
|
+
let newVideoTrack = await VideoTrack.from(assetTrack: currentTrack)
|
|
268
|
+
|
|
269
|
+
guard let self, !Task.isCancelled else {
|
|
270
|
+
return
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
self.currentVideoTrack = newVideoTrack
|
|
260
274
|
}
|
|
261
275
|
}
|
|
262
276
|
}
|
|
@@ -299,6 +313,10 @@ class VideoPlayerObserver: VideoSourceLoaderListener {
|
|
|
299
313
|
playbackBufferEmptyObserver?.invalidate()
|
|
300
314
|
playerItemStatusObserver?.invalidate()
|
|
301
315
|
tracksObserver?.invalidate()
|
|
316
|
+
|
|
317
|
+
videoTrackUpdateTask?.cancel()
|
|
318
|
+
videoTrackUpdateTask = nil
|
|
319
|
+
|
|
302
320
|
NotificationCenter.default.removeObserver(playerItemObserver as Any)
|
|
303
321
|
NotificationCenter.default.removeObserver(currentSubtitlesObserver as Any)
|
|
304
322
|
NotificationCenter.default.removeObserver(currentAudioTracksObserver as Any)
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"component": {
|
|
4
4
|
"group": "host.exp.exponent",
|
|
5
5
|
"module": "expo.modules.video",
|
|
6
|
-
"version": "3.0.12-canary-
|
|
6
|
+
"version": "3.0.12-canary-20251015-a6a1272",
|
|
7
7
|
"attributes": {
|
|
8
8
|
"org.gradle.status": "release"
|
|
9
9
|
}
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
},
|
|
25
25
|
"files": [
|
|
26
26
|
{
|
|
27
|
-
"name": "expo.modules.video-3.0.12-canary-
|
|
28
|
-
"url": "expo.modules.video-3.0.12-canary-
|
|
27
|
+
"name": "expo.modules.video-3.0.12-canary-20251015-a6a1272.aar",
|
|
28
|
+
"url": "expo.modules.video-3.0.12-canary-20251015-a6a1272.aar",
|
|
29
29
|
"size": 499962,
|
|
30
30
|
"sha512": "e2d6ac5f2d3bad569c46687ea971a0e620551b5364afcebad3cea1b7c24cdab228421abb36abca9ce5794ec13bb2be8ab0103672761905494aa4ea789ee99a0c",
|
|
31
31
|
"sha256": "ff210cba3dfc59e4839a53c3941b13a7fcb10feabbbd19c71a5510d9e8b37ea8",
|
|
@@ -113,8 +113,8 @@
|
|
|
113
113
|
],
|
|
114
114
|
"files": [
|
|
115
115
|
{
|
|
116
|
-
"name": "expo.modules.video-3.0.12-canary-
|
|
117
|
-
"url": "expo.modules.video-3.0.12-canary-
|
|
116
|
+
"name": "expo.modules.video-3.0.12-canary-20251015-a6a1272.aar",
|
|
117
|
+
"url": "expo.modules.video-3.0.12-canary-20251015-a6a1272.aar",
|
|
118
118
|
"size": 499962,
|
|
119
119
|
"sha512": "e2d6ac5f2d3bad569c46687ea971a0e620551b5364afcebad3cea1b7c24cdab228421abb36abca9ce5794ec13bb2be8ab0103672761905494aa4ea789ee99a0c",
|
|
120
120
|
"sha256": "ff210cba3dfc59e4839a53c3941b13a7fcb10feabbbd19c71a5510d9e8b37ea8",
|
|
@@ -133,8 +133,8 @@
|
|
|
133
133
|
},
|
|
134
134
|
"files": [
|
|
135
135
|
{
|
|
136
|
-
"name": "expo.modules.video-3.0.12-canary-
|
|
137
|
-
"url": "expo.modules.video-3.0.12-canary-
|
|
136
|
+
"name": "expo.modules.video-3.0.12-canary-20251015-a6a1272-sources.jar",
|
|
137
|
+
"url": "expo.modules.video-3.0.12-canary-20251015-a6a1272-sources.jar",
|
|
138
138
|
"size": 63322,
|
|
139
139
|
"sha512": "919fc7ff706cc8cda229cd547b80eecf1aad9302e8aaca8021da18dfd5ccee94dc0091829c15897f064d26541c124251fea6962bb40561d16e99304722520a99",
|
|
140
140
|
"sha256": "3358ccdcc90d5ad068c83e36cc08426695fa65591cbd5da681b3193fe2496637",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
f4c11ac9cbd707198dcda0b6402868ec
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
f9d6c51651537dd487f331c00979ac61dbb2ce82
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
8183baebf2018d9224279316100f43b16716881748f38c93e9cb860648fa2d86
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
40a0f3a1609c253c266138c62cd2871e2ef8eebe3d70e9ba2c2513885494afa7baaf14bd292ea250837a56c9c047874f12ab749c011f2e0049a36934b72c1dba
|
|
@@ -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>3.0.12-canary-
|
|
12
|
+
<version>3.0.12-canary-20251015-a6a1272</version>
|
|
13
13
|
<packaging>aar</packaging>
|
|
14
14
|
<name>expo.modules.video</name>
|
|
15
15
|
<url>https://github.com/expo/expo</url>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
acf7d9fae32005bed077c029a7543049
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
58e37b77aebd87a9583a00434288114c4d10202d
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
9cbd78f647b012d07415f7a04958beb4d625772ef0ae2818ce1656e6de144034
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
615167fcab21d654da2fa3d12c8eb1017889a5a134ff33dd6db790c45bbe516219055b7937276765de3597808f806c9b374cfb792bf3998732c2541f4c34f1a9
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
<groupId>host.exp.exponent</groupId>
|
|
4
4
|
<artifactId>expo.modules.video</artifactId>
|
|
5
5
|
<versioning>
|
|
6
|
-
<latest>3.0.12-canary-
|
|
7
|
-
<release>3.0.12-canary-
|
|
6
|
+
<latest>3.0.12-canary-20251015-a6a1272</latest>
|
|
7
|
+
<release>3.0.12-canary-20251015-a6a1272</release>
|
|
8
8
|
<versions>
|
|
9
|
-
<version>3.0.12-canary-
|
|
9
|
+
<version>3.0.12-canary-20251015-a6a1272</version>
|
|
10
10
|
</versions>
|
|
11
|
-
<lastUpdated>
|
|
11
|
+
<lastUpdated>20251015164320</lastUpdated>
|
|
12
12
|
</versioning>
|
|
13
13
|
</metadata>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
8ea2c91d58ccd9a06ff2052aafeedbb4
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
5fc595595aa726bb7e9c8827bbb2ef79c736f235
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
e218786f002c304f6a246039cc164980e82bab387fd3d3ae1042e7ba51c3d306
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
59816712340f4b90f5c95ad46b9e5d8b9248999a8011ae93aeb3840824b975ee5a08fb2750df8e672e832fa2ebbacf27f31d98017cf271939c440dce66e44e9f
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo-video",
|
|
3
3
|
"title": "Expo Video",
|
|
4
|
-
"version": "3.0.12-canary-
|
|
4
|
+
"version": "3.0.12-canary-20251015-a6a1272",
|
|
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,10 +31,10 @@
|
|
|
31
31
|
"license": "MIT",
|
|
32
32
|
"dependencies": {},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"expo-module-scripts": "5.0.8-canary-
|
|
34
|
+
"expo-module-scripts": "5.0.8-canary-20251015-a6a1272"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
|
-
"expo": "55.0.0-canary-
|
|
37
|
+
"expo": "55.0.0-canary-20251015-a6a1272",
|
|
38
38
|
"react": "*",
|
|
39
39
|
"react-native": "*"
|
|
40
40
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
830ea6e823c0e437ed6ca7b159cdb10e
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
cae1a94ade8b05b3d2a69406b7f3cc6bd77c7bc4
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
d44fb146963c1b79da110bcfc79aa0ae75c739019fd3aef164d096d3d2f82dd9
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
6d2c1c7cfd2d8ab552a8a77b9f29e35afa6bfe76200410dc084b1d00a0728ff9303cadb3340ce36eaca73cdf38d7528a2aafe768a05b5fd8908bf10246f6fe6c
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
00c4632c78f4821db076fa1c52ff4ddb
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
6d8775c08e8471876e7bdb6cf753fb7314bb1e8b
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1f6b850117e513ea0dc7714ed19cf4615e094b09f8c982c1c59c23f15f62167b
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
907a04eacfd023cb106c1fc13822d62df899354476a40fc44313fb8c5bb0254af219debca4b9783e82fa2c6f2b236a4fff1cd7269a98f5daff0eaac8945a15bb
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|