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
問題の原因は、カムをフロントに変更すると、フロントカムとバックカムの向きが変わることが原因のようです。
そのため、バック カムとフロント カムの初期方向の違いに合わせて調整する必要があるかもしれません。ユーザーがカムを切り替えるたびに接続の向きを
変更したくはありません.Appleが言っているように、パフォーマンスが低下するためです(実際、私がそれを行うと見栄えが悪くなります).AVAssetWriterInput
transform
を使用できるかどうかわかりません。transform
記録中にユーザーがカメラを切り替えられるようにしたいのですが、transform
書き込みを開始した後に を変更できません (クラッシュします)...
これを解決する方法はありますか?