ios - AVAsynchronousVideoCompositionRequest sourceFrameByTrackID nil 用于带有 alpha 的视频
问题描述
我正在尝试将一些透明动画视频添加到我的合成中作为过渡,但是在我的自定义合成器(AVVideoCompositing
)中,当我尝试通过
AVAsynchronousVideoCompositionRequest.sourceFrame
它获取像素缓冲区时返回 nil。如果我使用非透明 H.264 (mp4) 视频,它可以工作。透明视频 (mov) 使用时间码和 Apple ProRes 4444 编码。
我应该尝试使用 HEVC 吗?我已经看到一些建议在非透明视频上使用 Chroma CIFilter 来删除背景,但我不确定这是否是正确的方法。
可以在此处看到所需的动画过渡效果。
解决方案
iOS 上实际上不支持 ProRes。但是,您应该能够CMVideoCodecType.hevcWithAlpha
用于您的用例。
要获取可用编码器的列表,您可以执行以下操作:
import VideoToolbox
var encoders: CFArray?
VTCopyVideoEncoderList(nil, &encoders)
print(encoders!)
推荐阅读
- javascript - 使用超时 NodeJS
- c# - 将数据从 MongoDB 加载到 SQL Server 的 SSIS 脚本任务出错:无法加载文件或程序集 MongoDB.Driver.Core
- javascript - 数组搜索和排序
- html - Div 未显示在屏幕上,我是否缺少一些 CSS 属性?
- r - 如何根据另一个闪亮小部件的值对闪亮小部件的值进行子集化
- azure - 如何从 Powershell Runbook 访问 VM 中的脚本文件
- scala - 在scala中扩展一个类是否也继承了辅助构造函数?
- javascript - 无法使用 ForEach 填充数组
- android - 如何将星期几用作 MPAndroidChart 的右轴标签?
- spring-boot - 适用于 Spring Boot >1.5.20 的 Spring Cloud Stream Kafka Binder 和 Spring Cloud Azure EventHub 兼容版本