In den integrierten Apps für tvOS, wenn Sie ein Video ansehen, werden Informationen zu diesem Video angezeigt, wenn Sie nach unten wischen. Ich kann keine Informationen darüber finden, wie ein Entwickler das gleiche tun kann. Ich bin mir sicher, dass es möglich ist, wie es heißt "wischen für Informationen" Hat jemand das herausgefunden? Ich verwende AVPlayerViewController. Vielen Dank.tvOS AVPlayerViewController Video Info
Antwort
Um die „Info“ Abschnitt zu erhalten in AVPlayerViewController
in der „Swipe nach unten für Info“ klicken, zeigen sich erstellen Sie AVMutableMetadataItem
s mit dem AVMetadataKeySpaceCommon
Schlüsselraum und jede der folgenden Tasten:
AVMetadataCommonKeyTitle
AVMetadataCommonKeyDescription
AVMetadataiTunesMetadataKeyContentRating
AVMetadataQuickTimeMetadataKeyGenre
und fügen Sie zum AVPlayerItem
's externalMetadata
Array. Damit jede AVMutableMetadataItem
angezeigt wird, müssen mindestens die Eigenschaften identifier
, extendedLanguageTag
und value
festgelegt werden. Hier ein Beispiel:
let mediaItem = AVPlayerItem(URL: mediaURL)
let titleMetadataItem = AVMutableMetadataItem()
titleMetadataItem.locale = NSLocale.currentLocale()
titleMetadataItem.key = AVMetadataCommonKeyTitle
titleMetadataItem.keySpace = AVMetadataKeySpaceCommon
titleMetadataItem.value = "The Title"
let descriptionMetadataItem = AVMutableMetadataItem()
descriptionMetadataItem.locale = NSLocale.currentLocale()
descriptionMetadataItem.key = AVMetadataCommonKeyDescription
descriptionMetadataItem.keySpace = AVMetadataKeySpaceCommon
descriptionMetadataItem.value = "This is the description"
mediaItem.externalMetadata.append(titleMetadataItem)
mediaItem.externalMetadata.append(descriptionMetadataItem)
Dies ist nicht gut dokumentiert. This forum post war entscheidend, um dies herauszufinden.
Objective-C Beispiel für @JenelEjercitoMyers:
AVPlayerItem *mediaItem = [[AVPlayerItem alloc] initWithURL:mediaURL];
AVMutableMetadataItem *titleMetadataItem = [[AVMutableMetadataItem alloc] init];
titleMetadataItem.locale = NSLocale.currentLocale;
titleMetadataItem.key = AVMetadataCommonKeyTitle;
titleMetadataItem.keySpace = AVMetadataKeySpaceCommon;
titleMetadataItem.value = @"The Title";
NSArray *externalMetadata = [[NSArray alloc] initWithObjects:titleMetadataItem, nil];
mediaItem.externalMetadata = externalMetadata;
Danke. Ich konnte nirgends finden, wie ich das machen sollte. Danke für das Teilen. –
Kein Problem, @BrianFLeighty. Froh, dass ich Helfen kann. Ich hatte dieselbe Frage. –
Ich habe ein Problem, bei dem die "info"/Metadaten ausgeblendet werden, nachdem sie in der Ansicht "Nach Informationen wischen" geladen wurden. Irgendeine Idee, was würde das tun? –
Neben Jeffs Antwort, das ist die Funktion, die ich verwende repetivity zu vermeiden:
private func setupMetadata(data: String, key: (NSCopying & NSObjectProtocol))->AVMutableMetadataItem{
let metadataItem = AVMutableMetadataItem()
metadataItem.locale = NSLocale.current
metadataItem.key = key
metadataItem.keySpace = AVMetadataKeySpaceCommon
metadataItem.value = data as (NSCopying & NSObjectProtocol)?
return metadataItem
}
und im Einsatz:
//in AVPlayerViewControler
//Suppose you have an already initialized avPlayerItem
avPlayerItem.externalMetadata.append(self.setupMetadata(data: "title of video", key: AVMetadataCommonKeyTitle as (NSCopying & NSObjectProtocol)))
avPlayerItem.externalMetadata.append(self.setupMetadata(data: "RugDealer", key: AVMetadataCommonKeyAuthor as (NSCopying & NSObjectProtocol)))
avPlayerItem.externalMetadata.append(self.setupMetadata(data: "Description of the video", key: AVMetadataCommonKeyDescription as (NSCopying & NSObjectProtocol)))
Zusätzlich zu den oben genannten Antworten, wollte ich auch Artwork, Genres und Inhaltsbewertung zum oberen Regal hinzufügen. Dies ist etwas anders als das, was ich erwähnt habe. Sie können dem Array externalMetadata wie folgt hinzugefügt werden.
//Sets the content rating on the top shelf
AVMutableMetadataItem *ratingInfo = [[AVMutableMetadataItem alloc] init];
ratingInfo.key = AVMetadataiTunesMetadataKeyContentRating;
ratingInfo.keySpace = AVMetadataKeySpaceiTunes;
ratingInfo.locale = [NSLocale currentLocale];
ratingInfo.value = @"PG-13"; //Rating of the video
ratingInfo.extendedLanguageTag = @"und";
[externalMetadata addObject:ratingInfo];
//Sets the thumbnail on the shelf
AVMutableMetadataItem *artwork1 = [[AVMutableMetadataItem alloc] init];
artwork1.key = AVMetadataCommonKeyArtwork;
artwork1.keySpace = AVMetadataKeySpaceCommon;
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:artworkAddress]];
artwork1.value = imageData;
artwork1.locale = [NSLocale currentLocale];
[externalMetadata addObject:artwork1];
//Sets the Genre on the shelf
AVMutableMetadataItem *genresInfo = [[AVMutableMetadataItem alloc] init];
genresInfo.key = AVMetadataQuickTimeMetadataKeyGenre;
genresInfo.keySpace = AVMetadataKeySpaceQuickTimeMetadata;
genresInfo.locale = [NSLocale currentLocale];
genresInfo.value = @"Drama, Medical";
[externalMetadata addObject:genresInfo];
Vorsichtig mit DataWithContentsOfURL seit das ist ein synchroner Aufruf –
Dank @BrianFLeighty, hatte dies nicht berücksichtigt. Dies kann zu Problemen bei Bildern mit hoher Qualität führen. Aber wahrscheinlich sind diese Kunstwerke kleiner. Trotzdem danke. –
- 1. Größe für Video einstellen mit AVPlayerViewController
- 2. Get Quicktime Video Info
- 3. tvOS-Video: Titelmetadaten abgeschnitten, Grafikgröße zu klein
- 4. tvOS AVPlayerItem externe Kunstwerk Metadaten Größe
- 5. Wie bekomme ich YUV Video Info?
- 6. Done-Button-Klick-Ereignis in AVPlayerViewController
- 7. Können wir ein Video in tvOS TopShelf nativ abspielen?
- 8. Pufferaktivitätsanzeige von AVPlayerViewController entfernen
- 9. UINavigationController blendet AVPlayerViewController Fortschrittsschieberegler
- 10. AVPlayerViewController wird nach dem Abnehmen nicht freigegeben
- 11. TVOS-Zeitleiste, ohne Audio-Menü zu verlieren?
- 12. ios AVPlayerViewController kann nicht lokal mp4
- 13. AVPlayer mit Wiedergabesteuerung von avplayerviewcontroller
- 14. Nein "Fertig" -Taste auf AVPlayerViewController
- 15. YouTube-Video in einem Google Map-Info-Fenster
- 16. Suchvorlage tvOS
- 17. Vorwärts und rückwärts funktioniert nicht, wenn App Hintergrund in den Vordergrund während der Video-Wiedergabe in tvOS eingeben
- 18. Spielen Sie ein Video von Youtube in einem AVPlayerViewController in Swift
- 19. tvOS Taste Übergänge und View-Controller
- 20. iOS: AVPlayerViewController aktivieren Vollbild-Rotation in Hochformat-Anwendung
- 21. Interact iPhone mit tvOS
- 22. Benötigte Symbolgrößen für tvOS
- 23. Apple tvOS und OAuth
- 24. YouTube-URL-Schema tvOS
- 25. CloudKit Abonnements in tvOS
- 26. UIScrollView on tvOS
- 27. UIDatePicker Ersatz für tvOS?
- 28. Datumsauswahl in tvOS
- 29. tvos Overriding pressesBegan
- 30. Authentifizierung Dropbox auf tvOS
Wenn Sie die Protokolle überprüfen, wenn die „Info“ -Ansicht, nachdem Sie nach unten wischen, wird erscheinen, wird eine Warnung angezeigt: Presenting Ansicht-Controller auf getrennte Ansicht Controller abgeraten. Es scheint also, dass sie einen getrennten View-Controller verwenden! –
Sylverb
Ich kann nicht den "Info" Abschnitt dieses "wischen" Fenster erscheinen zu sehen. Es zeigt nur den Abschnitt "Audio". Für jedes meiner 'AVPlayerItem's hänge ich' AVMutableMetadataItem' an das 'externalMetadata' Array an, aber es erscheint immer noch nicht. Apple sagt, dass es hier möglich ist: https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVPlayerViewController_Class/ unter "Externe Metadaten". Siehe auch https://developer.apple.com/library/prerelease/tvos/documentation/AVFoundation/Reference/AVPlayerItem_Class/index.html#//apple_ref/occ/instp/AVPlayerItem/externalMetadata –
Ich habe es herausgefunden. Siehe meine Antwort. –