Come aggiungere il mio logo per i primi 30 secondi in un video con ffmpeg?


9

Sto cercando di aggiungere il mio logo per i primi 30 secondi in un video con ffmpeg. Ho un video chiamato d1.mp4e un logo chiamato logo.png.

All'avvio del video, la filigrana dovrebbe trovarsi nell'angolo in alto a sinistra o in alto a destra del video e scomparire dopo 30 secondi.

Potete per favore mostrarmi come aggiungerlo?


il mio nome video è d1.mp4 e il mio nome logo è logo.png, grazie ..
— iwocan,

Allora cosa ffmpeg -i d1.mp4 -i logo.pngmostra? Inserisci semplicemente quel comando e mostraci qual è l'output. Quando ffmpegfai domande , dovresti sempre includere quanti più dettagli possibili su quale materiale video / audio hai, cosa hai già provato e l'output completo della riga di comando di tutto ciò che hai provato.
— slhck,

ecco cosa ottengo sul mio schermo cmd. pastebin.com/bPCnhXh2
— iwocan il

Risposte:


13
ffmpeg -i in.mp4 -framerate 30000/1001 -loop 1 -i logo.png -filter_complex
  "[1:v] fade=out:st=30:d=1:alpha=1 [ov]; [0:v][ov] overlay=10:10 [v]" -map "[v]"
  -map 0:a -c:v libx264 -c:a copy -shortest out.mp4

Ciò presuppone che il logo sia un singolo fermo immagine con un canale alfa e si desidera sovrapporlo su un video con una frequenza dei fotogrammi di 30000/1001 (frequenza NTSC). Cambia -framerateper adattarlo al tuo video di input se è diverso. Se il tuo logo è un video, ometti -framerate 30000/1001 -loop 1. Se il logo non ha un canale alfa, aggiungine uno inserendo ad esempio format=yuva420p,immediatamente prima fade.

Questo visualizzerà il logo in posizione x, y 10,10 per 30 secondi seguito da una dissolvenza di 1 secondo.


1
Molto interessante! Potresti spiegare perché frameratee loopsono richiesti in questo caso e non per un semplice overlay senza filtro dissolvenza?
— Rajib,

Grazie mille mark40 ma quando scrivo questo codice, lo schermo cmd non si ferma .. Non so perché ma non ha funzionato per me ..
— Iwocan

Ciao LordNeckbeard, ecco uno screenshot .. u1312.hizliresim.com/1j/4/v5ny8.png ..
— iwocan,

1
@iwocan Credo che tu possa copiare roba dal prompt di Windows. Ho pensato che avresti cercato come farlo, ma guarda Copia negli Appunti dal prompt dei comandi di Windows .
— Llogan il

4
@Rajib: il motivo per -frameratee -loopper un'immagine fissa è che la dissolvenza funzionerà. Se esiste un solo fotogramma, non ha modo di sfumare in un intervallo di 1 secondo. Idealmente dovrebbe avere la stessa frequenza dei fotogrammi del video in modo che la dissolvenza sia il più uniforme possibile.
— mark4o

19

Utilizzo del overlayfiltro video per aggiungere un logo a un video:

inserisci qui la descrizione dell'immagine

ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay" \
-codec:a copy out.mp4

Per comprendere questo comando devi sapere cos'è un identificatore di flusso e leggere l' Introduzione al filtro FFmpeg ti aiuterà. [0:v]si riferisce ai flussi video del primo input ( video.mp4) e si [1:v]riferisce al flusso video del secondo input ( logo.mp4). Questo è il modo in cui puoi dire overlayquali input usare. È possibile omettere [0:v][1:v]e overlaycontinuerà a funzionare, ma si consiglia di essere espliciti e di non fare affidamento su valori predefiniti probabilmente sconosciuti.

Per impostazione predefinita, il logo verrà posizionato in alto a sinistra.

Utilizzando -codec:a copyverrà riprodotto lo streaming dell'audio. Questo semplicemente rimodella l'audio invece di ricodificarlo. Pensalo come un "copia e incolla" dell'audio.

Spostamento del logo

In questo esempio il logo verrà spostato di 10 pixel a destra e di 10 pixel in basso: inserisci qui la descrizione dell'immagine

ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay=10:10" \
-codec:a copy out.mp4

In questo esempio il logo verrà spostato di 10 pixel dal lato destro e di 10 pixel verso il basso:

inserisci qui la descrizione dell'immagine

ffmpeg -i video.mp4 -i logo.png -filter_complex \
"[0:v][1:v]overlay=main_w-overlay_w-10:10" -codec:a copy out.mp4

main_wsi riferisce alla larghezza dell'input "principale" (lo sfondo o [0:v]) e overlay_walla larghezza dell'input "overlay" (il logo o [1:v]). Quindi, nell'esempio, questo può essere tradotto in overlay=320-90-10:10o overlay=220:10.

Temporizzazione della sovrapposizione

Alcuni filtri possono gestire la modifica della sequenza temporale che consente di utilizzare espressioni aritmetiche per determinare quando applicare un filtro. Fare riferimento a ffmpeg -filtersper vedere quali filtri supportano la modifica della sequenza temporale.

Questo esempio mostrerà il logo fino a 30 secondi:

ffmpeg -i video.mp4 -i logo.png -filter_complex \
"[0:v][1:v]overlay=10:10:enable=between(t\,0\,30)" -codec:a copy out.mp4

Se vuoi sfumare il logo, fai riferimento alla risposta di mark4o .


Grazie mille! :) Chiedo scusa per il mio inglese non funzionante. Questo comando funziona perfettamente! :)
— Iwocan,

finalmente qualcosa di comprensibile! cosa dovrei usare per farlo apparire all'inizio che alla fine?
— Cikatomo,

Volevo apparire all'inizio E alla fine? Due volte. ho provato a abilitare = tra (t \, 0 \, 30): abilita = tra (t \, 50 \, 60), ma l'unica sequenza temporale è attiva
— cikatomo,

@cikatomo enable=not(between'(t,30,50)'). Questo mostrerà la sovrapposizione in ogni momento ma non alla durata di 30-60 secondi.
— Llogan,

Perfetto, grazie. Nonostante l'avvertimento di non usare overlaytutto da solo, l'ho fatto, perché la posizione predefinita in alto a sinistra era ciò che volevo. (Quindi alla fine le mie bandiere erano semplicemente filter_complex overlay.)
— Felwithe
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.