Comment obtenir une image vidéo de la AVPlayer?
J'ai PlayerView classe pour l'affichage AVPlayer de la lecture. Code de la documentation.
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
@interface PlayerView : UIView
@property (nonatomic) AVPlayer *player;
@end
@implementation PlayerView
+ (Class)layerClass {
return [AVPlayerLayer class];
}
- (AVPlayer*)player {
return [(AVPlayerLayer *)[self layer] player];
}
- (void)setPlayer:(AVPlayer *)player {
[(AVPlayerLayer *)[self layer] setPlayer:player];
}
@end
J'ai mis en place mon AVPlayer (contient de la vidéo de l'actif avec la taille 320x240) dans ce PlayerView (avec cadre.taille.largeur = 100, cadre.taille.hauteur = 100) et ma vidéo est redimensionnée. Comment puis-je obtenir la taille de la vidéo après l'ajout dans PlayerView?
OriginalL'auteur Andrey Banshchikov | 2012-08-23
Vous devez vous connecter pour publier un commentaire.
Dans iOS 7.0 ajout de nouvelle fonctionnalité:
AVPlayerLayer a bien videoRect.
attendez que le currentItem.statut == AVPlayerStatusReadyToPlay, et alors vous obtiendrez le cadre
Cela ne fonctionne pas, j'ai même ajouté KVO à attendre de l'état AVPlayerStatusReadyToPlay. Le videoRect retourne encore tous les zéros
Après un autre essai, cela fonctionne. Si vous avez besoin de KVO sur le AVPlayerItem, pas AVPlayer, et de la condition à vérifier est AVPlayerItemStatus.ReadyToPlay, pas AVPlayerStatusReadyToPlay. Cette approche est correcte, mais le commentaire de @Yocoh est un peu trompeur.
Qui fonctionne pour l'aspect
fit
mais pas pour l'aspectfill
. Selon le docs, c'est le "rect de l'image vidéo dans la couche limite"OriginalL'auteur Andrey Banshchikov
Trouvé une solution:
Ajouter à PlayerView classe:
ouais. xcode 4.5.1, base sdk 6.0.
OriginalL'auteur Andrey Banshchikov
Voici la solution c'est de travailler pour moi, prend en compte le positionnement de la AVPlayer au sein de la vue. J'ai juste ajouté ceci à la PlayerView classe personnalisée. J'ai eu à résoudre ce parce ne semble pas qu'videoRect travaille en 10.7.
OriginalL'auteur Eric Badros
Ici est Eric Badros réponse porté sur iOS. J'ai également ajouté preferredTransform de la manipulation. Cela suppose
_player
est unAVPlayer
Merci @tettoffensive
OriginalL'auteur Sterling Christensen
Cela a fonctionné pour moi. Lorsque vous n'avez pas le AVPLayerLayer.
OriginalL'auteur Andrey Banshchikov