eligibleforhdrplayback
属性来确定是否支持 HDR 播放。然而,我注意到了一个不一致的地方。当 Apple TV 上的“设置”菜单中的“视频格式”从 HDR 切换到 SDR 时,该属性仍然返回 true
,表明 HDR 即使不能播放也可以播放(这似乎与 [20:40] 标记周围提到的内容相矛盾这个 WWDC 视频)。
我尝试使用
eligibleForHDRPlaybackDidChangeNotification
甚至重新启动应用程序,但我仍然遇到同样的问题。
是否有其他方法可以准确确定应用程序是否可以在 Apple TV 上播放 HDR 内容?
在这种情况下,如果存在元数据,则表明该视频是 HDR,并且可以在支持 HDR 的情况下播放。
import AVKit
func checkForHDRSupport() {
guard let videoURL = Bundle.main.url(forResource: "myvideo", withExtension: "mp4") else {
return
}
let asset = AVURLAsset(url: videoURL)
let playerItem = AVPlayerItem(asset: asset)
let metadataOutput = AVPlayerItemMetadataOutput(identifiers: nil)
playerItem.add(metadataOutput)
let isHDR = metadataOutput.itemOutputs.contains { output in
return output.metadataIdentifiers.contains(AVMetadataIdentifier(rawValue: "com.apple.quicktime.display-flags.hdr"))
}
if isHDR {
print("HDR playback is supported")
} else {
print("HDR playback is not supported")
}
}