Aggiunta di sovrapposizione mentre si esegue il taglio preciso in ffmpeg


0

Ho file video lunghi che vorrei tagliare su data e ora precise e ho anche bisogno di aggiungere filigrana. Prima avevo bisogno di aggiungere watermark ho usato questo comando e ha funzionato benissimo:

ffmpeg -ss 00:00:20.480 -i "INPUT.mp4" -ss 00:00:10.000 -t 00:11:39.960 -c:a copy -c:v libx264 -filter:v "scale=1280:-1" -preset slow -crf 25 "OUTPUT.mp4"

Ma ora ho bisogno di aggiungere filigrana. Ho provato ad usare il filtro overlay (che usa il secondo file di input). Uso il formato file apng per ottenere trasparenza:

ffmpeg -ss 00:01:00.680 -i "INPUT.mp4" -ss 00:00:10.000 -t 00:11:39.759 -i overlay.apng -c:a copy -c:v libx264 -filter_complex "crop=in_w-8:in_h-8,overlay,scale=1280:-1" -preset slow -crf 25 "OUTPUT.mp4"

Sfortunatamente in questo caso ffmpeg ignora il secondo switch -ss. Senza questo interruttore non esiste un taglio preciso. Anche se assegnassi il giusto timestamp al primo switch -ss, ci sarebbe qualche blocco del frame durante la riproduzione dei primi secondi di un file video.

Sono arrivato con una brutta soluzione rapida concatenando due processi ffmpeg, come questo:

ffmpeg -ss 00:00:15.640 -i "INPUT.mp4" -ss 00:00:10.000 -t 00:11:39.800 -c:a copy -c:v huffyuv -f matroska - | ffmpeg -i pipe:0 -i overlay.apng -filter_complex "crop=in_w-8:in_h-8,overlay=y=main_h-overlay_h:x=0,scale=1280:-1" -c:a copy -c:v libx264 -preset slow -crf 25 "OUTPUT.mp4"

In questo caso l'intera performance di codifica diminuisce del 30%.

Il mio obiettivo è di tagliare e aggiungere filigrana nel singolo comando. Per favore aiuto.

Risposte:


1

L'ordine delle opzioni è importante. Vedere https://ffmpeg.org/ffmpeg.html#Description

Uso

ffmpeg -ss 00:01:00.680 -i "INPUT.mp4" -i overlay.apng -ss 00:00:10.000 -t 00:11:39.759
       -filter_complex "[0]crop=in_w-8:in_h-8[a];[a][1]overlay,scale=1280:-1"
       -c:a copy -c:v libx264 -preset slow -crf 25 "OUTPUT.mp4"

Non è chiaro su cosa intendevi applicare il raccolto. Presumo che sia il primo input dal momento che è attualmente come sta gestendo ffmpeg con il tuo comando attuale. In caso contrario, alimenta [1] ritagliare e [0][a] alla sovrapposizione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.