AVPlayerControllerドロップダウンでInfoを表示しようとしています。私は、WWDCに表示されているとおり、playerItemにメタデータを追加しています。アートワークのイメージを除き、すべてが正常に表示されています。奇妙なのは、画像をインフォメーションビューに追加したように見えますが、それを隠すように見えることです。イメージがなければならないスペースがありますが、何も表示されません。それは、しかし、私はそれを正しく追加している知っているので、テレビのリモートアプリケーションに表示されます。ここに私のコードだ:metadataItemを作成するために使用さAVPlayerメタデータのアートワークがtvOSに表示されない
let playerItem: AVPlayerItem = AVPlayerItem(asset: avasset)
var allItems: [AVMetadataItem] = []
allItems.append(self.metadataItem(identifier: AVMetadataCommonIdentifierTitle, value: asset.title as (NSCopying & NSObjectProtocol)?)!)
if let desc = asset.desc {
allItems.append(self.metadataItem(identifier: AVMetadataCommonIdentifierDescription, value: desc as (NSCopying & NSObjectProtocol)?)!)
}
if let image = self.thumbImage, let artworkItem = self.metadataArtworkItem(image: image) {
allItems.append(artworkItem)
}
playerItem.externalMetadata = allItems
self.setupPlayerItem(playerItem)
方法:
func metadataItem(identifier: String, value: (NSCopying & NSObjectProtocol)?) -> AVMetadataItem? {
if let actualValue = value {
let item = AVMutableMetadataItem()
item.value = actualValue
item.identifier = identifier
item.extendedLanguageTag = "und"
return item.copy() as? AVMetadataItem
}
return nil
}
func metadataArtworkItem(image: UIImage) -> AVMetadataItem? {
let item = AVMutableMetadataItem()
item.value = UIImagePNGRepresentation(image) as (NSCopying & NSObjectProtocol)?
item.dataType = kCMMetadataBaseDataType_PNG as String
item.identifier = AVMetadataCommonIdentifierArtwork
item.extendedLanguageTag = "und"
return item.copy() as? AVMetadataItem
}
この行の直前にprintステートメントを追加してください: 'allItems.append(artworkItem)'とそれがトリガされているかどうかを確認してください。 – Coder256
@ Coder256トリガーされています。 – CodyMace
PNGの代わりに[JPEG]を試しましたか(http://stackoverflow.com/a/25664369/3398839)? 'value'と' dataType'の両方をJPEGを使うように変更し、それが修正するかどうか確認してください。 – Coder256