diff --git a/ios/RN/RNCamera.m b/ios/RN/RNCamera.m index b07756ce5..660d37feb 100644 --- a/ios/RN/RNCamera.m +++ b/ios/RN/RNCamera.m @@ -471,8 +471,14 @@ - (void)record:(NSDictionary *)options resolve:(RCTPromiseResolveBlock)resolve r [connection setPreferredVideoStabilizationMode:self.videoStabilizationMode]; } } - [connection setVideoOrientation:[RNCameraUtils videoOrientationForDeviceOrientation:[[UIDevice currentDevice] orientation]]]; - + int orientation; + if ([options[@"orientation"] integerValue]) { + orientation = [options[@"orientation"] integerValue]; + } else { + orientation = [RNCameraUtils videoOrientationForDeviceOrientation:[[UIDevice currentDevice] orientation]]; + } + [connection setVideoOrientation:orientation]; + if (options[@"codec"]) { if (@available(iOS 10, *)) { AVVideoCodecType videoCodecType = options[@"codec"]; diff --git a/src/RNCamera.js b/src/RNCamera.js index 86062c9d9..9d6bc4b0e 100644 --- a/src/RNCamera.js +++ b/src/RNCamera.js @@ -66,6 +66,7 @@ type TrackedTextFeature = { type RecordingOptions = { maxDuration?: number, maxFileSize?: number, + orientation?: Orientation, quality?: number | string, codec?: string, mute?: boolean, @@ -287,6 +288,9 @@ export default class Camera extends React.Component { } else if (typeof options.quality === 'string') { options.quality = Camera.Constants.VideoQuality[options.quality]; } + if (typeof options.orientation=== 'string') { + options.orientation = CameraManager.Orientation[options.orientation]; + } return await CameraManager.record(options, this._cameraHandle); }