2017-01-09 7 views
0

AVPlayerController 드롭 다운에서 정보를 표시하려고합니다. 나는 그들이 WWDC에 보여준 것을 정확하게 따르고 있으며, playerItem에 메타 데이터를 추가하고있다. 아트 워크 이미지를 제외하고 모든 것이 정상적으로 표시됩니다. 이상하게도 정보 뷰에 이미지를 추가하는 것처럼 보이지만 숨 깁니다. 이미지가 있어야하지만 아무것도 표시되지 않는 공간이 있습니다. 그것은 원격 애플 리케이션에 TV에 표시되지 않습니다, 그래서 내가 올바르게 추가하는 거 알아.AVPlayer 메타 데이터 아트웍이 tvOS에 표시되지 않습니다.

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 
} 

enter image description here

+0

이 줄 바로 앞에 print 문을 추가하십시오 :'allItems.append (artworkItem)'그리고 그것이 트리거되는지보십시오. – Coder256

+0

@ Coder256 트리거되고 있습니다. – CodyMace

+0

PNG 대신 [JPEG]를 사용 해본 적이 있습니까? (http://stackoverflow.com/a/25664369/3398839)? JPEG를 사용하기 위해'value'와'dataType'을 모두 변경하고 수정했는지 확인하십시오. – Coder256

답변

0

그래서이 AVMetadataCommonIdentifierDescription 항목이 전무하거나 빈 문자열 경우, 이미지를 얻을 수 있음을 밝혀 다음 metadataItem를 만드는 데 사용

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) 

방법 : 여기 내 코드는 숨겨진. 표시 할 텍스트가 없으면 설명을 ""로 설정했습니다. 나는 분명히 정상이 아니기 때문에 이것에 사과와 함께 버그를 제기 할 것입니다.