CIImage 返回 CMSampleBuffer

2024-02-12

我使用录制视频(.mp4 文件)AVAssetWriter with CMSampleBuffer数据(来自视频、音频输入)。

录制时我想处理帧,我正在转换CMSampleBuffer to CIImage并对其进行处理。

但如何更新CMSampleBuffer用我新处理的图像缓冲区CIImage?

func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
    if output == videoOutput {
       let imageBuffer: CVPixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)!
       let ciimage: CIImage = CIImage(cvPixelBuffer: imageBuffer)
       ... // my code to process CIImage (for example add augmented reality)
       // but how to convert it back to CMSampleBuffer?
       // because AVAssetWriterInput to encode video/audio in file needs CMSampleBuffer
       ...
    } 
    ...
}

您需要使用 CIContext 将 CIImage 渲染到 CVPixelBuffer 中render(_:to:bounds:colorSpace:) https://developer.apple.com/documentation/coreimage/cicontext/1437835-render方法。

然后您可以使用例如从 CVPixelBuffer 创建 CMSampleBufferCMSampleBufferCreateReadyWithImageBuffer(_:_:_:_:_:) https://developer.apple.com/documentation/coremedia/1489745-cmsamplebuffercreatereadywithima

出于效率原因,您可能需要使用 CVPixelBuffer 池,Apple 的 AVCamPhotoFilter 示例代码中显示了一个示例。特别是,请参阅RosyCIRenderer 类 https://developer.apple.com/library/content/samplecode/AVCamPhotoFilter/Listings/AVCamPhotoFilter_RosyCIRenderer_swift.html.

另请参阅这个答案,它可能对您有帮助将 CIFilter 应用到视频文件并保存 https://stackoverflow.com/questions/39114863/applying-a-cifilter-to-a-video-file-and-saving-it

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

CIImage 返回 CMSampleBuffer 的相关文章

  • 未捕获的 Kotlin 异常:kotlin.native.In CorrectDereferenceException:非法尝试访问非共享

    我尝试使用 Kotlin MPP Multiplatform 开发 Android 和 iOS 之间的共享库 但我面临着 iOS 中线程的问题 对于我在 iOS 中的应用程序 我在主线程中建立了对象 但它可能调用其他线程中的函数并抛出此异常
  • 在 iOS 上使用 HEVC 编码器输出视频尺寸巨大

    我有一个项目 目前使用 H 264 编码器在 iOS 上录制视频 我想尝试在 iOS 11 中使用新的 HEVC 编码器来减小文件大小 但发现使用 HEVC 编码器会导致文件大小急剧膨胀 GitHub 上的一个项目显示了该问题 它使用 H
  • 如何在 NSDate 变量中仅设置时间?

    我有 NSDate 变量 只想更改时间 不应更改日期 是否可以 例如 用户在 DatePicker 日期中选择日期间隔 如果是开始日期 我想将时间设置为 00 00 00 如果是结束日期 我将时间设置为 23 59 59 感谢你的帮助 问候
  • 当自定义子视图处理触摸时防止 UITableView 滚动

    在我的 iOS 应用程序中 有一个 UITableView 其中一个单元格中包含一个自定义子视图 该单元格是一个交互式视图 它处理触摸事件 touchesBegan touchesEnded touchesMoved 以更新自身 问题是 当
  • 在SwiftUI中,如何高性能地绘制阴影?

    我用 shadow color radius x y 在我的应用程序中绘制阴影 这是我所知道的在 SwiftUI 中绘制应用程序的唯一方法 我用 sheet isPresented content 方法弹出一个视图 其中包含很多阴影 当我调
  • 以编程方式向 UIButton 标签添加阴影

    我试图向按钮标签添加 1px 黑色阴影 但没有成功 我试过这个 self setTitleShadowOffset CGSizeMake 0 1 但我得到 请求非结构或联合中的成员 setTitleShadowOffset 任何建议都会很棒
  • 检查系统时间是自动还是用户设置

    我需要在当前的项目中设置用户证明时间 我围绕这个问题发现了很多不同的问题 但似乎没有一个问题有我正在寻找的答案 这些是我到目前为止看过的问题 XCODE 如何从设备获取 验证准确的时间戳 https stackoverflow com qu
  • 有没有办法阻止 iOS 上的 Safari 在关闭时清除网站的 cookie?

    我的移动网络应用程序的一位用户抱怨说 每次他关闭手机屏幕后使用该应用程序时 他都必须重新登录该应用程序 发生的情况是 当屏幕关闭时 或者当您通过双击主页按钮并滑开 Safari 来完全关闭 Safari 时 Safari 会清除该网站的 C
  • 如何从 iOS 应用程序检测不安全的 wifi 网络

    我想检测我的应用程序中是否存在不安全的 wifi 网络 是否有任何公共 iOS API 可以实现相同的目的 没有记录的 API 可以获取该信息 如果您的应用程序需要通过网络发送和接收敏感数据 您通常应该假设没有安全连接
  • NSOperation 中委托的使用

    我正在尝试利用CLLocationManager in an NSOperation 作为其中的一部分 我需要能够startUpdatingLocation然后等到收到 CLLocation 后才完成操作 目前我已经完成了以下操作 但是委托
  • iOS 解析如何通过 URL 下载文件

    我正在将 parse 用于我的聊天应用程序 当我上传文件时 我保留该 url 并将该 url 发送给其他用户 然后其他用户可以通过该 URL 下载文件 这是我上传文件的代码 void uploadBlob NSData blob fileN
  • 除非在后台线程中获取新的引用,否则存在潜在的引用计数问题

    我有一个second https stackoverflow com questions 28898966 prefer property accessor or kvc style for accessing core data prop
  • 在 Swift 中将动态 Int 变量从一个类传递到另一个类

    我是 swift 2 的新手 我陷入了将变量从一个类传递到另一个类的过程中 我有一个类 GameScene 我有一个公共变量score并且在更新功能中不断更新 我想发送score两个节点相互碰撞时的值 一旦它发生碰撞 我就会使用 mainv
  • UICollectionReusableView 方法未被调用

    我希望我的部分位于UICollectionView有一个带有图像的标题 我已按照以下步骤操作 在故事板中 分配了一个标题作为我的附件UICollectionView 给它一个标识符 创建了一个子类UICollectionReusableVi
  • 我如何从 iPhone 设备获取电子邮件历史记录..?

    friends 我想从我的 iPhone 访问电子邮件历史记录 并且还希望在收到新邮件时收到通知 如果可能的话 请向我提供源代码片段 Thanks 简而言之 使用任何已记录的 API 都是不可能的
  • 在 JSQMessagesViewController 中显示 LocationMediaItem

    我刚刚尝试实施LocationMediaItem in my Xamarin iOS应用程序使用JSQMessagesViewController 一切都很顺利 唯一的问题是UICollectionView应该显示位置的单元格永远停留在加载
  • CustomNSError 协议有什么作用以及为什么我应该采用它?

    什么是CustomNSError协议的用途以及为什么我应该采用它 Apple提供的文档仅指出 描述错误类型 具体提供域 代码和 用户信息字典 我已经在谷歌上搜索过 但找不到与我的问题相关的任何内容 每种类型都符合Error协议是隐含地桥接的
  • Swift 中的 viewWillLayoutSubviews

    我正在尝试翻译SKScene scene GameScene sceneWithSize skView bounds size 进入 swift 但我收到错误 sceneWithSize 不可用 使用对象构造 SKScene size 我在
  • Google Cloud Messaging 显示成功消息但未发送 iOS

    所以我在使用 Google Cloud Messaging 时遇到了一个非常奇怪的问题 我遇到的问题是它正在成功注册设备 并且当发送消息时我会收到来自 Google 的成功消息 但设备永远不会收到任何消息 我从 GCM 得到的消息是 res
  • iOS 13 检查 CLLocationManager 的临时授权状态

    根据 WWDC 视频 https developer apple com videos play wwdc2019 705 https developer apple com videos play wwdc2019 705 当你要求 Al

随机推荐

  • ASP.Net Core JWT 令牌验证

    我需要验证在请求中收到的多个令牌 我遵循以下代码流程 services AddAuthentication AddJwtBearer Token1 options gt options TokenValidationParameters n
  • 是否可以调用不在 MATLAB 路径中的函数?

    我安装了一个库 其中有一些与 MATLAB 同名的函数 通过安装库 我的意思是添加路径 当我尝试调用这些函数时 它将使用该库的实现 但我想调用 MATLAB 实现 为了更简单 如果我有两个函数的绝对地址 如何指定要调用哪个函数 我搜索了答案
  • Github 访问错误 - 遇到 AggregateException [重复]

    这个问题在这里已经有答案了 我使用 github 存储库已经快一年了 从今天早上开始 我无法将我的代码推送到远程存储库 我在命令行中收到以下错误 致命 遇到 AggregateException Mindestens ein Fehler
  • 在使用 Inno Setup 安装期间报告已安装的 .NET Framework 版本

    我正在尝试使用 Inno Setup 来准备创建安装程序 我的第一次尝试是向用户报告当前安装了哪个 NET Framework 我想出了以下脚本 它安装了一个令牌 exe 但它没有显示我想要显示已安装的框架版本的消息框 Setup AppN
  • 使用 ECTO 和 put_assoc/4 进行多对多

    我尝试将 2 个现有多对多记录与 ECTO 和 put assoc 4 关联 但在尝试更新时不会删除元素 基本上我有项目和用户 为了管理用户对项目的访问 我有表 user project def Project do schema proj
  • 如何使用 Keras 预测函数/表?

    我目前正在学习keras 我的目标是创建一个简单的模型来预测函数的值 首先 我创建两个数组 一个用于 X 值 一个用于相应的 Y 值 declare and init arrays for training data X np arange
  • 从python中的字符串中获取两个字符[重复]

    这个问题在这里已经有答案了 如何在Python中从字符串中获取不是一个字符 而是两个字符 I have long str abcd for c in long str print c 它给了我喜欢 a b c d 但我需要得到 ab cd
  • 如何调试 Visual Studio 扩展

    我正在为 Visual Studio 2010 编写 VSIX 扩展 但不知道如何调试它 一种明显的方法是输出消息 扩展模板使用Trace WriteLine 但是在哪里可以找到它的输出呢 Visual Studio Extensions
  • 如何在新窗口中使用jspdf打开生成的pdf

    我在用jspdf生成 pdf 文件 一切都运转良好 但生成后如何打开 pdf 在新选项卡或新窗口中 我在用 doc output datauri 这是在同一选项卡中打开 pdf 根据来源 您可以将 dataurlnewwindow 参数用于
  • 从 csv 文件中删除字母和符号 - python 3.7

    我有一个 CSV 文件 其中有一列名为activity其中有如下数据 instv2 02 00001 20190517235008 instv2 9 Insti2 3 Fbstt1 00001 20190517131933 我需要仅从 活动
  • 如果输入包含数组中的任何单词

    我有一个输入 我想知道数组中是否存在任何值 举个简单的例子 我的数组是 var array sun mon tue wed thu fri sat 例如 我已经弄清楚如果我简单地输入 sun 如何触发它 但我想知道 hhsun 或 sune
  • 定义交换运算时减少代码重复

    我有一组名为的可交换二元函数的重载overlap 它接受两种不同的类型 class A a class B b bool overlap A B bool overlap B A 我的功能overlap当且仅当一个形状与另一个形状重叠时返回
  • 宏函数和内联函数在执行速度方面有什么区别?

    编译器如何通过宏处理内联函数以减少执行时间 编译器也被允许not如果这样做会更快 则内联函数 而编译器不能不内联宏 此外 内联函数比宏安全得多
  • 为基类设计一个基迭代器

    我目前正在设计一个界面 Base在下面的示例中 它提供了一些虚拟方法 包括begin and end 这两个方法简单地返回相应的迭代器 就像在任何其他集合类中一样 派生类应该实现这些方法并返回其迭代器的特定实现 下面的 简化的 示例显示了一
  • 自动将输入提供给 Linux 命令行 [重复]

    这个问题在这里已经有答案了 如果我有一个 linux 命令提示输入 2 个或更多输入 如何通过在命令行中定义它来将这些输入传递到提示符 您可以在命令后面添加一些内容来执行此操作吗 在下面的示例中 如何运行命令并向其传递用户名和密码 而无需在
  • 玩! - 独特的模型领域

    如何使我的模型类字段独一无二 例如 如果已经登录 我想为用户显示正确的消息 我必须编写自己的验证检查并使用它 或者 JPA UniqueConstraint可以用吗 我是这样做的 Entity public class User exten
  • 如何在 Java 中从另一个包中转换出同一类的类型?

    有两个班级 foo bar FileUploader and barbar foofoo FileUploader 两者相同并延伸Uploader 代码中的某处foo bar FileUploader被使用并作为我的函数的参数给出Uploa
  • 将数据从 sqlite 导出到 numpy 数组

    我不是程序员 我这样做纯粹是出于爱好 我找到了一种将 numpy 数组保存到 sqlite 数据库中的方法 import sqlite3 import numpy Array of 4 columns and 100 rows data n
  • 正则表达式分割字符串

    我有这段代码打印 Random
  • CIImage 返回 CMSampleBuffer

    我使用录制视频 mp4 文件 AVAssetWriter with CMSampleBuffer数据 来自视频 音频输入 录制时我想处理帧 我正在转换CMSampleBuffer to CIImage并对其进行处理 但如何更新CMSampl