È possibile unire file video usando `cat`?


18

Mi chiedo se è possibile unire file video usando il catcomando? Voglio dire, il file risultante verrà riprodotto senza problemi?


1
Hai provato?
Lister,

3
L'ho fatto davvero. Ma in qualche modo il risultato non conteneva il secondo file sebbene la dimensione del file fosse la somma di entrambi.
Hamed Momeni il

Risposte:


21

Sì, è possibile. Ma non tutti i formati lo supportano.

Domande frequenti su ffmpeg :

Alcuni contenitori multimediali (MPEG-1, MPEG-2 PS, DV) consentono di unire file video semplicemente concatenandoli.

Quando si converte in formati RAW, è anche molto probabile che i file possano essere concatenati.

ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg
ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg
cat intermediate1.mpg intermediate2.mpg > intermediate_all.mpg
ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi

Ma l'utilizzo catin questo modo ha creato file intermedi, che non sono necessari. Questo è un approccio migliore per evitare di creare quei file intermedi:

ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg
ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg
ffmpeg -i concat:"intermediate1.mpg|intermediate2.mpg" -c copy intermediate_all.mpg
ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi

1
Non stai ancora creando file intermedi nella seconda versione?
John Gowers,

6

Esistono due tipi di file multimediali

  • streamable

  • non streamable

La differenza principale è come i due formati di file incorporano meta-informazioni. con formati non streaming , la meta-informazionec ("header") viene memorizzata in una posizione specifica nel file, di solito all'inizio, a volte alla fine. Non puoi semplicemente concatenare tali file, poiché le meta-informazioni di uno dei file file si troveranno in una posizione non standard e quindi verranno ignorate.

OTOH, i formati streaming devono essere in grado di gestire i listener che inizieranno a riprodurre il file "da qualche parte nel mezzo". Pertanto, questi formati continuano a inviare nuovamente le meta-informazioni e consentono persino di aggiornarle all'interno del file / flusso. Questi formati possono essere semplicemente concatenati.



1

Come BЈовић ha detto, in generale, ogni file ha la sua intestazione. Prova con questo esempio di Ubuntu How To's :

mencoder -ovc copy -oac copy video1.avi video2.avi -o completevideos.avi 

0

No, non è possibile, perché ogni file video ha un'intestazione. Per unire i video è necessario utilizzare uno strumento (come ad esempio ffmpeg o mencoder ).


9
Non del tutto corretto. Esistono formati video senza intestazione, ad esempio rawvideo o yuv4mpegpipe che producono dati non elaborati. Ecco perché devi fornire la dimensione del frame durante la lettura di quei formati, poiché la dimensione è sconosciuta a causa dell'intestazione mancante.
Marco,

2
Come mai l'ho appena fatto con successo con i file DV?
Pithikos,

1
@Pithikos non ne ho idea. forse pratichi la magia :)
BЈовић
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.