如何准确检测Apple TV上的HDR播放能力?

问题描述 投票:0回答:1

我一直在使用

eligibleforhdrplayback
属性来确定是否支持 HDR 播放。然而,我注意到了一个不一致的地方。当 Apple TV 上的“设置”菜单中的“视频格式”从 HDR 切换到 SDR 时,该属性仍然返回
true
,表明 HDR 即使不能播放也可以播放(这似乎与 [20:40] 标记周围提到的内容相矛盾这个 WWDC 视频)。

我尝试使用

eligibleForHDRPlaybackDidChangeNotification
甚至重新启动应用程序,但我仍然遇到同样的问题。

是否有其他方法可以准确确定应用程序是否可以在 Apple TV 上播放 HDR 内容?

video-streaming tvos hdr
1个回答
0
投票

在这种情况下,如果存在元数据,则表明该视频是 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")
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.