1 votes

ffmpeg - vidéo à partir d'une seule image avec des superpositions vidéo (multiples)

J'utilise la commande ffmpeg suivante pour générer une vidéo (15s) à partir d'une seule image

ffmpeg -loop 1 -i image.png -c:v libx264 -t 15 -pix_fmt yuv420p -vf scale=1280:720 out.mp4

La deuxième commande prend la vidéo/a et ajoute plusieurs superpositions vidéo.

ffmpeg -i movie.m4v -vf "movie=movie.m4v, scale=140:-1[inner]; movie=movie.m4v, scale=100:-1[inner2]; [in][inner] overlay=70:70 [step1]; [step1][inner2] overlay=300:70 [out]" out.mp4

Quelqu'un sait-il comment combiner ces deux lignes en une seule commande ?

4voto

llogan Points 50040

Vidéo uniquement

Vous pouvez utiliser un seul filtre graphique pour tous les filtrages.

ffmpeg -loop 1 -i image0.png -i video1.m4v -i video2.m4v -filter_complex \
"[0:v]scale=1280:-2[bg]; \
 [1:v]scale=140:-1,setpts=PTS-STARTPTS[fg1]; \
 [2:v]scale=100:-1,setpts=PTS-STARTPTS[fg2]; \
 [bg][fg1]overlay=70:70:shortest=1[ol]; \
 [ol][fg2]overlay=300:70,format=yuv420p[v]" \
-map "[v]" -movflags +faststart output.mp4
  • En movie le filtre de source multimédia n'est pas nécessaire.

  • setpts réinitialisera l'horodatage, de sorte qu'il fonctionne mieux avec overlay .

  • Notez que les shortest=1 dans l'un des filtres de superposition. Dans le cas contraire, l'entrée de l'image tournera en boucle à l'infini. Vous pouvez également utiliser la fonction trim sur l'image d'entrée.

  • L'action "fin de dossier" de overlay peut être modifiée à l'aide de eof_action .

  • En format filtre définira le sous-échantillonnage chromatique compatible avec QuickTime et d'autres lecteurs de mauvaise qualité.

  • Lorsque l'encodage est terminé -movflags +faststart relocalise certaines données au début du fichier. C'est utile, par exemple, si vous produisez un fichier MP4 et que vos spectateurs le regarderont par téléchargement progressif, par exemple à partir d'un navigateur.

Avec audio

Supposons que les deux vidéos aient un son stéréo et que vous souhaitiez combiner le son de chaque vidéo en une seule sortie stéréo.

Exemple 1

enter image description here

Cet exemple placera les deux canaux d'entrée gauche dans le canal de sortie gauche et les deux canaux d'entrée droite dans le canal de sortie droite.

ffmpeg -loop 1 -i image0.png -i video1.m4v -i video2.m4v -filter_complex \
"[0:v]scale=1280:-2[bg]; \
 [1:v]scale=140:-1,setpts=PTS-STARTPTS[fg1]; \
 [2:v]scale=100:-1,setpts=PTS-STARTPTS[fg2]; \
 [bg][fg1]overlay=70:70:shortest=1[ol]; \
 [ol][fg2]overlay=300:70,format=yuv420p[v]; \
 [1:a][2:a]amerge[a]" \
-map "[v]" -map "[a]" -ac 2 -movflags +faststart output.mp4

Exemple 2

enter image description here

Cet exemple placera les deux canaux de la première entrée dans le canal gauche de la sortie, et les deux canaux de la deuxième entrée dans le canal droit de la sortie.

ffmpeg -loop 1 -i image0.png -i video1.m4v -i video2.m4v -filter_complex \
"[0:v]scale=1280:-2[bg]; \
 [1:v]scale=140:-1,setpts=PTS-STARTPTS[fg1]; \
 [2:v]scale=100:-1,setpts=PTS-STARTPTS[fg2]; \
 [bg][fg1]overlay=70:70:shortest=1[ol]; \
 [ol][fg2]overlay=300:70,format=yuv420p[v]; \
 [1:a][2:a]amerge,pan=stereo|c0<c0+c2|c1<c1+c3[a]" \
-map "[v]" -map "[a]" -movflags +faststart output.mp4

Exemple 3

Si vous ne voulez que l'audio d'une entrée, il vous suffit d'ajouter une entrée -map dans l'exemple vidéo ci-dessus (il n'est pas nécessaire d'utiliser l'option amerge y pan ):

-map 1:a -c:a copy

Voir aussi

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X