Comment puis-je redimensionner une superposition au sein d'un complexe de filtres ffmpeg?

2

Je voudrais appliquer un PNG recouvrir (filigrane) sur un fichier vidéo arbitraire à l’aide de ffmpeg. J'aimerais que la vidéo conserve sa taille d'origine (que je ne connaissais pas à l'avance), et que le fichier PNG soit conservé. escaladé par rapport à la vidéo.

Par exemple, la commande suivante place la superposition en haut à gauche:

ffmpeg.exe -i input.mov -i header.png -filter_complex \
    "[0][1] overlay=0:0" output.mkv

Et la commande suivante redimensionne la superposition par rapport à elle-même (1/5 de la largeur, hauteur relative):

ffmpeg.exe -i input.mov -i header.png -filter_complex \
    "[1] scale=iw/5:-1 [scaled]; \
    [0][scaled] overlay=0:0" output.mkv

Comment pourrais-je faire la superposition 1/5 de la largeur de input.mov? (Par exemple, est-il possible de stocker et / ou d'interroger la largeur d'une autre clause de filtre?)

La question la plus proche que j'ai rencontrée est Échelle de superposition de filigrane par taille vidéo avec ffmpeg mais cette réponse utilise des commandes externes Linux / Cygwin. Filigrane FFmpeg était également utile pendant que je réalisais ffmpeg. Cependant, je suis sous Windows et j'appelle ffmpeg via Python. J'aimerais donc tout faire dans la clause filter_complex. Si ce n'est pas possible, j'aimerais bien savoir si je peux arrêter d'essayer :)

d3vid
la source

Réponses:

3

Mon approche serait deux commandes distinctes, une pour calculer les dimensions et une autre pour superposer. Vous pouvez simplement utiliser FFprobe qui vient avec FFmpeg. Pour calculer les dimensions, vous pouvez utiliser la commande suivante.

ffprobe -v error -show_entries stream=width,height -of default=noprint_wrappers=1 input_video

Cela donnera comme suit.

largeur = 1280

hauteur = 720

Une fois que vous pouvez faire le calcul que vous voulez et l'appliquer à votre commande de superposition. Également ici y a quelques autres options pour la mise à l'échelle.

J'espère que cela t'aides!

Chamath
la source