如何录制视频而不占用整个屏幕

时间:2013-07-26 18:17:45

标签: iphone ios video

我正在尝试实现一个视频录制器视图控制器,它将嵌入另一个视图控制器内部。

我实现了一个MPMoviePlayedViewController,但这占用了整个屏幕而不是我想要的。我按照本教程,但没有得到我想要的结果 - http://www.appcoda.com/video-recording-playback-ios-programming/

tl; dr - 是否可以在不占据整个屏幕的情况下录制视频?如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

尝试使用UIContainerView。它允许一个UIViewController及其视图显示在所需大小的容器中。类似于UITabBarController,它在屏幕的指定部分显示其子视图控制器,而不是整个屏幕。

有关示例和文档,请查看Apple(希望是安全的)开发人员站点。

http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html

答案 1 :(得分:1)

如果需要更多控制权,可以使用AVFoundation,请参阅Apple文档中的link

首先使用AVCaptureDevice,AVCaptureInput和AVCaptureVideoPreviewLayer设置AVCaptureSession。 其次,创建要在其中显示输出的视图,并将其添加到视图控制器

AVCaptureSession *session = [[AVCaptureSession alloc] init];
session.sessionPreset = AVCaptureSessionPresetHigh;
AVCaptureDevice *videoDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
AVCaptureDeviceInput *videoInput= [AVCaptureDeviceInput deviceInputWithDevice:videoDevice error:nil];
[session addInput:videoInput];

AVCaptureVideoPreviewLayer *previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:session];
UIView *videoDisplay = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
previewLayer.frame = videoDisplay.bounds;
[videoDisplay.layer addSublayer:previewLayer];
[session startRunning];