在我的应用程序中,我具有隐藏字幕设置,并且我正在使用AVPLayer播放视频/实时内容,而没有显示默认控件。在我的应用中,我可以基于该开关状态来启用或禁用诸如开关之类的隐藏式字幕,我将BOOL值存储在userdefaults中。根据用户默认设置,我尝试使用以下api为avplayer启用或禁用cc。
[self.player setClosedCaptionDisplayEnabled:enable];
现在的问题是,即使我在应用程序中关闭了cc,但iPhone系统设置cc启用了该功能,我在avplayer中却获得了cc。如果我关闭系统cc,则我的应用设置会在avplayer中生效。
请问您有什么办法可以绕过avplayer的系统设置。如果不能,请提供苹果文件链接作为证明我们无法做到这一点的证明。
答案 0 :(得分:0)
您应该设置
self.player.appliesMediaSelectionCriteriaAutomatically = FALSE;
已弃用此方法。
[self.player setClosedCaptionDisplayEnabled:enable];
默认情况下,AVPlayer根据系统偏好设置应用选择条件。要覆盖任何媒体选择组的默认条件,请使用-[AVPlayer setMediaSelectionCriteria:forMediaCharacteristic:]。
编辑
将使用此方法:
@method setMediaSelectionCriteria:forMediaCharacteristic:
@abstract对具有指定媒体特征的媒体应用自动选择标准。
@param标准 AVPlayerMediaSelectionCriteria的实例。
@param media的特征 要应用选择标准的媒体特征。支持的值包括AVMediaCharacteristicAudible,AVMediaCharacteristicLegible和AVMediaCharacteristicVisual。
@讨论标准将在以下情况下应用于AVPlayerItem:
a)准备播放
b)通过-[AVPlayerItem selectMediaOption:inMediaSelectionGroup:]在另一个组中进行特定的媒体选择。一组中的自动选择可能会受到另一组中特定选择的影响。
c)底层系统偏好设置发生变化,例如系统语言,辅助功能标题。
在任何组中由-[AVPlayerItem selectMediaOption:inMediaSelectionGroup:]进行的特定选择将覆盖该组中的自动选择,直到收到-[AVPlayerItem selectMediaOptionAutomaticallyInMediaSelectionGroup:]。
- (void)setMediaSelectionCriteria :(可空AVPlayerMediaSelectionCriteria *)条件 forMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic NS_AVAILABLE(10_9,7_0);
同一文件的文档为here