Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Convertir une vidéo ogv en flv : est-ce correct de faire ainsi ?

23 réponses
Avatar
Francois
Bonjour à tous,

J'ai une vidéo au format ogv qui dure 5mn30 et qui fait 5,7 Mo. Je
souhaite la convertir au format flv pour la mettre sur un site web.
Voici la commande que je tape :

ffmpeg -i MaVideo.ogv -ar 22050 -ab 32 -f flv -s 320x240 MaVideo.flv

En fait, même avec les pages man, les options sont un peu floues pour
moi et je dois reconnaître que j'ai honteusement copié cette commande
quelque part sur le net.

Est-ce correct de s'y prendre ainsi ? Je pose la question car je suis
étonné du changement de taille en octet entre MaVideo.ogv et
MaVideo.flv. Jugez plutôt :

MaVideo.ogv = 5.7 Mo
MaVideo.flv = 15.4 Mo

Donc la vidéo flv 3 fois plus grosse que celle en ogv. Je m'y prends mal
dans ma conversion ? C'est normal ? Je croyais que les vidéos au format
flv étaient censées être assez légères, non ? Pouvez vous éclairer ma
lanterne ?

Merci d'avance.


--
François

3 réponses

1 2 3
Avatar
Francois
YBM a écrit :

Là vu que tu me parles de bibliothèque (lib*), ce n'est pas plutôt
--prefix=/usr/local/lib qu'il faut passer en argument ? Si on met
--prefix=/usr/local pourquoi aurait-on besoin de /usr/local/lib ?



Non, --prefix=/usr/local, en tout cas pour un configure habituel
issu de GNU autoconf, ça fait installer les bibliothèques dans
/usr/local/lib, les exécutables dans /usr/local/bin, etc. C'est
bien pour ça que l'option est "prefix" et non un truc comme
"install_dir".



Ah je vois. Je tente une comparaison avec ce que je connais déjà, à
savoir LaTeX. Avec LaTeX, il y a ce qu'on appelle la TDS (TeX Directory
Structure). C'est le nom qu'on utilise pour parler de l'arborescence
standard. En gros, c'est une arborescence standard pour mettre justement
l'ensemble des packages LaTeX. On a une TDS dans quelque par dans son
système, mais on peut s'en faire une dans son $HOME avec des packages
pas encore pris en charge par la distrib. C'est un peu pareil pour les
package Linux. Par exemple, si je mets "--prefix=/home/francois/local",
linux va me créer les répertoires /home/francois/local/bin et
/home/francois/local/lib et me mettre tous les fichiers dedans, C'est ça ?


Et à quoi correspond ce fichier /etc/ld.so.conf ?



La liste des endroits ou le chargeur de binaires dynamique
(ld.so) va chercher les bibliothèques dynamiques. Modifier
ce fichier va marcher à court terme, à long terme si tu
installes beaucoup de bibliothèques dans /usr/local sans
trop contrôler ce que tu faits est une source d'ennuis
sans fin : tôt ou tard un binaire de /usr/bin (donc issu
d'un paquet de ta distribution) va se mettre à utiliser
une dll de /usr/local/lib au lieu de celle que le système
de paquet a mis dans /usr/bin.



Ok.


D)
Pourquoi est-ce que les packages qu'on installe "à la main" (par
compilation), on les met dans /usr/local. Par exemple, chez moi, j'ai
un répertoire ~/bin que j'ai mis dans le PATH pour mon compte seulement.



Tu pourrais parfaitement installer des logiciels dans ton répertoire
personnels (--prefix=/home/local par exemple), quitte à modifier ton
PATH perso ainsi que ton LD_LIBRARY_PATH. Tout compte fait ce serait
moins casse gueule que de jouer avec ld.so.conf.



Ok, mais pourquoi il faut que ce soit "--prefix=/home/local". Ce n'est
pas plutôt "--prefix=/home/francois/local" (dans mon cas) ? Et pourquoi
à chaque fois il y a ce "local" ? C'est une tradition, ou l'installation
d'un package par compilation doit forcément se trouver dans un
répertoire ayant pour nom "local" (pour respecter ce que je comparais à
la "TDS" en LaTeX) ? On ne pourrais pas faire
"--prefix=/home/francois/mesPackages" par exemple ?


Autre question : mettons que j'ai installé un package dans
/home/francois/local. Comment on le désinstalle-t-on ?


Merci pour ton aide YBM.


--
François
Avatar
Luc.Habert.00__arjf
Francois :

A)
En gros, si j'ai bien compris, pour un package donné, appelons le "pkg",
si on veut l'installer dans /usr/local/, il faut (en gros) :

1) télécharger les sources pkg.tar.gz sur son bureau
2) taper : tar xvzf pkg.tar.gz
3) taper : cd ~/Bureau/pkg
4) taper : ./configure --prefix=/usr/local
5) taper : make
6) taper : make install

Est-ce juste ?



Oui, modulo le problème des droits dont j'ai parlé. Note aussi qu'il y a des
programmes qui ne se compilent pas ainsi, même si il deviennent assez rare.
Normalement, il y a un fichier au nom explicite (README ou INSTALL) qui
explique comment procéder.

B)
Quand on procède comme dans A, linux met-il des fichiers uniquement dans
/usr/local/pkg ou il met d'autres fichier un peu ailleurs dans
l'arborescence ? (genre windows qui fait des trucs ici ou là en douce).



Ce n'est pas linux qui met des fichiers. C'est le programme make, qui
inteprète un programme situé dans le fichier nommé Makefile. Si ce fichier
est bien fait, il va tout mettre sous le préfixe que tu as passé en
argument, mais on n'est jamais à l'abri d'un bug. D'où la solution que je te
proposais de tout chowner à ton nom sous /usr/local, puis de faire le make
install en ton nom et non pas au nom de root : comme ça, le make install ne
pourra écrire que sous /usr/local et dans ton HOME.

Comme on est pas passé par apt-get, est-ce que l'OS sait quand même
qu'on a installé le package avec telle version ? Par exemple si je n'ai
jamais installé ffmpeg avant (via apt-get) et que je fais la
compilation/installation de ffmpeg que tu m'as expliquées, est-ce que
apt-get saura que ffmpeg est installé ou il n'en saura rien si bien que
le ffmpeg ne sera pris en compte pour les mises à jour ?

En fait, bien sûr ffmpeg est déjà installé sur mon PC, donc j'aurais
deux ffmpeg finalement, l'ancien et le nouveau fraîchement compilé dans
/usr/local. Et pour les mises à jour ? Qui sera mis à jour ? D'ailleurs
quand je taperai ffmpeg, c'est l'ancien qui va être lancé, non ?



En gros, apt-get (plus précisément, dpkg) fait comme si /usr/local
n'existait pas. Donc dpkg fait sa tambouille en dehors de /usr/local, et toi
tu fais la tienne dans /usr/local, les deux n'interfèrent pas. Il y a
seulement des interférences à l'exécution :
- la recherche des bibliothèques dynamiques : si tu mets /usr/local/lib dans
le ld.so.conf, les binaires de /usr/bin peuvent y charger des libs
- la recherche des exécutables (le point que tu soulèves) : c'est réglé par
la variable d'environnement PATH, qui contient une liste de répertoires
séparés par des « : », tu peux voir ton PATH en tapant « echo $PATH » dans
un shell. Si tu as dedans /usr/local/bin avant /usr/bin, alors les
exécutables seront cherchés en priorité dans /usr/local/bin, donc en tapant
« ffmpeg », tu obtiendras /usr/local/bin/ffmpeg et non /usr/bin/ffmpeg.
Sinon, il faut modifier ça. Pour faire simple, disons qu'il faut que tu
édites ton fichier .bashrc pour mettre dedans « PATH=/usr/local/bin:$PATH ».

Là vu que tu me parles de bibliothèque (lib*), ce n'est pas plutôt
--prefix=/usr/local/lib qu'il faut passer en argument ? Si on met
--prefix=/usr/local pourquoi aurait-on besoin de /usr/local/lib ?



Non. Si le make install n'est pas trop buggué, il met les libs dans le
sous-répertoire « lib » du préfixe indiqué. D'ailleurs, ces packages ne
contiennent pas uniquement des libs. Certains fournissent aussi un programme
utilisant la lib, des pages de man, et tous fournissent des fichier .h (qui
permettent de compiler des programmes utilisant les libs du package).

Et à quoi correspond ce fichier /etc/ld.so.conf ?



Il indique les répertoires dans lesquels le système doit chercher les libs
dynamique lors de l'exécution des programmes. Au fait, j'ai oublié un truc,
le chargeur des libs dynamique utilise en fait une base de données des libs
disponibles plutôt que de lire tous les répertoires à chaque fois. Donc
quand tu installes une lib à la main, il faut taper ldconfig en tant que
root pour lui faire rebatir sa bdd.

Pourquoi est-ce que les packages qu'on installe "à la main" (par
compilation), on les met dans /usr/local. Par exemple, chez moi, j'ai un
répertoire ~/bin que j'ai mis dans le PATH pour mon compte seulement. Il
contient des pauvres petits scripts bash qui me servent quand je fais du
LaTeX. Serait-ce envisageable d'y installer un package (comme ffmpeg par
exemple) plutôt que dans /usr/local ? Quitte à mettre de la pagaille, je
préfère que ce soit dans mon HOME, non ?



Si tu veux. Si tu es le seul utilisateur de la machine, ça revient un peu au
même, mais si tu as d'autres utilisateurs, tu peux leur en faire profiter
plus facilement en le mettant dans /usr/local/bin.

Si tu installes chez toi (mettons avec --prefix=$HOME/packages (préférable à
$HOME, tu ne sais pas trop ce que le make install va écrire, ça pourrait
interférer avec tes trucs)), il vaut mieux éviter de mettre
$HOME/packages/lib dans le ld.so.conf. À la place, tu peux utiliser la
variable d'environnement LD_LIBRARY_PATH, et mettre

LD_LIBRARY_PATH=$HOME/lib:
export LD_LIBRARY_PATH

dans ton .bashrc. N'oublie pas le « : » au bout de la ligne.
Avatar
pehache-tolai
"Fabien LE LEZ" a écrit dans le message de
news:


Ce que je voulais dire, c'est : ton script de compilation de ffmpeg,
n'y a-t-il pas moyen de le mettre sur un serveur quelconque, pour
pondre un nouveau binaire tous les jours (ou à chaque mise à jour de
ffmpeg) ?



Pour ffmpeg on trouve (à peu près) ça mais pour les binaires windows :
http://tripp.arrozcru.org/
ou
http://ffmpeg.arrozcru.org/builds/

peut-être juste avec un coup de Wine c'est bon ?

--
pehache
http://pehache.free.fr/public.html
1 2 3