首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVPlayerLooper,AVComposition和AVMutableAudioMixInputParameters :卷在循环之间是不稳定的

AVPlayerLooper,AVComposition和AVMutableAudioMixInputParameters :卷在循环之间是不稳定的
EN

Stack Overflow用户
提问于 2018-12-19 19:26:34
回答 1查看 251关注 0票数 1

我使用AVPlayerLooper在AVPlayer中循环视频。这个视频实际上是一个AVComposition,它融合了两个音频轨道和一个视频轨道。

我在作文中应用了两个音频输入参数,一个用于每个音轨来管理各自的音量(使用setVolume()方法)。还请注意,其中一个音频音轨还具有一个tap处理器来应用一些音频过滤器,使用audiomix输入参数内的专用属性。

一切似乎都很好,但我注意到这卷书有一个问题:

第一个循环很好,并呈现预期的卷,但下一个循环的卷似乎是随机的,一个循环位于预期的卷(假设setVolume()中为4.0 ),另一个为默认的(1.0)。

注意,如果我在一个音量低于预期的循环中静音和解除AVPlayer,则卷返回到它的配置值和期望值。

请注意,使用AVAssetExportSession导出文件中的相同组合(从任何活套中导出)都是很好的,卷总是与预期的一样。

,你有什么建议可以帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-21 00:29:13

这方面的一切听起来都像是一个bug (即第一个循环工作,AVAssetExportSession工作),加上将AVMutableAudioMixInputParameters的音量设置为文档中的0,1范围之外的值,听起来像是可能引发奇怪行为的事情,但是将MTAudioProcessingTap创建标志从kMTAudioProcessingTapCreationFlag_PostEffects更改为kMTAudioProcessingTapCreationFlag_PreEffects似乎解决了这个问题,或者至少解决了这个问题。

在头文件中:

kMTAudioProcessingTapCreationFlag_PreEffects表示在任何效果之前插入处理龙头。 kMTAudioProcessingTapCreationFlag_PostEffects表示在任何效果之后插入处理龙头。

我对此的解读是,这两个标志只会改变谁第一次接触音频: tap还是AVAudioMix inputParameters (inputParameters没有得到特殊的优先级标志,所以我假设它们是按数组顺序应用的?)。所有这些都没有说明混合配置是在某个时间点丢弃的,所以我想pre只是碰巧让您避免了错误的、不愉快的代码路径。

因此,总之,我希望这不是一个问题,你应用音量控制后,你的水龙头。如果是的话,就把音量放进你的水龙头里。

但是,伙计,AVPlayerLooperAVCompositionMTAudioProcessingTap之间的一种讨厌的互动?啊呀。在API设计中,标志始终是一个危险的标志。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53857963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档