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.