Accueil > Jean Cartier’s Blog > FFMpeg > FFMpeg : dis-moi tout !

FFMpeg : dis-moi tout !

mardi 11 septembre 2007, par administrateur

Ah ouais, comme je vois que les visites tournent principalement autour de ffmpeg (bande de techos...), un petit billet sur : Comment obtenir des infos sur une vidéo grace àffmpeg.

Bon, on le sait, ffmpeg permet de connaitre plein de chose sur sa vidéo grâce àla commande :
- ffmpeg -i monfichiervideo

Mais c’est quoi tout ce charabias ?

ffmpeg -i monfichier.avi
FFmpeg version SVN-rUNKNOWN, Copyright (c) 2000-2004 Fabrice Bellard
 configuration:  --enable-gpl --enable-pp --enable-pthreads --enable-vorbis --enable-libogg --enable-a52 --enable-dts --enable-libgsm --enable-dc1394 --disable-debug --enable-shared --prefix=/usr
 libavutil version: 0d.49.0.0
 libavcodec version: 0d.51.11.0
 libavformat version: 0d.50.5.0
 built on Jan 28 2007 22:48:38, gcc: 4.1.2 20070106 (prerelease) (Ubuntu 4.1.1-21ubuntu7)
Input #0, avi, from 'monfichier.avi':
 Duration: 00:19:53.1, start: 0.000000, bitrate: 1297 kb/s
 Stream #0.0: Video: mpeg4, yuv420p, 512x288, 29.98 fps(r)
 Stream #0.1: Audio: mp3, 48000 Hz, stereo, 96 kb/s
Must supply at least one output file

La seule chose qui nous intéresse c’est partir de :

Input #0, avi, from 'monfichier.avi':
 Duration: 00:19:53.1, start: 0.000000, bitrate: 1297 kb/s
 Stream #0.0: Video: mpeg4, yuv420p, 512x288, 29.98 fps(r)
 Stream #0.1: Audio: mp3, 48000 Hz, stereo, 96 kb/s

Tout le reste est du blabla pour dire qui l’a compilé, avec quelle config, ...

Bon alors, qu’est ce que ça nous dit ?

Input #0, avi, from 'monfichier.avi':

Que le premier flux est de type avi (un conteneur vidéo).

 Duration: 00:19:53.1, start: 0.000000, bitrate: 1297 kb/s

Que la durée de la vidéo est de 19 minutes 53 secondes et une image, que la lecture commence àla première image et que le bitrate est de 1M297 par seconde.

 Stream #0.0: Video: mpeg4, yuv420p, 512x288, 29.98 fps(r)

Qu’il y a deux flux, le premier étant un flux vidéo encodé en mpeg4 yuv420p, que la taille de l’image est de 512 pixels sur 288 pixels et que la cadence des images est de 29,98 images par seconde.

 Stream #0.1: Audio: mp3, 48000 Hz, stereo, 96 kb/s

Que le second flux est de type audio encodé en mp3 en 48 KHz, en stéréo avec un débit de 96 kbits par seconde.

Et ben voilà, on sait tout...

Mais ce n’est pas parce que ffmpeg a la faveur des internautes du site qu’il n’y aura que des billets aussi techniques...


- Automatiser FFMpeg
- FFMpeg : dis-moi tout !
- FFmpeg - la vidéo expliquée
- FFMpeg par l’exemple

Messages

  • Bonjours,

    Je voudrais savoir si c’était possible de recupérer seulement la resolution de la video en php.Car j’ai rencontré un probleme, lorsque j’encode certaine video j’ai un message me disant que la taille n’est pas divisible par 2 et donc je voudrais recupérer la taille et l’adapter pour qu’elle soit divisible par 2.

    Voila merci d’avane ;)

  • je cherche un progralle clef sur porte avec les sources qui fait ceci pouvez vous m’aider

    Merci de me repondre par email si vous acceptez de m’aider

    Description système vidéo

    Notre site
    Nous avons un site « portail » qui ouvre les portes à plus de 800 sites individuels.
    Chaque site est codifié avec 2 lettres et 4 chiffres.
    Chaque site traite des sujets différents.

    Les films vidéo
    Les users peuvent nous envoyer des films vidéo de maximum 15 minutes dans des formats différents en fonction de ce dont ils disposent (. Avi, .fla, .wmv, .mpeg etc….) mais aussi des .pps ou .ppt.
     ? Chaque film doit être disponible dans le portail avec une petite photo prise dans le film et son titre.
     ? Chaque film doit être disponible dans le site individuel où le user le destine en nous donnant un titre.

    Nous souhaitons donc avoir un programme qui/ :
     ? Reçoit les films envoyés par nos users.
     ? Convertit automatiquement, à la réception, le film en .fla et .swf pour lire avec flash player. (je ne sais pas ce qui est nécessaire)
     ? Met un petit sigle de notre domaine en surimpression dans le film.
     ? Annule le film reçu par le user dans le format original car cela prend de la place et nous n’en avons pas besoin.
     ? Place le film dans le portail général avec son titre donné par le user avec la date de réception, une petite photo sortie du film.
     ? Place le film dans le site individuel choisit par le user avec le sigle intégré, le titre, la date et la petite photo.
     ? Associe le film au pseudo du user qui l’a envoyée.
    Il nous faut une bonne vision du film, mais le poids ne doit pas être trop élevé et si possible un aspect personnel de flash player. On ne regarde pas le film en plein écran mais dans une fenêtre de 250 x 250 px.

    En administration nous devrions pouvoir
     ? voir tous les films et si ils ne correspondent pas à ce que nous souhaitons,
     ? le refuser ou l’accepter après vision.
    Il faut que nous en voyions la photo, la date, le nom du user, le titre et le code de destination.
    1. Si il y a refus, le film est sorti de partout où il a été mis et un email est envoyé pour prévenir le user. A cet email on devrait pouvoir ajouter une remarque courte.
    2. Si le film est accepté, il est sorti de la liste de contrôle
     ? trier les films par date et lorsque souhaité en sortir du domaine parce que trop ancien.

    Soit vous avez cette solution là…… soit une autre qui peut répondre à ce que nous devrions faire.

    Remarques
     ? Je ne suis pas du tout programmeur mais gestionnaire de sites.
     ? Si pour faire cela il faut que nous ayons un programme spécial qui se lance, il faut que le user voit que c’est notre nom et logo et que ils ne doivent pas télécharger un module externe car cela les gens n’aiment pas.
     ? Voir aussi comment les gens vont pouvoir nous envoyer les films car par email ce n’est pas possible. On peut leur donner un accès au serveur mais pas par ftp.
     ? Il faut aussi que les films ne soient pas téléchargeables.

  • Bonjour DreamLove,

    En fait, c’est un portail avec la gestion des utilisateurs qu’il faut en premier lieu.

    Je ne peux pas trop vous aider, bien que je sois à même de répondre ce genre de demandes.

    ffmpeg peut servir d’outil de transformation des vidéos (non pas en swf ou en fla, mais en flv). C’est d’ailleurs ce que font certaines sociétés de production de films pour téléphones portables.

    Bref, le fonctionnement doit être le suivant :
    - L’utilisateur envoie son fichier (upload en php par exemple avec test du format de fichier via son extension) (1).
    - Le fichier est stocké de façon temporaire sur le serveur (2) qui possède un programme scrutant le répertoire de stockage temporaire (3). Un batch est lancé par le dit programme pour tester le fichier (est-il reconnu par ffmpeg ?) (4) et le transformer en flv (5) en le renommant de manière unique. Une vignette est générée par ffmpeg (6).
    - Le fichier temporaire est effacé (7).
    - Le fichier généré est associé dans la base de données à l’utilisateur, avec le titre fourni par ce dernier (8), ainsi qu’un indicateur marquant qu’il n’est pas validé.
    - Vous avez une interface d’administration qui vous permet de voir tous les fichiers marqués "en attente de validation", et qui vous permet de supprimer un contenu tout en envoyant un email (9), ou d’accepter un contenu (10).

    Pour ce qui est de l’apposition d’un logo, je pense que la solution la plus simple est que cela se fasse lors du visionnage du film par un lecteur flash de fichiers flv. Sinon, les dernières versions de ffmpeg ont des modules permettant d’apposer un logo (watermarking).

    Pour ce qui est des films non téléchargeables, c’est difficile à réaliser, mais cela passe par un codage dans le lecteur des fichiers flv.

    Bref, il vous faut un outil de gestion d’utilisateurs avec un workflow intégrant ffmpeg.

    Cordialement

    Jean CARTIER

  • Bonjour à toi Jean Cartier,

    Dans un premier temps merci pour toutes tes précieuses informations sur FFmpeg et son utilisation, et saurais si il est également possible d’avoir des informations sur les KEYFRAME (genre le nombre de keyframe ou la fréquence des keyframe, une image toutes les 30 secondes) en plus des informations que tu peux récupérer dans ta manipe (plus haut).

    Merci d’avance.

  • Bonjour à toi Fritz,

    On ne peux avoir que le framerate à travers cette commande, c’est à dire le nombre d’images par secondes, mais pas le nombre d’images clé par seconde.

    Et je dois avouer que je ne sais pas trop comment faire, là maintenant, tout de suite.

    A creuser.

    Jean CARTIER

  • Bonjour Jean

    D’abord j’admire la patience et le savoir -faire présents dans ton travail et tes réponses.

    Mon petit projet est lié à l"insertion de son de format mid associé a un gif -animé pour tranformer tout cela en mpeg.

    Je pense que je dois passer par deux instructions (je suis sous linux ubuntu server) :
    ffmpeg -i image.gif video.mpeg

    puis

    ffmpeg -i son.mid video.mpeg video1.mpeg (????)

    Je ne suis pas sur que cela soit juste et la meilleure facon de faire.
    Qu’en penses tu ?

  • Salut Adhoc,

    Il y a plus simple : ffmpeg -i image.gif -i son.mid video.mpeg

    A tester...

    Cordialement

    Jean CARTIER

  • Cher Monsieur,

    J’ai récupéré hier soir un épisode d’une série télé de 25 minutes environ, que je dois transmettre à mon épouse bloquée dans une grande ville avec des horaires impossibles (elle rentre à 22 heures de son travail).
    Le fichier initial, filmé avec un appareil photo face à la télé (défense de rire !) fait un total de 1,6 Go.
    Impossible d’envoyer par messagerie, ni même de le stocker sur un serveur distant (espace de stockage limité).

    Grace à vos conseils et exemples en ligne de commande, j’ai rétréci la bête à 61 Méga seulement. Tout cela en quinze minutes avec un vieux céléron qui chauffe énormément.

    Je vous dis donc UN GRAND MERCI car vos exemples et explications son très bien rédigés et très pédagogiques.

    Merci aussi aux développeurs de ffmpeg, à Debian et au team "Sidux"

    Salutations,

    IGNACIO

  • Bonjour, un grand merci et bravo pour le travail remarquable. J’ai un souci, je n’arrive pas à m’en sortir, malgré les solutions que je trouve sur internet. J’enregistre des séquences avec ma freebox programmée car je ne suis pas toujours là. Je transfère ensuite par ftp les morceaux sur mon mac (os X.10.5.3). Je peux les lire avec vlc (image et son) mais je voudrais les monter avec imovie pour enlever pub et autre, et ensuite graver un cd ou dvd lisible par mon lecteur de salon. Et là, pas moyen d’avoir le tout ; soit imovie prend l’image mais pas le son, soit le résultat est illisible par mon lecteur de salon.

    Un petit coup de main pour paramétrer tout cela s’il vous plaît ?

    Merci infiniment et encore bravo et merci.

    René

  • Bonjour,
    moi j’utilise un formulaire pour permettre l’upload de toute sorte de videos, mais j’aimerais les encoder en flv.
    Comment paramétrer ffmpeg pour accepter tous type de video et l’encoder en .flv à la volée ?
    Merci