我正在使用avfoundation
录制视频,并使用captureSession
设置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;
}
答案 0 :(得分:1)
您是否垂直握住手机(纵向)?使用加速度计检测到的设备方向拍摄视频。你可以force it to use landscape orientation。
答案 1 :(得分: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;
}