Est-il possible de fusionner des fichiers vidéo en utilisant `cat`?

18

Je me demande s'il est possible de fusionner des fichiers vidéo en utilisant la catcommande? Je veux dire que le fichier résultant sera lu de manière transparente?

Hamed Momeni
la source
1
As-tu essayé?
M. Lister
3
Je l'ai fait en fait. Mais en quelque sorte, le résultat ne contenait pas le deuxième fichier bien que la taille du fichier soit la somme des deux.
Hamed Momeni

Réponses:

21

Oui c'est possible. Mais tous les formats ne le prennent pas en charge.

FAQ ffmpeg :

Quelques conteneurs multimédias (MPEG-1, MPEG-2 PS, DV) permettent de joindre des fichiers vidéo en les concaténant simplement.

Lors de la conversion au format RAW, vous avez également de grandes chances que les fichiers puissent être concaténés.

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

Mais en utilisant catde cette manière des fichiers intermédiaires créés, qui ne sont pas nécessaires. Il s'agit d'une meilleure approche pour éviter de créer ces fichiers intermédiaires:

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
Marco
la source
1
N'êtes-vous pas encore en train de créer des fichiers intermédiaires dans la deuxième version?
John Gowers
6

Il existe deux types de fichiers multimédias

  • streamable

  • non diffusable

La principale différence réside dans la façon dont les deux formats de fichiers intègrent des méta-informations. avec les formats non streamables , la méta-informationc ("en-tête") est stockée à une position spécifique dans le fichier, généralement au début, parfois à la fin. Vous ne pouvez pas simplement concaténer de tels fichiers, car les méta-informations de l'un des fichiers seront dans un emplacement non standard et seront donc ignorées.

OTOH, streamable formats doivent être en mesure de gérer les auditeurs qui vont commencer la lecture du fichier « quelque part au milieu ». Par conséquent, ces formats continuent de renvoyer les méta-informations et permettent même de les mettre à jour dans le fichier / flux. Ces formats peuvent être simplement concaténés.

umläute
la source
Par exemple, ogg: stackoverflow.com/questions/27980960/…
BlackShift
1

Comme l'a dit BЈовић, en général, chaque fichier a son propre en-tête. Essayez avec cet exemple d' Ubuntu How To's :

mencoder -ovc copy -oac copy video1.avi video2.avi -o completevideos.avi 
rpet
la source
0

Non, ce n'est pas possible, car chaque fichier vidéo a un en-tête. Pour fusionner des vidéos, vous devez utiliser un outil (comme par exemple ffmpeg ou mencoder ).

BЈовић
la source
9
Pas tout à fait correct. Il existe des formats vidéo sans en-tête, par exemple rawvideo ou yuv4mpegpipe qui produisent des données brutes. C'est pourquoi vous devez fournir la taille du cadre lors de la lecture de ces formats, car la taille est inconnue en raison de l'en-tête manquant.
Marco
2
Comment se fait-il que je l'ai réussi avec des fichiers DV?
Pithikos
1
@Pithikos aucune idée. peut-être que vous pratiquez la magie :)
BЈовић