问题标签 [avvideocomposition]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - AVPlayerItemVideoOutput 在寻找视频合成后停止传送帧
我想播放视频并使用 Core Image 过滤器对其进行处理。我有以下设置:
- 视频作为
AVAsset
- 用于
AVPlayer
控制视频播放 AVAsset
传递给AVPlayerItem
玩家- 核心图像过滤器是使用
AVMutableVideoComposition
初始化init(asset:applyingCIFiltersWithHandler:)
并分配给播放器项目的 - an
AVPlayerItemVideoOutput
用于获取处理后的帧copyPixelBuffer(forItemTime:itemTimeForDisplay:)
这按预期工作。但是,我在使用 向后搜索播放器时观察到奇怪的行为seek(to:completionHandler:)
:AVPlayerItemVideoOutput
突然停止提供新的像素缓冲区并hasNewPixelBuffer(forItemTime:)
返回false
。但这仅在视频合成中应用的过滤器更昂贵时才会发生。当使用非常简单的过滤器或根本不使用过滤器时,搜索按预期工作。
受此技术说明的启发,我发现了一种解决方法,即在完成后将合成重新分配给播放器项目seek
,但这感觉非常糟糕——尤其是因为它适用于简单的过滤器管道。
以前有人遇到过吗?有什么我需要配置不同的吗?
swift - 在给定时间范围内iOS视频帧的特定区域添加像素化过滤器
我有一个持续时间为 60 秒的视频,视频帧大小为 1200*700。我想做像素化过滤部分帧 CGRect(100, 100, 300, 300) 10 秒到 15 秒。它可能有多个这种部分帧和时间范围。
最后,我想在导出合成之前在 AVPlayer 中播放合成。
但是,它确实使整个视频像素化。如果我给出特定的框架,它会在框架外变成绿色。另外,这里我不能使用时间范围。
如果我使用合成动画工具,导出前无法在 AVPlayer 中播放。我该如何解决这个问题?
ios - AVAsynchronousVideoCompositionRequest sourceFrameByTrackID nil 用于带有 alpha 的视频
我正在尝试将一些透明动画视频添加到我的合成中作为过渡,但是在我的自定义合成器(AVVideoCompositing
)中,当我尝试通过
AVAsynchronousVideoCompositionRequest.sourceFrame
它获取像素缓冲区时返回 nil。如果我使用非透明 H.264 (mp4) 视频,它可以工作。透明视频 (mov) 使用时间码和 Apple ProRes 4444 编码。
我应该尝试使用 HEVC 吗?我已经看到一些建议在非透明视频上使用 Chroma CIFilter 来删除背景,但我不确定这是否是正确的方法。
可以在此处看到所需的动画过渡效果。
ios - AVComposition 轨道透明度
我正在尝试使用透明(带 alpha 的 HEVC)视频进行动画过渡,这样当从 video1 过渡到 video2 时,动画视频片段被覆盖但透明,可以看到动画下方的 video1/video2 部分。
这是描述我的作品的图像:
Track1 包含 video1 和 video2 (sample_clip1, sample_clip2),Track2 包含动画视频 (party_transition)。有 3 条指令,中间的指令 (animation_instruction) 将 Track2 图层设置在顶部,但它不会通过动画的透明部分显示 Track1。
我尝试在 animation_instruction 上设置清晰的背景颜色,但没有帮助。现在我想知道我的动画视频格式/规格或我的说明是否有问题?
以下是动画视频信息:
动画预览:
ios - Swift:使用 CIColorCube 将 LUT(查找表)应用于视频是滞后的
我已经知道如何使用 CIColorCubeWithColorSpace 将 LUT 应用于本地视频。问题是性能有点滞后/缓慢。注意:如果我将 CIFilter 应用于 60FPS 视频,则滞后很明显。
这是我的代码:
怎样才能优化呢?
swift - 如何从预渲染帧中停止 AVVideoComposition?
我有一个自定义合成器,可以在应用过滤器时渲染帧。当我使用滑块更改过滤器属性时,更改会延迟,因为视频合成会提前渲染并保留那些预渲染帧的旧过滤器值。我可以通过重置 videoComposition - 来解决这个问题playerItem.videoComposition = videoComposition
。这很好用并解决了上面的问题,但是它产生了一个新问题。使用滑块之类的东西,变化发生得如此之快,以至于此操作会使 CPU 过载,从而导致视频抖动。我可以通过向 Slider 添加一个步骤并且仅以更大的增量进行更改来改进这一点,但这仍然不完美并且会产生明显的滞后。我也宁愿允许用户进行那些微小的改变,所以这个修复是不值得的。有谁知道禁用此功能的好方法AVVideoComposition
还是自定义合成器?一直很痛苦。