È possibile utilizzare ffmpeg per tagliare X secondi dall'inizio di un video con una lunghezza non specificata?


20

Devo tagliare i primi 1 o 2 secondi di una serie di registrazioni FLV di lunghezze variabili e non specificate. Ho trovato molte risorse per estrarre una durata specifica da un video (ad esempio clip di 30 secondi), ma nessuna per continuare fino alla fine di un video.

Entrambi questi tentativi producono solo una versione copiata del video, senza il taglio desiderato:

ffmpeg -ss 2 -vcodec copy -acodec copy -i input.flv output.flv

ffmpeg -ss 2 -t 120 -vcodec copy -acodec copy -i input.flv output.flv

Il pensiero sul secondo era: forse se avessi specificato una lunghezza oltre ciò che era possibile, sarebbe andato fino alla fine. Niente da fare.

So che non è un problema con i codec o l'utilizzo di secondi anziché di timecode poiché i seguenti hanno funzionato a meraviglia:

ffmpeg -ss 2 -t 5 -vcodec copy -acodec copy -i input.flv output.flv

Altre idee? Sono aperto all'utilizzo di altri strumenti da riga di comando (basati su Windows), tuttavia sto favorendo fortemente ffmpeg poiché lo sto già utilizzando per la creazione di miniature e ne ho familiarità.

Se aiuta, i miei video dureranno meno di 2 minuti.

AGGIORNARE:

Sono passato all'utilizzo di Mencoder ( http://www.mplayerhq.hu/ ) dal momento che sembra che ffmpeg non riuscirà a farlo senza qualche hacking aggiuntivo.

La sintassi di Mencoder per realizzare ciò che ho deciso di fare è:

mencoder.exe -ss 2 -oac copy -ovc copy input.flv -o output.flv

Dunque, quale preferisci; l' mencoderesempio sopra; o l' ffmpegesempio, di seguito?
voci

Risposte:


16

Provare:

ffmpeg -i input.flv -ss 2 -vcodec copy -acodec copy output.flv

Penso che il parametro di input dovrebbe essere il primo.


Grazie per la risposta. L'ordinamento dei parametri che ho usato sopra fornisce lo stesso risultato, quindi non penso che sia l'ordine. Dopo aver rinunciato a ffmpeg, il mio intervallo di fotogrammi chiave stava causando problemi con altri strumenti. Dopo aver rivisitato questo ora, dopo tutto è stato l'intervallo del keyframe. Era impostato su 5 secondi prima e da allora l'ho impostato su 1 secondo. A 5 secondi, sia il tuo comando che quelli che ho provato sopra hanno prodotto uno spazio nero all'inizio (3 secondi, ovviamente). A 1 secondo, funziona come previsto.
marcelebrate il

Questo funziona anche per gli mp3
geotheory l'

4
Come spiegato in FFmpeg Seeking , l'utilizzo di -ss come parametro di input (prima -i) durante la copia o persino la transcodifica con una versione precedente di FFmpeg, utilizza la ricerca di fotogrammi chiave. Questo è molto più veloce, ma sacrifica la precisione. Se lo si utilizza come parametro di output, il processo è potenzialmente molto più lento (l'input viene decodificato frame per frame anche per le parti scartate), ma preciso. Anche se la domanda è vecchia, penso che questa dovrebbe essere la risposta accettata.
Jonathan Y.

23

Si scopre che questo comando sarà tagliare il video da 2 secondi su, come previsto:

ffmpeg -i input.flv -ss 2 -vcodec copy -acodec copy output.flv

Il problema era con l'intervallo del fotogramma chiave in input.flv. È stato impostato su 5 secondi, il che ha prodotto 3 fotogrammi neri all'inizio del video (5 - 2 = 3). Da allora ho cambiato il mio intervallo di fotogrammi chiave in 1 secondo, anche se 2 secondi probabilmente darebbero anche i risultati desiderati nel mio caso.

AGGIORNAMENTO: ordinamento -ie -ssparametri aggiornati per la risposta di Dave, che ho accettato per il merito.


2
Ho avuto anche questo problema. Questo post lo ha fatto per me. Ho morso il proiettile e ho smesso di provare a utilizzare -vcodec copy -acodec copyper tutti i miei comandi di modifica. La ricodifica ha impedito ai fotogrammi neri dall'inizio del mio video o di non tagliare nel punto giusto (la differenza di un secondo senza ricodifica stava traducendo in una differenza di quasi 5 secondi nel video). Così, ho finito per sostituire -vcodec copycon -vcodec libx264 -crf 0.
Hendy,

2
Ho appena incontrato la stessa cosa. Ho scoperto che non posso solo -vcodec copyperché la sezione non si avvia su un fotogramma chiave. Stavo ottenendo un'immagine fissa o un'immagine nera per N secondi fino al fotogramma chiave successivo. Se ricodificassi effettivamente, piuttosto che copiarlo, funziona come previsto. Quindi, anche se i miei input e output sono entrambi H264, avevo ancora bisogno di ricodificare (usando -vcodec libx264invece di -vcodec copy).
Karl Wilbur,

La risposta di Daves è quella corretta dell'ultima versione di ffmpeg. Il -idovrebbe venire prima del -ss.
Arete,

0

Usa -ss e -to prima di -i in questo modo:

ffmpeg -ss 00:01:10 -to 00:02:10 -i input -c copy output

0

Aggiornamento di questa risposta, a partire dal 2019 il comando è ora:

ffmpeg -i input.flv -ss 2 -c copy output.flv
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.