ffmpeg: aggiungi 3 secondi di nero alla testa e alla coda del video


11

Diciamo che ho un video, che può avere qualsiasi dimensione o codec (ad esempio mp4), e voglio aggiungere 3 secondi di cornici nere alla sua testa.

Ho visto altre varianti di questa domanda che riguardano l'aggiunta di un singolo fotogramma e anche risposte che specificano la larghezza e l'altezza del video. Tuttavia, il video può avere qualsiasi larghezza e altezza e non voglio cambiare questi valori. Aggiungi solo il nero. In un comando separato, vorrei anche aggiungere i secondi di nero alla coda.

Non ci dovrebbe essere audio nella sezione nera - il nero dovrebbe essere solo concatenato alla parte anteriore e finale. Inoltre, vorrei evitare di ricodificare il video, se possibile, e copiare il risultato in un nuovo file.

Qualsiasi aiuto sarebbe apprezzato.


L'audio è presente? E vuoi saltare la ricodifica del video principale?
Gyan,

@Mulvya grazie per il tuo contributo. Ho aggiornato la mia domanda.
Matt C

@MattC Ora puoi eliminare il commento sopra. Ciò richiederà più comandi, a meno che non venga ricodificato. È ok?
Gyan,

@Mulvya sì, più comandi sono buoni. Grazie ancora.
Matt C

Risposte:


12

Il metodo di base per unire i video senza ricodificare è utilizzare il demuxer concat. Questo dispositivo richiede che i file uniti condividano determinate proprietà, come codec, framerate, dimensioni video, base dei tempi ... ecc

Il primo passo è creare il segmento vuoto, che può essere usato sia in testa che in coda.

ffmpeg -i fullvideo.mp4 -vf trim=0:3,geq=0:128:128 -af atrim=0:3,volume=0 -video_track_timescale 600 3sec.mp4

Devi fare un passo di contabilità per il video completo. In caso contrario, il video combinato verrà probabilmente eseguito alla velocità errata.

ffmpeg -i fullvideo.mp4 -c copy -video_track_timescale 600 full600.mp4

Quindi, crea un file di testo.

file 3sec.mp4
file full600.mp4
file 3sec.mp4

Quindi corri

ffmpeg -f concat -i list.txt -c copy merged.mp4

Il mio primo passo presuppone che il flusso video abbia il formato pixel più comune yuv420p. Il che dovrebbe andare bene in quanto questo è l'unico formato pixel supportato da lettori Web e fotocamere per smartphone, videocamere consumer ecc. In caso contrario, il geqfiltro potrebbe non riuscire.

Suppongo anche, tacitamente, che il video completo non usi più frame di riferimento di quelli prodotti da preset mediumdi x264. È un presupposto sicuro per il 95% dei video.

Infine, suppongo che il video completo abbia AAC-LC come codec audio. Si prevede che sia vero per la maggior parte dei video su telefono / cam / web.

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.