0

我正在使用录制视频,avfoundationcaptureSession使用AVCaptureSessionPreset640x480. 但录制后,当我看到我的视频时,它的尺寸变为 480x640。

编辑:使用纵向模式录制的问题是您将始终获得 480X640。由于设备的方向,因此需要根据方向大小旋转视频。

我已经解决了这个问题,但它根本不是题外话。

- (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;
}
4

2 回答 2

1

您是否垂直握住手机(人像方向)?

视频是在使用加速度计检测到的设备方向上捕获的。您可以强制它使用横向

于 2012-11-21T13:54:36.833 回答
1

使用纵向模式录制的问题是您将始终获得 480X640。由于设备的方向,因此需要根据方向大小旋转视频。

我已经解决了这个问题,但它根本不是题外话。

- (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;
}
于 2013-03-25T22:11:08.187 回答