bonjour,
je cherche à "accélérer" la lecture d'une vidéo en l'affichant sous la forme d'une mosaïque 4x4 avec, dans le premier quart visuel le premier quart temps, dans le deuxième quart visuel le deuxième quart temps, etc…
je n'ai pas trouvé comment faire côté fenêtre (openbox), c'est à dire lancer quatre fois le lecteur vidéo (ffplay) en ayant les quatre fenêtres regroupées comme je le souhaite et surtout "collées" les unes aux autres…
je me suis retourné sur ffmpeg qui permet de créer une mosaïque à partir de plusieurs sources (wiki) et j'ai codé ce petit script qui fonctionne sans encombre :
#!/usr/bin/env bash
[ ! "$1" ] && echo "usage: $0 file" >/dev/stderr && exit -1
[ ! -f "$1" ] && echo "error: $1 not found" >/dev/stderr && exit -1 || video=${1}
duration=$( ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "${video}" )
duration=${duration%%.*}
[[ ! "${duration}" =~ ^[0-9]+$ ]] && echo "error: no duration for ${video}" >/dev/stderr && exit -1
duration=$((duration/4+1))
rm -f /tmp/.{tl,tr,bl,br,bg}.avi &>/dev/null
! mkfifo /tmp/.{tl,tr,bl,br,bg}.avi && echo "error: can not create named pipe(s)" >/dev/stderr && exit -1
gen="-v error -y -nostdin"
opt="-an -vf scale=400:240 -f mpegts"
ffmpeg ${gen} -ss $((duration*0)) -i "${video}" ${opt} -> /tmp/.tl.avi &
ffmpeg ${gen} -ss $((duration*1)) -i "${video}" ${opt} -> /tmp/.tr.avi &
ffmpeg ${gen} -ss $((duration*2)) -i "${video}" ${opt} -> /tmp/.bl.avi &
ffmpeg ${gen} -ss $((duration*3)) -i "${video}" ${opt} -> /tmp/.br.avi &
ffmpeg ${gen} -i /tmp/.tl.avi -i /tmp/.tr.avi -i /tmp/.bl.avi -i /tmp/.br.avi -filter_complex "
nullsrc=size=800x480 [bg];
[0:v] setpts=PTS-STARTPTS [tl];
[1:v] setpts=PTS-STARTPTS [tr];
[2:v] setpts=PTS-STARTPTS [bl];
[3:v] setpts=PTS-STARTPTS [br];
[bg][tl] overlay=shortest=1 [t1];
[t1][tr] overlay=shortest=1:x=400 [t2];
[t2][bl] overlay=shortest=1:y=240 [t3];
[t3][br] overlay=shortest=1:x=400:y=240
" -f mpegts -> /tmp/.bg.avi &
ffplay -v error -i /tmp/.bg.avi
j'aimerais cependant l'améliorer en allant vers moins de transcodage (ffmpeg) et plus de lecture (ffplay) : cela vous parait-il faisable ? notez au passage que je n'ai aucune place disponible pour passer par des fichiers tampons, ce qui explique l'utilisation des tubes nommés.
merci pour vos retours.
# lire une vidéo en mosaïque
Posté par Pyscal . Évalué à 2.
je suis également preneur si vous avez des pistes concernant l'agencement des quatre fenêtres…
merci pour vos retours.
[^] # Re: lire une vidéo en mosaïque
Posté par chimrod (site web personnel) . Évalué à 3.
N'importe quel WM pouvant faire du tiling peut suffire.
i3 a une option qui te permet de supprimer la bordure de chaque fenêtre :
[^] # Re: lire une vidéo en mosaïque
Posté par Pyscal . Évalué à 2.
j'ai vu ça en grattant un peu les moteurs de recherche mais le gestionnaire de fenêtres utilisé (imposé) est OpenBox.
il y a bien un "Settings for specific windows" à son sujet mais il ne répond pas à mon besoin.
# Je vois pas bien où est le problème
Posté par alouali (site web personnel) . Évalué à 2.
Hello,
si tu lances simplement 4 fois mplayer avec 4 positions différentes ? :
mplayer -geometry 640x512+0+0 tavideo.avi
Par défaut mplayer n'affiche aucun contrôle, et par exemple sous KDE il est très simple de définir une règle pour lui enlever barre de titre et bordures.
HTH
[^] # Re: Je vois pas bien où est le problème
Posté par KiKouN . Évalué à 4.
Il y a l'option "-noborder" pour afficher mplayer sans déco.
[^] # Re: Je vois pas bien où est le problème
Posté par alouali (site web personnel) . Évalué à 2.
Avec ce complément c'est parfait !
[^] # Re: Je vois pas bien où est le problème
Posté par Pyscal . Évalué à 2.
on se rapproche de ce que je souhaite…
j'ai coder ce petit script en me basant sur vos retours :
peut-on "encapsuler" ces quatre fenêtres dans un fenêtre "mère" ?
les options -geometry et -noborder sont en définitif des paramètres d'affichage, donc liés à Xorg : peut-on faire de même avec le lecteur ffplay ?
[^] # Re: Je vois pas bien où est le problème
Posté par Pyscal . Évalué à 2.
je viens de mettre le cap sur mpv qui me semble très prometteur : il permet d'embarquer une vidéo dans sa propre interface graphique et fournit un exemple d'intégration qui peut servir de base…
[^] # Re: Je vois pas bien où est le problème
Posté par Pyscal . Évalué à 1.
avec mpv ça donnerait à peu près ça :
concernant l'exemple, ce serait cool si quelqu'un pouvait gratter un peu…
[^] # Re: Je vois pas bien où est le problème
Posté par Pyscal . Évalué à 1.
en bricolant un peu avec Xvfb, x11vnc et mpv, j'obtiens le résultat escompté :
et voici le petit script qui fait le boulot :
est-il possible de "récupérer" le DISPLAY :1 sans avoir à lancer un serveur vnc dessus ?
[^] # Re: Je vois pas bien où est le problème
Posté par NeoX . Évalué à 2.
je dirais que c'est faisable en faisant Ctrl+Alt+F8 (F7 etant le display :0 habituel)
mais du coup tu perds le gestionnaire de fenetre et les applis courantes.
# je préfère le visionnage normal
Posté par Patrick789 . Évalué à 0.
Lire une vidéo en mosaique c’est-à-dire sous forme de petits carrés ; je ne sais pas si c’est possible autant t’appuyer sur l’avis d’un pro.
Pour ma part je préfère le visionnage normal ; rien de mieux pour profiter pleinement de ma vidéo ; j’imagine mal regarder un clip ou un film en mosaique ; l’image devient toute petite, on voit à peine.
Mais si tu souhaites vraiment le faire : « je viens de mettre le cap sur mpv qui me semble très prometteur : il permet d'embarquer une vidéo dans sa propre interface graphique et fournit un exemple d'intégration qui peut servir de base… » ; ce commentaire en dit long.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.