我正在使用
我的问题在于视频方向。使用苹果的
问题出在前置摄像头方向上,使用这段代码在用户切换到前置摄像头后就无法正常工作。
似乎问题的根源是当我切换到前置摄像头时,
因此,也许我需要适应后置和前置摄像头的初始方向差异。
我并不想每次用户切换摄像头时都更改连接的方向,因为苹果称它会影响性能(而且看起来很糟糕), 所以苹果建议使用
你有什么解决方法吗?
AVCaptureSession
录制视频,并使用AVAssetWriterInput
将视频写入文件。我的问题在于视频方向。使用苹果的
RosyWriter
示例,我可以转换AVAssetWriterInput
,使视频处于正确的方向。- (CGFloat)angleOffsetFromPortraitOrientationToOrientation:(AVCaptureVideoOrientation)orientation
{
CGFloat angle = 0.0;
switch (orientation) {
case AVCaptureVideoOrientationPortrait:
angle = 0.0;
break;
case AVCaptureVideoOrientationPortraitUpsideDown:
angle = M_PI;
break;
case AVCaptureVideoOrientationLandscapeRight:
angle = -M_PI_2;
break;
case AVCaptureVideoOrientationLandscapeLeft:
angle = M_PI_2;
break;
default:
break;
}
return angle;
}
- (CGAffineTransform)transformFromCurrentVideoOrientationToOrientation:(AVCaptureVideoOrientation)orientation
{
CGAffineTransform transform = CGAffineTransformIdentity;
// Calculate offsets from an arbitrary reference orientation (portrait)
CGFloat orientationAngleOffset = [self angleOffsetFromPortraitOrientationToOrientation:orientation];
CGFloat videoOrientationAngleOffset = [self angleOffsetFromPortraitOrientationToOrientation:self.videoOrientation];
// Find the difference in angle between the passed in orientation and the current video orientation
CGFloat angleOffset = orientationAngleOffset - videoOrientationAngleOffset;
transform = CGAffineTransformMakeRotation(angleOffset);
return transform;
}
问题出在前置摄像头方向上,使用这段代码在用户切换到前置摄像头后就无法正常工作。
似乎问题的根源是当我切换到前置摄像头时,
AVCaptureConnection
会改变,从而导致前后摄像头的方向不同。因此,也许我需要适应后置和前置摄像头的初始方向差异。
我并不想每次用户切换摄像头时都更改连接的方向,因为苹果称它会影响性能(而且看起来很糟糕), 所以苹果建议使用
AVAssetWriterInput
的 transform
属性来更改输出方向,但我不确定是否可以使用 transform
,因为我想在录制时让用户切换摄像头,但我无法在开始录制后更改 transform
(这会导致崩溃)...你有什么解决方法吗?