9
votes

Obtenez les dimensions de la vidéo programmatique dans l'objectif c

Je suis un débutant dans le développement iOS. Je développe une application où j'ai besoin de la taille d'une vidéo qui se joue dans le mpmovieplayPontroller.

J'utilise la propriété Naturalsize de mpmovieplayercontroller pour obtenir les dimensions de la vidéo joué. P>

@property(nonatomic, readonly) CGSize naturalSize;


2 commentaires

Il y a aussi une propriété de la durée de mpmovieplayelontroller


@tipycalflow Oui, j'ai vu cette propriété, mais je voulais connaître la hauteur et la largeur de la vidéo qui est sur le point d'être joué dans l'objet MpmoviePlayController avant qu'il ne soit réellement joué.


4 Réponses :


7
votes

Il faut du temps pour le MPMOVIEPlayerController de charger les métadonnées vidéo, vous devez donc ajouter un auditeur et attendre que le naturalalize soit chargé. Quelque chose comme ceci: xxx

et dans MOVIENATURALASIVAILABLEABLEABLE: , myVideoPlayer.naturalsize vous donne la valeur souhaitée et, après cela, vous pouvez jouer à la valeur souhaitée. Vidéo.


0 commentaires

38
votes

Vous pouvez lire des dimensions d'une vidéo en utilisant avurlasset code> et avastettrack code>, comme celui-ci: xxx pré>

puis à l'aide du AvaisetTrack Naturalsize Propriété: P>

CGSize mediaSize = track.naturalSize;


2 commentaires

Prenez soin de: Dans mon application, j'ai rencontré une exception sur la ligne avec [Tracks ObjectAindex: 0] , probablement parce que le tableau des pistes était vide. Assurez-vous d'ajouter si (pistes.Count> = 1) Pour vérifier si le tableau n'est pas vide et qu'un objet existe à l'index 0.


Je pense qu'utiliser [pistes firstOject] serait mieux. Parce qu'il retournera nul lorsque le tableau est vide.



2
votes

Je pensais juste que je partageais mes expériences pour ceux qui trouvent cette page.

La taille naturelle n'est pas en réalité la résolution codée, c'est la résolution d'affichage. Cela peut être différent de la résolution codée, par exemple si le rapport de format pixel! = 1 ou (plus courant) Il existe une information de métadonnées d'ouverture propre dans la vidéo codée.

Pour obtenir la résolution codée Le seul moyen que j'ai trouvé est de décoder la première image avec, par exemple, AvasTreaderTrackOutPut, puis inspecte le tampon de pixel résultant avec CVPIXELBUFFERGETTWIDTH (ou GetHeight) pour obtenir la résolution des données. Si vous utilisez imageGenerator, vous obtenez la résolution d'affichage (et un bitmap bitmap RGB de la résolution d'affichage)


0 commentaires

0
votes

Ceci est une ancienne question, mais c'est le premier coup dans les résultats de Google.

La propriété "Naturalsize" ne semble pas être la résolution; Dans mes tests, cela ressemble plus à un rapport d'aspect. Par exemple, je vois habituellement Naturalsize.Height = 9 et Naturalsize.Width = 16

Voici un code pour obtenir les dimensions des pixels, ce qui est probablement ce que vous voulez, et d'autres choses. xxx


2 commentaires

Merci d'avoir soutenu Jay. Malheureusement, ce code n'est pas en construction, veuillez mettre à jour votre réponse pour aider les autres. Meilleur.


Il construit. Placez la structure dans un fichier d'en-tête. Pour la fonction, vous aurez besoin de deux importations: et . De plus, vous devrez créer un lien avec le cadre d'avivervance.