在 iOS 中使用 AVCapture 捕获视频时进行缩放

2023-12-25

我正在使用 AVCapture 捕获视频并保存它。但我需要提供缩放选项,例如捏合缩放或通过缩放按钮。此外,视频的保存方式应与显示的方式完全相同,我的意思是当放大时,应以缩放的方式保存。如有任何帮助,链接将不胜感激。我设置 AVCapture 会话的代码是:

- (void)setupAVCapture{
session = [[AVCaptureSession alloc] init];
session.automaticallyConfiguresApplicationAudioSession=YES;
[session beginConfiguration];
session.sessionPreset = AVCaptureSessionPresetMedium;
AVCaptureVideoPreviewLayer *captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
captureVideoPreviewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
captureVideoPreviewLayer.frame = self.view.bounds;

[self.view.layer addSublayer:captureVideoPreviewLayer];
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

NSError *error = nil;
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error];
if (!input) {
    // Handle the error appropriately.
    NSLog(@"ERROR: trying to open camera: %@", error);
}
[session addInput:input];

movieFileOutput = [[AVCaptureMovieFileOutput alloc] init];

[session addOutput:movieFileOutput];
[session commitConfiguration];
[session startRunning];

 }

我也遇到了同样的问题,我已经通过以下两个步骤解决了它:

  1. 在相机预览视图控制器中添加类似的 PinchGestureRecognizer 事件

    - (IBAction)handlePinchGesture:(UIPinchGestureRecognizer *)gestureRecognizer{
    
    if([gestureRecognizer isMemberOfClass:[UIPinchGestureRecognizer class]])
    {
    
            effectiveScale = beginGestureScale * ((UIPinchGestureRecognizer *)gestureRecognizer).scale;
            if (effectiveScale < 1.0)
                effectiveScale = 1.0;
            CGFloat maxScaleAndCropFactor = [[self.stillImageOutput connectionWithMediaType:AVMediaTypeVideo] videoMaxScaleAndCropFactor];
            if (effectiveScale > maxScaleAndCropFactor)
                effectiveScale = maxScaleAndCropFactor;
            [CATransaction begin];
            [CATransaction setAnimationDuration:.025];
            [self.previewView.layer setAffineTransform:CGAffineTransformMakeScale(effectiveScale, effectiveScale)];
            [CATransaction commit];
    
        if ([[self videoDevice] lockForConfiguration:nil]) {
            [[self videoDevice] setVideoZoomFactor:effectiveScale];
            [[self videoDevice] unlockForConfiguration];
        }}}}
    

** 请注意,保持视频设备缩放级别的关键方法是 [device setVideoZoomFactor:]

2-在录制按钮的IBAction中,添加此代码以捕获视频(录制),然后将录制的视频以特定名称保存在特定路径中

- (IBAction)recordButtonClicked:(id)sender {

dispatch_async([self sessionQueue], ^{
    if (![[self movieFileOutput] isRecording])
    {
        [self setLockInterfaceRotation:YES];

        if ([[UIDevice currentDevice] isMultitaskingSupported])
        {
            // Setup background task. This is needed because the captureOutput:didFinishRecordingToOutputFileAtURL: callback is not received until the app returns to the foreground unless you request background execution time. This also ensures that there will be time to write the file to the assets library when the app is backgrounded. To conclude this background execution, -endBackgroundTask is called in -recorder:recordingDidFinishToOutputFileURL:error: after the recorded file has been saved.
            [self setBackgroundRecordingID:[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil]];
        }

        // Update the orientation on the movie file output video connection before starting recording.
        // Start recording to a temporary file.
        NSString *outputFilePath = [NSTemporaryDirectory() stringByAppendingPathComponent:[@"movie" stringByAppendingPathExtension:@"mov"]];
        [[self movieFileOutput] startRecordingToOutputFileURL:[NSURL fileURLWithPath:outputFilePath] recordingDelegate:self];
    }
    else
    {

        [[self movieFileOutput] stopRecording];

    }
});
}

我希望对你有帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 iOS 中使用 AVCapture 捕获视频时进行缩放 的相关文章

  • 如何使用 C# 桌面应用程序以 MPEG 或 AVI 文件录制网络摄像头视频

    我正在开发一个桌面应用程序 它需要我连接到网络摄像头并以 MPEG AVI MP4 和 WMV 格式录制 保存 视频并刻录到 CD DVD 中 该应用程序采用 Win Forms 形式 我只是在寻找免费或开源解决方案或控件 我已经使用 Af
  • 是否有一个类可以获取应用程序中的默认图片查看器?

    我不想访问 iPhone 上的图像 我想显示我的应用程序中的图像 但就像您查看 iPhone 相册中的图片一样 使用所有捏合和缩放控件等 这可能吗 我认为可能 偶然 有像 AVMediaPlayer 类这样的类可以做到这一点 谢谢 汤姆 如
  • 是否可以“缩放”WPF RichTextBox 中的文本?

    我注意到 WinForms RichTextBox 有一个ZoomFactor我认为这正是我想要的属性 不幸的是 WPF 变体似乎完全缺少此属性 有什么方法可以实现相同的功能 增加 减少整个文档的可见文本大小而不实际更改底层 RTF Upd
  • 为 CocoaPods 插件设置 Xcode

    我正在尝试设置终端 Xcode 以便正确工作Xcode CocoaPods 插件 https github com kattrali cocoapods xcode plugin 当我从插件运行集成 cocoapods 选项时 我收到一条消
  • 使用Android Camera API,拍摄照片的方向始终未定义

    我使用相机API 拍摄的照片总是旋转90度 我想旋转它 所以首先我想知道图片的方向 这一点我被卡住了 我总是以两种方式得到未定义的方向 这是代码 Override public void onPictureTaken byte data C
  • 具有自定义视图的相机

    我的应用程序使用相机 我想在相机预览上添加叠加层 例如 我想在使用相机时使用相框 还想添加一个用于相机操作的自定义栏 请帮助我做同样的事情 您可能正在尝试使用 UIImagePickerController 但我知道这个可以解决你的问题 您
  • 在相机视图上叠加一个框架,然后保存并使用生成的照片(捕获的内容和叠加框架)

    我希望我的应用程序中有一个功能 让您为自己或其他有名望的人拍摄一张照片 例如 通缉 然后用户拍摄照片 叠加层和照片将合并为一张 生成的图像可在代码中使用 任何想法从哪里 如何开始 有什么教程之类的 Cheers 它可能会有点棘手 处理应用于
  • Camera中添加Camera的Zoom控件

    我正在制作一个相机应用程序 其中我使用 Surface View 作为相机和所有其他东西 我从以下链接中获取了指南 http www brighthub com mobile google android articles 43414 as
  • 如何在Android中没有Intent且没有任何视图窗口的情况下拍照

    大家好 我正在尝试弄清楚如何通过按下按钮来拍照 而不显示任何预览 我的想法是 我想要拍摄并保存照片 但之前或之后没有照片的视觉预览 到目前为止 我能够获取拍照并将其保存到磁盘的代码 没有任何问题 但如果没有表面视图或预览 我似乎无法做到这一
  • 检测所有现代浏览器上的缩放级别

    我想知道是否有一种方法可以检测所有现代浏览器都支持的页面缩放级别 我已经尝试过这个 如何在所有现代浏览器中检测页面缩放级别 https stackoverflow com questions 1713771 how to detect pa
  • 随机 UISearchDisplayController 崩溃 (iOS 7)

    我一直在尝试修复大约 50 的用户遇到的崩溃问题 崩溃是在我实现 UISearchDisplayController 即向表视图中添加搜索栏 后开始的 但我无法重现崩溃 一次也没有 根据我的用户的说法 当他们打开具有 UISearchDis
  • 从其超级视图 iOS 7 问题中获取 UITableViewCell

    我的单元格中几乎没有具有手势识别器实例的 UI 对象 我需要获取按压对象所在的单元格 我有下面的方法来获取它 但它只在 iOS 7 之前有效 UITableViewCell cell UITableViewCell sender view
  • GameKit GKMatchMaker attendHandler 在 iOS7 中已弃用,替代品是什么?

    GKMatchmaker sharedMatchmaker inviteHandler 在 iOS 7 中已被弃用 但 GameKit 指南仍然建议以这种方式进行设置 有谁知道我们应该使用什么来进行 iOS 7 实时游戏邀请 有几个侦听器类
  • iOS 中的胖二进制文件

    是否有可能为 iOS 构建 32 位和 64 位 胖 二进制文件 我的理解是 这即将到来 但我在 Xcode 的最新更新中看不到明显的方法来做到这一点 我希望我的应用程序在 5S 上以 64 位模式运行 在 5 及以下版本上以 32 位模式
  • UIStatusBarStyle PreferredStatusBarStyle 在 iOS 7 上不起作用

    在我使用 Xcode 5 for iOS 7 构建的 iPhone 应用程序中 我设置了UIViewControllerBasedStatusBarAppearance YES in info plist 并在我的ViewControlle
  • iOS 7 故事板本地化与属性标签

    我正在使用 ibtool 从我的所有语言的基本情节提要中生成字符串文件 出于某种原因 ibtool 没有提取UILabel风格为 attributed 我没有这些标签的键 值对 有人知道为什么吗 我最终得出的结论是 使用 ibtool 无法
  • 修改曝光持续时间并返回 AVCaptureExposureModeContinouslyAutoExposure 后出现奇怪的行为

    我正在开发一个应用程序 该应用程序通过 iOS 8 中引入的新 API 公开相机的手动控制 并且我正在使用这个示例应用程序 https developer apple com library ios samplecode AVCamManu
  • Camera.open()返回NULL Android开发

    我正在按照构建相机应用程序的教程进行操作http developer android com tools device html http developer android com tools device html我对 Camera o
  • React Native:相机流的多个预览

    我有一个要在 Android 和 iOS 中开发的 React Native 应用程序 我想在其中获取相机流 进行一些处理 然后多次渲染它 想象一下像 Instagram 这样的应用程序 您可以在其中实时向相机添加滤镜 并在实时预览中显示应
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • 如何在 jQuery Ajax 调用后管理重定向请求

    我在用着 post 使用 Ajax 调用 servlet 然后使用生成的 HTML 片段替换div用户当前页面中的元素 但是 如果会话超时 服务器会发送重定向指令以将用户发送到登录页面 在这种情况下 jQuery 正在取代div元素与登录页
  • 如何将字符串格式化为 .Net 中的固定宽度字段?

    我正在尝试将任意长度的字符串格式化为固定宽度字段以进行显示 我们以宽度为20为例 将要格式化的字符串称为s 我将格式化字符串添加到名为 b 的 StringBuilder 中 Dim b As New System Text StringB
  • 如何在数学表达式中添加星号符号?

    我正在尝试使用 R 值和重要性编码来注释绘图 但我无法通过 作为符号而不是并置运算符 我试过了 plot math 这是我尝试过的 plot 1 10 1 10 text 6 4 expression R 2 8 text 6 4 expr
  • Java 中的国际象棋位板实现

    我正在寻找创建一个基本的国际象棋 或者如果失败 跳棋 跳棋 引擎 研究完该主题后 我相当有信心我想要使用一系列位板 我基本理解这个概念 但在用 Java 表示它们时遇到困难 我尝试使用 long 将棋盘上的白色棋子表示为 1 将其他所有棋子
  • Android - 将字符串转换为字节[]

    我想将 icon 字符串转换为字节数组 然后将其转换为位图 问题是模拟器中的图像未显示 我想我做得不对 但我知道为什么 我将非常感谢你的帮助 提前致谢 这是我的 JSON 数据 project abbreviation abd custom
  • 使用进位标志进行多字加法

    GCC 有 128 位整数 使用这些我可以让编译器使用mul or imul仅一个操作数 指令 例如 uint64 t x y unsigned int128 z unsigned int128 x y 产生mul 我已经使用它创建了一个
  • 使用maven和jenkins部署到weblogic

    我们在项目中使用 Jenkins 在开发环境中进行构建和部署 我已经在 jenkins 中使用 maven 成功创建了一个 war 文件 现在我必须创建另一个作业来将该 war 文件部署到 weblogic 服务器中 但是 我不知道在詹金斯
  • 当 src 不是有效站点时,Safari 不会调用 iframe onload

    对于以下 iframe Safari 永远不会调用 onload 函数 并且不会在 iframe 中显示任何内容 我测试过的所有其他浏览器都会调用 onload 并显示默认错误网页 为什么会发生这种情况 如果这个问题没有解决方案 那么我需要
  • 如何在winform中打上绿色勾号或红色叉号?

    有没有一种方法可以在 Windows 窗体中的标签旁边添加绿色勾号或红色十字 基本上我需要显示配置是否成功 我正在使用c Thanks 很容易做到 您可以在文本标签旁边添加两个图像 甚至是我在本示例中使用的标签 然后手动切换Visible财
  • 了解 CompletableFuture::runAsync

    我刚刚读过文档 https docs oracle com javase 8 docs api java util concurrent CompletableFuture html runAsync java lang Runnable
  • 交替行的 jQuery 表格样式与 CSS 表格样式

    对于服务器上生成的奇数 偶数行 使用带有类的 CSS 更快 更好 还是使用 jQuery 设置条纹样式更快 更好document Ready 我想开始使用 jQuery 来使我的标记不那么混乱 但我不确定性能 特别是对于较大 最多 200
  • 在 JS 中计算直方图的相似值的最佳方法是什么?

    我正在尝试创建随机生成的数据的直方图 因此目前我正在执行以下操作 假设创建了以下数组 returns 0 0024 0 0231 0 014 0 0005 0 008 我使用以下方法遍历数组 returnsRounded x Math ro
  • 这种广度优先搜索可以变得更快吗?

    我有一个数据集 它是一个大型未加权循环图 循环发生在大约 5 6 条路径的循环中 它由大约 8000 个节点组成 每个节点有 1 6 个 通常大约 4 5 个 连接 我正在进行单对最短路径计算 并实现了以下代码来进行广度优先搜索 from
  • 从资源设置应用程序图标时应用程序大小会增加

    我有一个大小为 16kb 的应用程序 通过 项目属性 菜单添加图标资源后 应用程序的大小如预期增加到 299kb 现在 在 属性 应用程序 下 当我将图标文件设置为 Resource IconName ico 时 文件大小再次增加到 581
  • 带有临时链接的提交按钮

    好的 我不知道我在做什么 我要回去帮助人们找工作 我在 Fiddle 中运行了所有内容 并将其迁移到两个不同的编辑器 一切都显示正常 但没有任何反应 没有警报 没有单击提交 我在我的笔记本电脑上尝试了一下 显示了两个页面 一个页面上有 pr
  • D3 - 重置 SVG 对象动画

    我正在用交互式标记制作一个图表 每个标记都沿着侧轴开始 单击时会移动到沿线的位置并增大尺寸 我让图标移动和增长 但在重置图表时遇到问题 我可以通过第二次单击使图标返回到其原始位置 但是第二次单击后图标将不再响应单击 我怀疑这很简单 但我没有
  • 防止 git checkout 覆盖文件

    另一位开发人员将他的 rvmrc 检查到了 git 存储库中 我已经删除了它并将其添加到 gitignore 但每次需要返回时它都会覆盖我的 rvmrc 我使用的是 OSX 所以我发现我可以使用 OSX 文件锁定机制 获取信息中的 锁定 复
  • 如何在数据库中保存标签(关键字)?

    我想使用 php 和 mysql 创建一个简单的标签系统 以便用户可以通过表单添加一些标签 我的问题是我应该将标签保存为单个数据库列中的数组吗 例如 tag1 tag2 tag3 或者我应该在数据库表中有单独的列 我应该在每列中保存每个标签
  • PowerShell 按嵌套字段选择和分组

    我有以下对象结构 resources Array resource PSCustomObject 名称 字符串 Tags PSCustomObject 所有者 字符串 more 所以我可以做 resources 0 Tags Owner并获
  • 在 iOS 中使用 AVCapture 捕获视频时进行缩放

    我正在使用 AVCapture 捕获视频并保存它 但我需要提供缩放选项 例如捏合缩放或通过缩放按钮 此外 视频的保存方式应与显示的方式完全相同 我的意思是当放大时 应以缩放的方式保存 如有任何帮助 链接将不胜感激 我设置 AVCapture