2009-10-09 4 views
-1

J'écris une application qui gère les métadonnées pour les images et toutes sortes d'animations, donc je suis à la recherche d'un moyen de trouver des informations de base sur un fichier d'animation, par exemple:Extraction des informations de base du fichier d'animation

  • longueur (en minutes/secondes/images)
  • rapport d'aspect des pixels
  • résolution des images individuelles
  • framerate

R ight maintenant, je laisse exécuter mon programme

mplayer -identify animfile.avi 

et sa sortie parse console, qui contient toutes les informations dont j'ai besoin dans un format lisible par machine. Cela fonctionne bien, mais je sais que certains utilisateurs potentiels du programme préfèrent vlc en tant que lecteur multimédia, donc je préfère éviter d'avoir une forte dépendance à l'installation de mplayer.

J'ai essayé

vlc -vv animfile.avi 

qui imprime une quantité de ferraille sur ungodly la console, contenant parfois des choses que je suis à la recherche. Le formatage et les données imprimées semblent varier en fonction du format de fichier de l'animation. Existe-t-il un moyen plus simple d'extraire les informations de base d'une animation de n'importe quel format pour lequel on a un décodeur (en particulier la longueur de l'animation) en utilisant vlc ou une autre application/bibliothèque habituellement disponible sur une installation Linux typique?

Edit: Je préfère utiliser un autre programme pour faire le sale boulot, comme cela est censé fonctionner pour tout format d'animation, par exemple AVI, MPG, mov, wmv, vob etc.

Edit: TOTEM- video-indexer semble plus prometteur, et a également été inclus avec l'installation standard. Assez codecs pour le rendre utile, cependant, ne l'était pas. Cela pourrait être corrigé en installant le paquet "non-free-codecs" de medibuntu.

Répondre

1

La sortie de totem-video-indexer est très facile à analyser:

TOTEM_INFO_DURATION=5217 
TOTEM_INFO_HAS_VIDEO=True 
TOTEM_INFO_VIDEO_WIDTH=720 
TOTEM_INFO_VIDEO_HEIGHT=480 
TOTEM_INFO_VIDEO_CODEC=XVID MPEG-4 
TOTEM_INFO_FPS=30 
TOTEM_INFO_HAS_AUDIO=True 
TOTEM_INFO_AUDIO_BITRATE=50 
TOTEM_INFO_AUDIO_CODEC=MPEG 1 Audio, Layer 3 (MP3) 
TOTEM_INFO_AUDIO_SAMPLE_RATE=48000 
TOTEM_INFO_AUDIO_CHANNELS=Stereo 
-1

Ceci est une petite question plus difficile que vous pouvez réaliser. Le format de fichier AVI a augmenté au fil du temps, et a souvent presque la même information dans deux ou trois endroits différents. Dans certains cas, ils sont vraiment supposés être d'accord (mais parfois non) et dans d'autres, ils sont subtilement différents. Par exemple, vous avez demandé à propos de la largeur et de la hauteur. Il existe en réalité quatre spécifications de largeur/hauteur différentes pour une seule image: la largeur/hauteur de l'écran, la largeur/hauteur du pixel (dont vous dérivez le format), la largeur/hauteur active et la largeur/hauteur compressée. La largeur et la hauteur du cadre correspondent à la taille (théorique) de l'écran. La largeur/hauteur active exclut la zone de surbalayage. La largeur/hauteur comprimée prend en compte l'arrondi - par exemple, les compressions JPEG en blocs de 8x8 pixels, de sorte que la largeur et la hauteur comprimées doivent être des multiples de 8 pour un fichier JPEG animé. La largeur/hauteur active vous indique si (par exemple) certains pixels de la bordure doivent être ignorés.

Dans tous les cas, puisque votre question est marquée C++, je vais deviner que vous préférez lire le fichier et obtenir les données directement que de dépendre de quelque chose d'autre pour faire le sale boulot.Si oui, vous voulez probablement regarder le OpenDML AVI file spec. Vous pouvez obtenir au moins une idée de la longueur, de la résolution et du framerate simplement en lisant l'en-tête AVI de base, qui est dans un point fixe au début du fichier, de sorte que beaucoup est trivial à obtenir. Cela prendra un peu plus de travail pour arriver au rapport d'aspect de pixel cependant ...

-1

mediainfo est un programme assez utile. C'est LGPL, et est juste une interface pour libmediainfo, qui devrait être exactement ce que vous voulez.

http://mediainfo.sf.net/

Questions connexes