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

Extraire des images d'une video toutes les minutes

9 réponses
Avatar
Franssoa
Bonjour,

J'enregistre des émissions et films par vdr. Je coupe ensuite les pubs
et recadre le début et la fin avec avconv. Le problème est que si le
début et la fin de sont pas trop dur à trouver par tâtonnement, les
pubs n'étant jamais placées aux mêmes endroits obligent à quasiment se
taper tout le film pour les repérer.

Donc je voudrais créer une planche contact de l'enregistrement avec une
image par minute, ce qui m'aidera à repérer les pubs. Hors avec avconv,
je n'ai pas réussi à lui demander d'extraire une image par minute (je
peux le programmer, mais si c'est déjà fait...).

Une petite idée ?

franssoa

9 réponses

Avatar
jp willm
Le 22/04/2013 13:58, Franssoa a écrit :
Bonjour,

J'enregistre des émissions et films par vdr. Je coupe ensuite les pubs
et recadre le début et la fin avec avconv. Le problème est que si le
début et la fin de sont pas trop dur à trouver par tâtonnement, les pubs
n'étant jamais placées aux mêmes endroits obligent à quasiment se taper
tout le film pour les repérer.

Donc je voudrais créer une planche contact de l'enregistrement avec une
image par minute, ce qui m'aidera à repérer les pubs. Hors avec avconv,
je n'ai pas réussi à lui demander d'extraire une image par minute (je
peux le programmer, mais si c'est déjà fait...).

Une petite idée ?




Pas trop d'idée.

A part celle-ci :
Avec dvbcut, tu peux balayer la vidéo à l'aide des flèches gauche/droite
(= saut de 1 minute).

Le positionnement dans la vidéo est très rapide grâce à deux curseurs
très bien faits.

Après avoir placé tes marqueurs début/fin, tu peux exporter (E).


@+ jp willm


--
http://perso.orange.fr/willms/index.html
Avatar
Nicolas George
Franssoa , dans le message <kl38gb$fcn$, a écrit :
J'enregistre des émissions et films par vdr. Je coupe ensuite les pubs
et recadre le début et la fin avec avconv.



avconv est un fork de ffmpeg qui, depuis qu'il existe, s'est retrouvé très
largement en retard, tout particulièrement du point de vue des filtres (et
aussi de la gestion des sous-titres).

A contrario, toutes les améliorations à avconv sont importées dans ffmpeg,
en général quotidiennement.

Donc je voudrais créer une planche contact de l'enregistrement avec une
image par minute, ce qui m'aidera à repérer les pubs. Hors avec avconv,
je n'ai pas réussi à lui demander d'extraire une image par minute (je
peux le programmer, mais si c'est déjà fait...).



Avec avconv et ffmpeg, extraire une image par minute se fait tout simplement
en produisant une vidéo dans des fichiers séparés avec 1/60 image par
seconde :

ffmpeg -i video -r 1/60 image%06d.png

En revanche, ffmpeg peut faire tout d'un coup, en utilisant le filtre tile :

http://ffmpeg.org/ffmpeg-filters.html#tile

Donc ça donnera quelque chose comme :

... -vf fps=fps=1/60,scale8:72,tile=8x8

Avec le filtre drawtext, tu peux demander d'incruster les informations dont
tu as besoin dans la vignette, ne serait-ce que le temps.

Tu peux aussi jeter un coup d'oeil à la sortie de « -af ebur128 », qui
mesure le son : les pubs sont souvent mixées à un volume plus élevé, ça peut
être significatif.

Ni tile ni ebur128 n'existent dans avconv, et sa version de drawtext ne sait
pas insérer des informations intéressantes, que du texte constant ou
presque.
Avatar
Franssoa
Le 22/04/2013 17:44, Nicolas George a écrit :
Franssoa , dans le message <kl38gb$fcn$, a écrit :
J'enregistre des émissions et films par vdr. Je coupe ensuite les pubs
et recadre le début et la fin avec avconv.



avconv est un fork de ffmpeg qui, depuis qu'il existe, s'est retrouvé très
largement en retard, tout particulièrement du point de vue des filtres (et
aussi de la gestion des sous-titres).

A contrario, toutes les améliorations à avconv sont importées dans ffmpeg,
en général quotidiennement.



Ah, ben zut alors. Moi qui utilisait avconv à la place de ffmpeg parce
que je me faisait injurier par ffmpeg à chaque fois :

$ ffmpeg
ffmpeg version 0.8.6-6:0.8.6-0ubuntu0.12.10.1, Copyright (c) 2000-2013
the Libav developers
built on Apr 2 2013 17:07:34 with gcc 4.7.2
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a
future release. Please use avconv instead.


(...)
ffmpeg -i video -r 1/60 image%06d.png


Ça, ça marche. C'est ce que j'avais voulu utiliser avec avconv, mais il
ne prennais pas un -r si bas. Par contre c'est assez long (sur mon vieux PC)
$ time ffmpeg -i 00001.ts -ss 00:00:00 -t 00:05:00 -r 1/60 a%04d.png

real 6m37.368s

En revanche, ffmpeg peut faire tout d'un coup, en utilisant le filtre tile :
http://ffmpeg.org/ffmpeg-filters.html#tile
Donc ça donnera quelque chose comme :
... -vf fps=fps=1/60,scale8:72,tile=8x8


Ben par contre ça il n'en veux pas : No such filter: 'tile'

feanssoa
Avatar
Nicolas George
Franssoa , dans le message <kl42hm$cfu$, a écrit :
Ah, ben zut alors. Moi qui utilisait avconv à la place de ffmpeg parce
que je me faisait injurier par ffmpeg à chaque fois :

$ ffmpeg
ffmpeg version 0.8.6-6:0.8.6-0ubuntu0.12.10.1, Copyright (c) 2000-2013
the Libav developers
built on Apr 2 2013 17:07:34 with gcc 4.7.2
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a
future release. Please use avconv instead.



Oui, c'est de la désinformation menée par les auteurs d'avconv. Manque de
chance, les mainteneurs multimédia chez Debian / Ubuntu (et Gentoo aussi)
sont dans le camp d'avconv. Il faudrait que les utilisateurs râlent, il
n'est pas normal qu'un mainteneur impose un logiciel techniquement inférieur
parce qu'il s'est engueulé avec le chef de projet.

Ça, ça marche. C'est ce que j'avais voulu utiliser avec avconv, mais il
ne prennais pas un -r si bas. Par contre c'est assez long (sur mon vieux PC)
$ time ffmpeg -i 00001.ts -ss 00:00:00 -t 00:05:00 -r 1/60 a%04d.png



Ça décode la totalité du fichier. Il y a moyen d'aller plus vite en
bricolant pour ne garder que les keyframes.

Ben par contre ça il n'en veux pas : No such filter: 'tile'



Soit tu as un vrai ffmpeg trop vieux, soit tu as un faux ffmpeg qui est un
avconv déguisé pour désinformer.

ffmpeg est assez facile à compiler. Si on veut avoir une version vraiment
utile, il faut juste installer tout plein de paquets de développement et
activer les bibliothèques correspondantes sur la ligne de configuration. Tu
peux t'inspirer de la bannière affichée par défaut.
Avatar
Damien Wyart
> Ça, ça marche. C'est ce que j'avais voulu utiliser avec avconv, mais
> il ne prennais pas un -r si bas. Par contre c'est assez long (sur
> mon vieux PC) $ time ffmpeg -i 00001.ts -ss 00:00:00 -t 00:05:00 -r
> 1/60 a%04d.png



* Nicolas George <nicolas$ in fr.comp.os.linux.configuration:
Ça décode la totalité du fichier. Il y a moyen d'aller plus vite en
bricolant pour ne garder que les keyframes.



Par curiosité, je veux bien que tu en dises un peu plus.

ffmpeg est assez facile à compiler. Si on veut avoir une version
vraiment utile, il faut juste installer tout plein de paquets de
développement et activer les bibliothèques correspondantes sur la
ligne de configuration. Tu peux t'inspirer de la bannière affichée par
défaut.



Sinon, l'installer depuis les dépôts deb-multimedia ? Il me semble qu'il
s'agit d'une version assez récente (même s'il ne s'agit pas d'un
instantané mis à jour quotidiennement, ce qui est mieux pour avoir les
toutes dernières évolutions).

--
DW
Avatar
wr35nn89
Le 22/04/2013 13:58, Franssoa a écrit :
Bonjour,

J'enregistre des émissions et films par vdr. Je coupe ensuite les pubs
et recadre le début et la fin avec avconv. Le problème est que si le
début et la fin de sont pas trop dur à trouver par tâtonnement, les pubs
n'étant jamais placées aux mêmes endroits obligent à quasiment se taper
tout le film pour les repérer.

Donc je voudrais créer une planche contact de l'enregistrement avec une
image par minute, ce qui m'aidera à repérer les pubs. Hors avec avconv,
je n'ai pas réussi à lui demander d'extraire une image par minute (je
peux le programmer, mais si c'est déjà fait...).

Une petite idée ?

franssoa


Pourquoi ne pas utiliser la fonction de découpe de VDR ?
En mode lecture, 0 permet de positionner un pointeur, 4 et 6 permettent
de le repositionner finement. Les touches jaunes et vertes permettent
d'avancer ou de reculer par minute. Rien n'empèche aussi d'utiliser
l'avance rapide.
7 et 9 permettent de revenir au pointeur précédent/suivant, et 2 lance
la découpe. Et tu retrouves ensuite ton fichier tout neuf avec tes
bandes son, tes sous-titres, etc... dans un dossier nommé
%titre_de_l'enregistrement
C'est sur, ça peut prendre 3 ou 4 minutes de découper proprement, mais
je n'ai pas encore trouvé d'outils permettant de faire aussi simple et
rapide.
Avatar
Franssoa
Le 22/04/2013 22:19, wr35nn89 a écrit :
Pourquoi ne pas utiliser la fonction de découpe de VDR ?


C'est que je n'utilise que la partie enregistrement de VDR sur un
serveur sans X. Je découpe actuellement avec avconv en visualisant le
fichier sur mon portable, puis enfin je le lis sur la TV par
l'intermédiaire d'un minidlna sur le serveur.

franssoa
Avatar
Nicolas George
Damien Wyart , dans le message <5175996e$0$2283$,
a écrit :
Par curiosité, je veux bien que tu en dises un peu plus.



Cf. l'exemple dans la doc que j'ai indiquée il y a deux messages.
Essentiellement, « -skip_frame nokey » comme option sur le fichier d'entrée
va lui faire décoder uniquement les keyframes. Ensuite, tous les filtres
qu'on veut pour régler le débit et mettre en forme.

Attention, pour une raison que j'ignore, -skip_frame nokey ne marche pas
avec du H.264. J'espère que ce sera réparé si possible.

Sinon, l'installer depuis les dépôts deb-multimedia ?



Je n'ai jamais essayé ces versions. Je n'ai pas confiance en les dépôts
tiers pour se tenir systématiquement à jour vis-à-vis de la distribution
elle-même (et, par exemple, ne pas bloquer une mise à jour de sécurité à
cause d'une dépendance moisie), donc je n'en utilise pas.
Avatar
Franssoa
Le 22/04/2013 21:23, Franssoa a écrit :
Par contre c'est assez long (sur mon vieux PC) $ time ffmpeg -i
00001.ts -ss 00:00:00 -t 00:05:00 -r 1/60 a%04d.png

real 6m37.368s




Bon, je suis passé par mplayer et c'est plutôt mieux :

#! /bin/sh
# planche.sh : création d'une planche contact à partir d'une vidéo
# en prennant une image par minute
mplayer -benchmark -nosound -quiet -zoom -vf scale20:-3 -vo
jpeg:outdir=/tmp -sstep 60 "$1"
montage -label '%f' -geometry '+6+6>' -pointsize 24 -tile 5x /tmp/0*.jpg
"$1.jpg"

Avec un film de 1h17 en HD :
time ./planche.sh monfilm.ts
real 0m7.507s

Planche de contact dans monfilm.ts.jpg, on retrouve facilement
l'emplacement dans le film par le nom du fichier 00000063.jpgcmn=1h03mn

franssoa