【发布时间】:2013-08-29 07:46:06
【问题描述】:
我想在视频播放时对视频文件应用滤镜(效果)。
我目前正在使用@BradLarson 的(很棒的)GPUImage 框架来执行此操作,这里的问题是该框架在播放视频时不支持音频播放。
所以我有两个选择:
1) 深入了解GPUImage 代码并更改GPUImageMovie,这样它也将处理音频缓冲区。这需要同步音频和视频帧的知识,不幸的是我没有。我看到一些黑客尝试使用AVAudioPlayer 播放音频,但存在很多同步问题。
2) 使用CoreImage 框架而不是GPUImage。
所以我想看看使用原生 iOS CoreImage 和 CIFilter 来完成这项工作的第二个选项。
问题是,我找不到任何关于如何使用 CIFilter 执行此操作的示例,如何对文件中的视频应用过滤器?
我必须使用AVAssetReader 来阅读视频并处理每一帧吗?如果是这样,我又回到了同步音频和视频的第一个问题。
或者有没有办法直接在视频或预览层上应用过滤器链?
感谢任何帮助:)
【问题讨论】:
-
我当然希望能在添加音频播放方面提供任何帮助。这不是我非常熟悉的领域,甚至音频录制支持也是由其他人添加的。我所做的只是尝试调整性能。
-
@BradLarson 我真的很惊讶直到现在还没有人实现它,特别是因为有这么多人使用并为 GPUImage 做出贡献
-
我已经完成了一些使用 AVComposition 合成多个视频和音频轨道的工作,我可以解决同步问题。我不知道如何将音频添加到 GPUImage。但是,我可以提供一个可能有帮助的示例项目 - 它被称为来自 Apple 的 RosyWriter,它处理在 AVCapture 会话期间添加过滤器:apple.developer.apple.com/library/ios/samplecode/RosyWriter/…
-
您可能对这条最近的 GitHub 评论感兴趣:github.com/BradLarson/GPUImage/issues/458#issuecomment-23704744
-
感谢@BradLarson 实际上我参与了编写此解决方案 :) 除了编写自己的实现之外,我们找不到任何其他方法。
标签: ios objective-c core-image gpuimage