首页 > 解决方案 > AVPlayerItem 的 selectedMediaOption(in:) 与 seek(to:) 调用后的可用选择选项不一致

问题描述

我在on an with keyAVFoundation的完成块中遇到了一个奇怪的问题,我正在检查该组中可用媒体选择选项的值以了解该特征,以及该组中当前选择的媒体选项(通过. 当我打印出这些时,我得到以下输出(数组是可用的选择选项,后跟当前选择):loadValuesAsynchronously(forKeys:)AVAsset"availableMediaCharacteristicsWithMediaSelectionOptions".legibleselectedMediaOption(in: group)

(
    "<AVMediaSelectionKeyValueOption: 0x60c002078380, language = en-IE, mediaType = 'sbtl', title = English+(Ireland)>",
    "<AVMediaSelectionKeyValueOption: 0x60c002078440, language = ab, mediaType = 'sbtl', tagged media characteristics = {public.accessibility.transcribes-spoken-dialog, public.accessibility.describes-music-and-sound}, title = Abkhazian>"
)
<AVMediaSelectionKeyValueOption: 0x60c00207b640, language = en-IE, mediaType = 'sbtl', title = English+(Ireland)>

如您所见,所选选项en-IE与数组中的选项具有相同的信息,但由于地址不同,它实际上是一个不同的AVMediaSelectionOption实例。这会在对象的状态更改后立即发生AVPlayerItem,以防影响任何事情。选择的选项稍后会更新吗?有没有人看起来像这样?

标签: swiftavfoundation

解决方案


所以看起来答案是AVMediaSelectionGroup每次AVMediaSelectionOptions调用.mediaSelectionGroup(forMediaCharacteristic:). 这意味着即使该组将包含所有相同的信息,它也不会是与前一次调用中的实例相同的实例。


推荐阅读