可以同时使用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吗? 的相关文章

  • Facebook iOS SDK:登录 Facebook 时无需总是询问应用程序的权限

    我在我的应用程序中使用 Facebook iOS SDK 我有两个类似的问题 有没有办法知道当前是否有用户登录 我现在使用的是在成功登录时存储访问令牌和到期日期 并在应用程序启动时加载它们 我的问题是 如果会话无效 我可以为用户提供登录选项
  • 如何连续关闭 2 个模态视图控制器?

    我有 2 个以模态方式呈现的视图控制器 A presents B which presents C 当我解雇C时 我也想解雇B 但我不知道该怎么做 解雇C self dismissModalViewControllerAnimated YE
  • pytesseract 无法从图像中识别复杂的数学公式

    我在用pytesseractpython 中的模块 pytesseract从图像中识别文本 但它不适用于包含复杂数学公式 例如根 推导 积分数学问题或方程 的图像 代码2 py Import modules from PIL import
  • 使用 WebRTC 构建 iOS 本机应用程序

    我找了4天了 还是没找到 我构建了所有库并将其集成到我的自定义项目中 但我不知道应该采取哪些步骤才能使其正常工作 我在代码示例 解释中发现的唯一内容是 tech appear in 2015 05 25 Getting started wi
  • 电话 GAP 会话存储

    我使用手机 GAP 开发 iPhone 应用程序 在我的应用程序中 我们使用外部数据库 用户使用 Web 服务登录 登录后我需要存储用户 ID 我如何使用手机 GAP 存储用户 ID 我可以使用手机 GAP会话存储可以吗 哪位知道的请帮忙
  • 如何在 iOS (safari) 中获取 mailto 链接以打开 Outlook 应用程序?

    我注意到 在使用 Outlook 应用程序且未配置本机邮件应用程序的 iPhone 用户上 当他们单击 mailto 链接时 系统会提示他们在 iOS 中创建新的电子邮件帐户 而不是打开 Outlook 应用程序 是否可以将 Outlook
  • Three20中的TTSpeechBubbleShape仅绘制“语音”三角形顶部和底部

    因此 我将 Three20 库用于 iPhone 应用程序 并希望将 TTSpeechBubbleShape 样式用于视图 但三角形似乎不想画在左边或右边 我在源代码中看到它有很多几何图形 并且想知道是否有人解决了这个问题或知道如何解决它
  • 为什么我的 UIPickerView 崩溃了?

    当我使用 UIPickerView 加载视图时出现以下错误 由于未捕获的异常 NSInvalidArgumentException 而终止应用程序 原因 NSCFNumber isEqualToString 无法识别的选择器发送到实例 0x
  • 有没有办法在iOS模拟器上使用苹果的Touch ID(指纹扫描仪)?

    我正在开发一个需要 Touch ID 身份验证的应用程序 那么有什么方法可以在模拟器中使用 Touch ID 指纹扫描仪 另外 请分享一些使用 LocalAuthentication 框架的示例代码 XCODE 7 beta支持在iPhon
  • xcode 6 资产目录 iPhone 6

    这个问题还没有得到解答 使用资产目录时 特定于设备 非通用 选项为 1x 2x r 2x 3x 1x 是不必要的 因为它不是视网膜 2x 是 ip4 的最佳选择 分辨率为 640x960 r 2x 适合 ip5 分辨率为 640x1136
  • 找到 4 个特定的角像素并将它们与扭曲透视一起使用

    我正在使用 OpenCV 我想知道如何构建一个简单版本的透视变换程序 我有一张平行四边形的图像 它的每个角都由具有特定颜色的像素组成 该像素在图像中没有其他位置 我想遍历所有像素并找到这 4 个像素 然后我想将它们用作新图像中的角点 以扭曲
  • 如何知道两个 NSDate 是否在同一天

    你知道如何知道两个NSDate是同一天 我想考虑到区域设置 使用a可能很容易timeIntervalSinceDate 但星期一 23H58 和星期二 00H01 不在同一天 处理NSDate和计算区域设置不是很容易 NSCalendar
  • 如何在 iOS 上更改设备音量 - 而不是音乐音量

    我想更改 iOS iPhone 上的设备音量 我知道我可以使用以下几行更改音乐库的音量 implement at first MediaPlayer framework MPMusicPlayerController musicPlayer
  • 通过选择器使用自定义比较器的 NSSortDescriptor 问题

    我想将排序描述符与自定义比较器一起使用 NSSortDescriptor sortDescriptor NSSortDescriptor alloc initWithKey object dateTime ascending YES sel
  • 双击并滑动/拖动手指以放大/缩小

    如果有人使用过 iOS 版谷歌地图应用程序 那么它有一个很棒的功能 可以用一根手指放大 缩小 双击 uiscrollview 然后立即向上或向下滑动手指以放大 缩小 有谁知道这是如何实现的 谷歌发布了任何片段吗 我将此功能添加到我的 UIS
  • 如何在 iOS 应用程序中检测所有可用的 Wifi 网络并连接到其中之一

    在我的 iOS 应用程序中 我想检测所有可用的 wifi 网络 然后从列表中选择一个网络并连接到它 目标是不打开应用程序内置的设置来连接 Wi Fi 而是在我的应用程序中完成这一切 首先 这可能吗 如果可能的话 请指出要使用哪些框架和方法
  • 带有图像的 UITableView 滚动非常慢[重复]

    这个问题在这里已经有答案了 可能的重复 带图像的表格视图 加载和滚动缓慢 https stackoverflow com questions 4071497 table view with images slow load and scro
  • admob ios7错误音频框架

    我正在将 admob SDK 当前的 集成到我的上一个应用程序 IOS7 Xcode5 中 并且出现了一个新错误 在新项目上也是如此 我想我错过了一些东西 但我多次重新启动该过程 但错误仍然存 在 Undefined symbols for
  • 在骨架图像中查找线 OpenCV python

    我有以下图片 我想找到一些线来进行一些计算 平均长度等 我尝试使用HoughLinesP 但它找不到线 我能怎么做 这是我的代码 sk skeleton mask rows cols sk shape imgOut np zeros row
  • iOS 开发:如何强制 UIWebView 加载 Facebook 的非移动版本?

    我正在深入研究 iOS 开发 当我尝试在 UIWebView 中加载特定的 Facebook 粉丝页面时 它会加载该网站的移动版本 该版本仅加载粉丝页面的墙 而不是我需要加载的特定选项卡 在我的应用程序的 iPad 版本中 UIWebVie

随机推荐

  • 如何过滤 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 我搜索了这个问