expo-pro-video-editor 0.2.10 → 0.2.11
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.
|
@@ -78,7 +78,22 @@ enum PhotoLibraryVideoExporter {
|
|
|
78
78
|
let sourceAsset = exportSession.asset
|
|
79
79
|
if let videoTrack = sourceAsset.tracks(withMediaType: .video).first {
|
|
80
80
|
let transform = videoTrack.preferredTransform
|
|
81
|
-
|
|
81
|
+
// An exact `abs(transform.b) == 1` equality check is too brittle for this: a
|
|
82
|
+
// photo-library asset's preferredTransform routinely carries a rotation that
|
|
83
|
+
// is only approximately ±90°/±270° (stabilization/lens-correction adjustments,
|
|
84
|
+
// mirrored front-camera captures, Photos-applied edits even under `.original`),
|
|
85
|
+
// so `transform.b`/`transform.c` land at e.g. 0.9998 rather than exactly 1.0.
|
|
86
|
+
// That made `isPortrait` false for real portrait footage while the layer
|
|
87
|
+
// instruction below still applied the (near-90°) rotation unconditionally —
|
|
88
|
+
// the rotated frame then landed almost entirely outside the declared
|
|
89
|
+
// (unrotated, landscape) renderSize, and AVAssetExportSession "succeeds" with
|
|
90
|
+
// a video track that composites to black. Audio isn't touched by this video
|
|
91
|
+
// composition, so it played fine while the picture stayed dark — exactly the
|
|
92
|
+
// "audio plays, video is black" symptom this exists to fix. Use the same
|
|
93
|
+
// atan2-based angle tolerance already used elsewhere in this package (see
|
|
94
|
+
// VideoTranscoder.calculateOutputSize / VideoSequenceBuilder) instead.
|
|
95
|
+
let rotationAngle = abs(atan2(transform.b, transform.a))
|
|
96
|
+
let isPortrait = rotationAngle > .pi / 4 && rotationAngle < 3 * .pi / 4
|
|
82
97
|
let naturalSize = videoTrack.naturalSize
|
|
83
98
|
let renderSize = isPortrait
|
|
84
99
|
? CGSize(width: naturalSize.height, height: naturalSize.width)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo-pro-video-editor",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.11",
|
|
4
4
|
"description": "Native video composition (trim, filters, text/image overlays, audio mixing) for Expo/React Native, adapted from pro_video_editor's AVFoundation and Media3 Transformer implementation.",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|