可以同时使用AVCaptureVideoDataOutput和AVCaptureMovieFileOutput吗?

2023-11-21

我想用我的代码同时录制视频和抓取帧。

我在用AVCaptureVideoDataOutput用于抓取框架和AVCaptureMovieFileOutput用于视频录制。但在同时工作但单独工作时无法工作并收到错误代码-12780。

我搜索了这个问题但没有得到答案。有没有人有相同经历或者解释一下? 确实困扰了我一段时间。

thanks.


我无法回答提出的具体问题,但我已经使用以下方法成功地同时录制视频和抓取帧:

  • AVCaptureSession and AVCaptureVideoDataOutput将帧路由到我自己的代码中
  • AVAssetWriter, AVAssetWriterInput and AVAssetWriterInputPixelBufferAdaptor将帧写入 H.264 编码的电影文件

那是在没有调查音频的情况下。我最终得到CMSampleBuffers从捕获会话中取出它们,然后将它们推入像素缓冲区适配器中。

EDIT:所以我的代码看起来或多或少像,你没有浏览过任何问题并忽略范围问题:

/* to ensure I'm given incoming CMSampleBuffers */
AVCaptureSession *captureSession = alloc and init, set your preferred preset/etc;
AVCaptureDevice *captureDevice = default for video, probably;

AVCaptureDeviceInput *deviceInput = input with device as above, 
                                    and attach it to the session;

AVCaptureVideoDataOutput *output = output for 32BGRA pixel format, with me as the
                                   delegate and a suitable dispatch queue affixed.

/* to prepare for output; I'll output 640x480 in H.264, via an asset writer */
NSDictionary *outputSettings =
    [NSDictionary dictionaryWithObjectsAndKeys:

            [NSNumber numberWithInt:640], AVVideoWidthKey,
            [NSNumber numberWithInt:480], AVVideoHeightKey,
            AVVideoCodecH264, AVVideoCodecKey,

            nil];

AVAssetWriterInput *assetWriterInput = [AVAssetWriterInput 
                                   assetWriterInputWithMediaType:AVMediaTypeVideo
                                                  outputSettings:outputSettings];

/* I'm going to push pixel buffers to it, so will need a 
   AVAssetWriterPixelBufferAdaptor, to expect the same 32BGRA input as I've
   asked the AVCaptureVideDataOutput to supply */
AVAssetWriterInputPixelBufferAdaptor *pixelBufferAdaptor =
           [[AVAssetWriterInputPixelBufferAdaptor alloc] 
                initWithAssetWriterInput:assetWriterInput 
                sourcePixelBufferAttributes:
                     [NSDictionary dictionaryWithObjectsAndKeys:
                          [NSNumber numberWithInt:kCVPixelFormatType_32BGRA], 
                           kCVPixelBufferPixelFormatTypeKey,
                     nil]];

/* that's going to go somewhere, I imagine you've got the URL for that sorted,
   so create a suitable asset writer; we'll put our H.264 within the normal
   MPEG4 container */
AVAssetWriter *assetWriter = [[AVAssetWriter alloc]
                                initWithURL:URLFromSomwhere
                                fileType:AVFileTypeMPEG4
                                error:you need to check error conditions,
                                      this example is too lazy];
[assetWriter addInput:assetWriterInput];

/* we need to warn the input to expect real time data incoming, so that it tries
   to avoid being unavailable at inopportune moments */
assetWriterInput.expectsMediaDataInRealTime = YES;

... eventually ...

[assetWriter startWriting];
[assetWriter startSessionAtSourceTime:kCMTimeZero];
[captureSession startRunning];

... elsewhere ...

- (void)        captureOutput:(AVCaptureOutput *)captureOutput 
    didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer 
           fromConnection:(AVCaptureConnection *)connection
{
    CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);

    // a very dense way to keep track of the time at which this frame
    // occurs relative to the output stream, but it's just an example!
    static int64_t frameNumber = 0;
    if(assetWriterInput.readyForMoreMediaData)
        [pixelBufferAdaptor appendPixelBuffer:imageBuffer
                         withPresentationTime:CMTimeMake(frameNumber, 25)];
    frameNumber++;
}

... and, to stop, ensuring the output file is finished properly ...

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

可以同时使用AVCaptureVideoDataOutput和AVCaptureMovieFileOutput吗? 的相关文章

  • rightBarButtonItem 信息按钮,右侧没有空格

    我有一个UIViewController设置为在其右侧显示一个信息按钮UINavigationItem像这样 UIButton infoButton UIButton buttonWithType UIButtonTypeInfoLight
  • 如何通过 BufferedImage 将巨大的图像加载到 Java 中?

    我想将大图像 18000 x 18000 加载到我的应用程序中 如果我使用BufferedImage与类型int rgb 我需要大约 1235mb 的堆内存来加载 这是一个非常大的内存量 最终用户可能拥有更少的内存 1GB 或更少 在我的开
  • 从 numpy 数组中删除连续的 RGB 值

    我最初根据灰度图像的初始数组创建了一个子数组 从 numpy 数组中删除连续数字 https stackoverflow com questions 50743769 deleting consecutive numbers from a
  • opencv - 在图像中绘制轮廓

    我正在尝试在图像周围绘制轮廓 我可以看到找到了轮廓 但无法绘制轮廓 轮廓的颜色似乎是两种 黑色和白色 颜色中的一种 import cv2 import numpy as np import matplotlib pyplot as plt
  • 直接在 XCode 中编译 Arm Assembly

    将arm汇编代码编译成xcode的最佳方法是什么 我有生成的那些程序集文件 有没有办法可以将 s 文件直接包含到我拥有的 C 代码中 或者我需要先运行一个预处理器 它将生成 o 文件 我可以将其与我的文件链接 如果是这样的话 在 XCode
  • 如何向标准 UIButton 添加徽章? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否可以在标准中添加看起来标准的徽章UIButton 如果不支持半原生 那么实现此目的最简单的方法是什么 示例图片 这是 Sascha
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • 图像作为电子邮件附件

    我想构建一个应用程序 我可以在电子邮件中附加图像 打开图像并将其设置为我的壁纸 我想让它跨平台 所以你能告诉我是否可以使用phonegap 或者我是否必须为iphone和android构建一个本机应用程序 您好 如果您只想通过电子邮件附加图
  • 隐藏选项卡栏项目并对齐其他选项卡项目

    在我的应用程序中 我有 4 个选项卡栏项目 我正在 XIB 文件中添加这 4 个选项卡栏项目 最初我必须显示 3 个选项卡栏项目 同步后我必须在我的应用程序中显示第 4 个选项卡栏项目 因此 为此 我使用以下代码隐藏第四个选项卡栏项目 se
  • 我可以通过 SDK 访问 iPhone 上的可视语音邮件文件吗?

    我想访问存储在 iPhone 上的可视语音邮件文件 有没有办法通过SDK访问这些文件 有人有处理这些文件的经验吗 我假设它们是从网络下载并存储在 iPhone 本地的文件 不 iPhone 上的每个应用程序都是独立的 因此您无法访问任何其他
  • iOS 应用程序测试。应用程序安装失败。找不到代码签名[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我尝试在多个 iOS 设备上安装我的应用程序 但这件事不让我这么做 我想知道 问题是什么以及我应该如何解决它 就我而言
  • 如何根据图像中的对象大小(以像素为单位)来测量现实世界中的对象大小(例如英寸、厘米等)?

    我计算了物体的大小pixel来自包含对象的图像 我想测量现实世界中物体的大小 有没有办法找出乘数来测量实际尺寸 我目前正在使用python以便实施 通常 您将使用相机获取图像 该相机通过镜头将 3 维场景投影到 2 维传感器上 垂直 高度
  • PhoneGap 上的 SQLite 数据库

    我想使用 PhoneGap 为 iPhone 实现 SQLite 数据库 我了解 iPhone 本机应用程序中 SQLite 数据库的一些基础知识 但是如何在 PhoneGap 中实现 SQLite 数据库呢 我们最终使用了PhoneGap
  • Android 上的硬币识别

    我目前正在开发一个 Android 应用程序 它能够拍摄硬币的现有图像 或者使用内置摄像头扫描单个硬币 非常像 Google Goggles 我正在使用 Android 版 OpenCV 我的问题如下 什么方法最适合使用 OpenCV 在
  • 光学标记阅读器的开源库[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想要一个用于光学标记读取 OMR 的开源库 有这样的库吗 我想在我的 java 应用程序中使用这个库 zxing 可能对你有用 http
  • 我的 iPhone 6 获取 iPhone 5 媒体查询

    我不明白这里发生了什么事 我在 CSS 媒体查询中专门针对 iphone 5 media only screen and min device width 320px and max device width 568px some div
  • 获取动画滚动视图的当前位置

    我遇到了以下问题 我对 uiscrollview 进行了子类化 其中 contentOffset 通过以下代码进行动画处理 UIView animateWithDuration 1 0 delay 1 0 options options a
  • 在 Pickerview 中创建复选标记[重复]

    这个问题在这里已经有答案了 我正在开发一个应用程序 我想在用户选定的行上创建复选标记 For Ex 在UITableView中有 UITableViewCellAccessoryCheckmark 但我想知道是否有类似的东西可用于 UIPi
  • Textview 中心文本对齐 IOS 7

    void observeValueForKeyPath NSString keyPath ofObject id object change NSDictionary change context void context NSLog He
  • 为 UISlider 设置刻度线

    有没有为 UISlider 设置刻度线的方法 NSSlider 有一个叫做 void setNumberOfTickMarks NSInteger numberOfTickMarks 但 UISlider 似乎没有 我想要做的是将滑块值设置

随机推荐

  • 如何过滤 std::integer_sequence

    如果理论上我有一个整数序列 例如 std integer sequence
  • 冲突的红宝石

    我需要在我的项目中使用两个 gem 它们都声明 PDF 命名空间 pdf reader 和 htmldoc 有什么办法可以让他们一起愉快地玩耍吗 我能想到的唯一方法是重写我自己的 htmldoc 版本 为其提供不同的命名空间 基本上 你无能
  • 使用 javascript 按 id 对列表进行排序 [重复]

    这个问题在这里已经有答案了 我正在 iOS 上制作一个phonegap应用程序 需要按时间对列表进行排序 我尝试将时间添加到每个 li 项目的 id 中 然后根据 id 进行排序 ul li blub li li blaaah li li
  • Cronjob 还是 MySQL 事件?

    我必须每小时更新一次 MySQL 数据库 我想知道使用 cronjob 与 MySQL 事件相比有何优点 缺点 例如 哪个更快 哪个更安全 谢谢 我总是会进行 cron 工作 因为 这就是系统管理员所期望的 这一点不可低估 crontab
  • 如何从java中的静态初始化块返回

    我想从静态块返回 看起来 return 和 break 语句不起作用 有没有什么替代方案 我知道不好的解决方法可能是创建一个标志并检查该标志是否继续 我知道初始化块并不用于进行计算 而只是用于类加载期间的基本初始化 将代码委托给私有静态方法
  • 如何降级我的 Rails 版本?

    我使用的是 Rails 版本 4 2 0 如何降级到3 2 19版本 我尝试了以下方法 我打开命令提示符 I typed gem uninstall rails Rails 版本有一些选项 然后我选择了当前版本并按 Enter 然后输入ge
  • 使用 Google 电子表格访问 BigQuery

    我在互联网上查找如何在谷歌电子表格中导入bigquery数据 我找到了这个appscript示例 但它不起作用API不在同一级别 并且我没有找到如何在appscript中使用API 2或API beta1进行查询 function runQ
  • 如何更改使用 --bare 克隆的 git 存储库以匹配使用 --mirror 克隆的 git 存储库?

    这个问题与git 如何从其他存储库镜像文件 or 如何更新我的裸存储库 由于存储库克隆为 mirror是一个裸存储库 我可以使用以下命令克隆一个存储库吗 bare就像一个克隆人 mirror 是不是只要修改config文件就可以了 如果没有
  • Scala:将函数定义为正确的类型

    我一直在研究 Scala 代码 并遇到了一个我不明白的编译器错误 该代码生成一个由整数对组成的向量 然后尝试对其进行过滤 val L for x lt 1 to 5 yield x x x val f x Int y Int gt x gt
  • 在Java中通过复制构造函数复制对象而不影响原始对象

    我正在尝试复制一个对象 然后对其进行修改 而不更改原始对象 I found 这个解决方案似乎最好的方法是复制构造函数 根据我的理解 这会给我一个深层复制 与原始对象完全独立的对象 所以我尝试了 但是 我注意到 当执行以下代码时 它会影响从中
  • 带有计数和总和的 SQL Server 数据透视表

    我正在尝试让 SQL Server 数据透视表正常工作 它允许我对许多列 总共 6 列 进行计数然后求和 数据透视表的目的是汇总任意数量生产站点的在线调查问卷结果 有 6 个问题 可以有 3 个结果值 目标 行动和失败 我想做的是计算每个问
  • PyInstaller 执行 Plotly Dash .exec 文件时出错

    我正在尝试创建一个 exe 文件来运行使用 Plotly Dash 创建的 python 仪表板 当我使用 PyInstaller 创建文件并尝试运行它时 我收到以下错误 Traceback most recent call last Fi
  • Ember 简单身份验证:刷新时会话丢失

    我在用着Ember 简单认证设计Ember cli 应用程序中的 v 0 6 4 我可以正常登录 但是当我刷新页面时 会话丢失 在 Firefox 和 Chrome 中测试 登录后 立即检查 localStorage 显示会话 刷新后 lo
  • 无法删除和更新访问链接表上的记录

    我有一个名为 road mdb 的访问数据库 在 road mdb 中 我有一个链接的 SQL 表和表名是学生 我可以使用 MS Access 中的查询设计插入记录 但我无法更新或删除 当运行下面的删除查询时 错误是 无法从指定表中删除 d
  • 如何使用 Selenium 2 Webdriver 打开指定的配置文件 Firefox?

    当我使用默认配置文件启动时没有问题 但是当我从自定义配置文件开始时 Firefox 启动但保持 阻止 状态 该进程仍然处于活动状态 消耗 31MB RAM 但从未启动 仅当我杀死该进程时才启动 然后启动并与硒一起正常工作 我使用 Windo
  • 如何逃避反勾号

    MySQL 要求对隐藏保留字的表进行反勾 我有一个表角色 它是保留字 但我已经将查询放在反引号中 这样我就可以将其写在多行上 这是一个玩具查询 大的查询不适合一行 如何逃避后面的蜱虫 这是我的代码 dbmap db InitDb var r
  • 无法访问关闭的流

    我正在尝试使用缓存应用程序块缓存一些图像 这些图像需要很长时间才能渲染 BitmapSource bitmapSource some bitmap source already created cache Caching Applicati
  • Pandas DataFrame 通过迭代进行切片

    我想对具有多个切片索引的切片 DataFrame 执行一些操作 模式是 df iloc 0 24 df iloc 24 48 df iloc 48 72 等 按照步骤 24 进行操作 我如何迭代它而不需要每次都手动设置它 更像 df ilo
  • HTML5 自定义数据属性在 IE 6 中“有效”吗?

    自定义数据属性 http dev w3 org html5 spec Overview html embedding custom non visible data 当我说 工作 时 我的意思是 如果我有这样的 HTML div 将执行以下
  • 可以同时使用AVCaptureVideoDataOutput和AVCaptureMovieFileOutput吗?

    我想用我的代码同时录制视频和抓取帧 我在用AVCaptureVideoDataOutput用于抓取框架和AVCaptureMovieFileOutput用于视频录制 但在同时工作但单独工作时无法工作并收到错误代码 12780 我搜索了这个问