tvos - How to edit video's info in Apple TV? -
i try add basic information in videos under info box, don't know how add or update it?
anyone knows how it?
tvjs
you can set metadata properties directly on mediaitem
object instantiate.
var mediaitem = new mediaitem("video", videourl); mediaitem.title = "my title"; mediaitem.subtitle = "my subtitle"; mediaitem.artworkimageurl = someurl; mediaitem.description = "my description";
for more information see here , here.
avkit
swift
you should add externalmetadata
avplayeritem
. can add these 2 helper functions apple has provided in wwdc session:
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 string item.identifier = avmetadatacommonidentifierartwork item.extendedlanguagetag = "und" return item.copy() as? avmetadataitem }
the first 1 take identifier, type of metadata add, , value type , return optional avmetadataitem
other takes uiimage
, returns same thing.
now can following when update 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 adding metadata avplayeritem covered")!) if let image = uiimage(named: "poster"), let artworkitem = metadataartworkitem(image) { allitems.append(artworkitem) } playeritem?.externalmetadata = allitems
which gives like:
you can find more information here.
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 code update 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 adding metadata avplayeritem covered"]]; [allitems addobject:[self metadataartworkitemwithimage:[uiimage imagenamed:@"poster"]]]; playeritem.externalmetadata = allitems;
Comments
Post a Comment