Sovrapponi un video su un'immagine usando ffmpeg


2

Sto cercando di sovrapporre un video su un'immagine usando il comando qui sotto.

 -y -loop 1 -i snowflake.png
 -i crack.mp4
 -filter_complex "[0][1]scale2ref[i][m];[m][i]overlay[v]" -map [v] -map 0:a? -ac 2 output.mp4

Il comando precedente funziona ma sovrappone l'immagine sul video anziché il video sull'immagine.

Cerco anche con il comando di seguito, ma quando eseguo che rimuove il separatore di percorso del file '\' dal percorso che si traduce nel file non trovato errore.

-loop 1 -i C:\Users\Desktop\SAM\Effects\snowflake.png
-vf "movie=C:\Users\Desktop\SAM\Effects\crack.mp4,scale=128:96[inner];[in][inner]overlay=70:70:shortest=1[out]" -y output.mp4

Ho visto un video di youtube per l'effetto esatto che desidero e ho copiato il comando da quello, ma continua a dare lo stesso errore senza un formato di output adatto. Questo è il comando

-loop 1 -i C:\Users\Vivek\Desktop\SAM\Effects\A.jpg -i C:\Users\Vivek\Desktop\SAM\Effects\crack.mp4 -filter_complex "[1:v]colorkey=0x000000:0.5:0.5[ckout];[0:v][ckout]overlay[out]" -map "[out]" -c:a copy -c:v libx264 C:\Users\Vivek\Desktop\SAM\Effects\out.mp4

Come far funzionare questo comando.

Di seguito è riportato lo screenshot dell'errore. Non riesco a pubblicare i log qui perché l'errore non compare nei log.

Error

FYI : Sto usando ffmpeg in Unity usando l'asset bind FFMPEG.


La tua configurazione mostra '\' come separatore del percorso, ma di cui parli '/': cos'è questo? Dal momento che non hai mostrato il messaggio di errore, devo indovinare '\' viene gestito come un personaggio di escape, quindi è necessario o raddoppiarlo o usarlo '/', come dice il tuo testo (il file system gestisce i separatori - è solo l'interfaccia utente a insistere '\' ).
AFH

@ AFH mi dispiace per il separatore sbagliato nella descrizione. Sto dicendo di \ nel percorso del file.
Vivek Mishra

Passa gli input alla sovrapposizione e aggiungi il più breve nel 1 ° cmd: [i][m]overlay=shortest=1[v]
Gyan

Quindi prova i miei suggerimenti e aggiungi il messaggio di errore alla tua domanda.
AFH

1
Sembra che ci sia confusione tra i diversi formati di nuova linea per Linux / OSX / Windows. Hai creato uno script su un SO differente da dove lo stai eseguendo? Non so quale formato nativo Unity si aspetta.
AFH

Risposte:


2

Stai incontrando personaggi invisibili, non-joiner a larghezza zero (U + 200C) e spazio a larghezza zero (U + 200B), che sono probabilmente aggiunti dal tuo editor di testo. Puoi vederli se li incolli vim:

String[]sepCmd=new String[]{"-i",overlayUri,"-i",uri,"-filter_complex","[1:v][0<200c><200b>:v]scale2ref[ua][b<200c><200b>];<200c><200b>[ua]setsar=1,format=<200c><200b>yuva444p,colorchanne<200c><200b>lmixer=aa=0.5[u];[b]<200c><200b>[u]overlay"<200c><200b>,outputPa<200c><200b>th}

Errori associati che potresti incontrare con questa infestazione:

  • Invalid stream specifier:
  • No such filter: '‌​'
  • Error initializing filter
  • Unable to find a suitable output format

Rimuovi questi caratteri e usa un editor di testo migliore: not Notepad o MS Word.


Ora ho così meno reputazione che non riesco nemmeno a revocare la tua risposta. Un'ultima cosa che voglio chiedere, se voglio l'uscita come un file gif, lo stesso comando funzionerà se cambi semplicemente l'estensione ouput in .gif?
Vivek Mishra


Mi dispiace disturbarti ancora ma ho trovato un altro problema. Ho creato il video desiderato usando il comando dato e funziona perfettamente sul laptop, ma quando eseguo lo stesso video su dispositivi mobili, il video di sovrapposizione è statico e non funziona affatto mentre posso ancora qui il suono del video riprodotto correttamente nei dispositivi.
Vivek Mishra

@VivekMishra Avrò bisogno di vedere il comando effettivo e il registro da ffmpeg.
llogan

Grazie per la tua risposta, ma il problema sembra risolto dopo aver usato gif invece di mp4
Vivek Mishra
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.