URL: https://linuxfr.org/forums/linux-general/posts/lire-une-video-en-mosaique Title: lire une vidéo en mosaïque Authors: Pyscal Date: 2015年11月22日T10:00:36+01:00 License: CC By-SA Tags: vidéo et ffmpeg Score: 5 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 : ```bash #!/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.

AltStyle によって変換されたページ (->オリジナル) /