如何在Apple TV中编辑视频信息?

Wei*_*Xia 1 apple-tv tvos tvml tvos9.1

我尝试在Info Box下的视频中添加一些基本信息,但我不知道如何添加或更新它?

谁知道怎么做?

在此输入图像描述

bey*_*ulf 5

TVJS

您可以直接在MediaItem实例化的对象上设置元数据属性.

var mediaItem = new MediaItem("video", videoURL);
mediaItem.title = "My Title";
mediaItem.subtitle = "My Subtitle";
mediaItem.artworkImageURL = someURL;
mediaItem.description = "My description";
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅此处此处.

AVKit

迅速

你应该加入externalMetadata你的AVPlayerItem.为此,您可以添加Apple在其WWDC会话中提供的这两个辅助函数:

    func metadataItem(identifier : String, value : protocol<NSCopying,
        NSObjectProtocol>?) -> AVMetadataItem? {
        if let actualValue = value {
            let item = AVMutableMetadataItem()
            item.value = actualValue
            item.identifier = identifier
            item.extendedLanguageTag = "und" // undefined (wildcard) language
            return item.copy() as? AVMetadataItem
        }
        return nil
    }

    func metadataArtworkItem(image: UIImage) -> AVMetadataItem? {
        let item = AVMutableMetadataItem()
        // Choose PNG or JPEG
        item.value = UIImagePNGRepresentation(image)
        item.dataType = kCMMetadataBaseDataType_PNG as String
        item.identifier = AVMetadataCommonIdentifierArtwork
        item.extendedLanguageTag = "und"
        return item.copy() as? AVMetadataItem
    }
Run Code Online (Sandbox Code Playgroud)

第一个将采用标识符,您要添加的元数据类型,以及该类型的值并返回一个可选项AVMetadataItem.另一个采用a UIImage并返回相同的内容.

现在,当您更新时,您可以说出以下内容AVPlayerItem:

let videoURL = NSURL(string: "http://devstreaming.apple.com/videos/wwdc/2016/506ms2tv71tcduwp3dm/506/hls_vod_mvp.m3u8")
self.player = AVPlayer(URL: videoURL!)
let playerItem = self.player?.currentItem
var allItems: [AVMetadataItem] = [AVMetadataItem]()
allItems.append(self.metadataItem(AVMetadataCommonIdentifierTitle, value: "AVKit on tvOS")!)
allItems.append(self.metadataItem(AVMetadataCommonIdentifierDescription, value: "2016 WWDC session AVKit on tvOS where adding metadata to AVPlayerItem is covered")!)
if let image = UIImage(named: "Poster"), let artworkItem = metadataArtworkItem(image)
{
    allItems.append(artworkItem)
}
playerItem?.externalMetadata = allItems
Run Code Online (Sandbox Code Playgroud)

这给你的东西:

在此输入图像描述

您可以在此处找到更多信息.

Objective-C的

- (AVMetadataItem *)metadataItemWithIdentifier:(NSString *)identifier value:(id<NSObject, NSCopying>) value
{
    AVMutableMetadataItem *item = [[AVMutableMetadataItem alloc]init];
    item.value = value;
    item.identifier = identifier;
    item.extendedLanguageTag = @"und";
    return [item copy];
}

- (AVMetadataItem *)metadataArtworkItemWithImage:(UIImage *)image
{
    AVMutableMetadataItem *item = [[AVMutableMetadataItem alloc]init];
    item.value = UIImagePNGRepresentation(image);
    item.dataType = (__bridge NSString * _Nullable)(kCMMetadataBaseDataType_PNG);
    item.identifier = AVMetadataCommonIdentifierArtwork;
    item.extendedLanguageTag = @"und";
    return item.copy;
}

// Add this code where you update the AVPlayerItem
NSURL *videoURL = [NSURL URLWithString:self.detailItem.urlString];
playerViewController.player = [AVPlayer playerWithURL:videoURL];
self.player = playerViewController.player;
AVPlayerItem *playerItem = self.player.currentItem;
NSMutableArray <AVMetadataItem *> *allItems = [NSMutableArray new];
[allItems addObject:[self metadataItemWithIdentifier:AVMetadataCommonIdentifierTitle value:@"AVKit on tvOS"]];
[allItems addObject:[self metadataItemWithIdentifier:AVMetadataCommonIdentifierDescription value:@"2016 WWDC session AVKit on tvOS where adding metadata to AVPlayerItem is covered"]];
[allItems addObject:[self metadataArtworkItemWithImage:[UIImage imageNamed:@"Poster"]]];
playerItem.externalMetadata = allItems;
Run Code Online (Sandbox Code Playgroud)