1

我正在尝试实现一个将嵌入到另一个视图控制器中的录像机视图控制器。

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

tl;dr - 是否可以在不占用整个屏幕的情况下录制视频?一个人将如何实施呢?

4

2 回答 2

1

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

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

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

于 2013-07-26T18:37:16.203 回答
1

如果您需要更多控制权,可以使用 AVFoundation 来查看苹果文档的链接。

首先使用 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];
于 2013-07-26T23:31:57.870 回答