Fractionner un fichier MP4

34

Quelle est la méthode la plus rapide et la moins consommatrice de ressources pour fractionner un fichier MP4?

J'ai essayé ffmpeg mais j'ai eu une erreur:

$ ffmpeg -vcodec copy -ss 0 -t 00:10:00 -i /home/asafche/Videos/myVideos/MAH00124.MP4 /home/asafche/Videos/myVideos/eh.mp4
FFmpeg version SVN-r0.5.1-4:0.5.1-1ubuntu1.1, Copyright (c) 2000-2009 Fabrice Bellard, et al.
configuration: --extra-version=4:0.5.1-1ubuntu1.1 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 1 / 52.20. 1
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libavfilter    0. 4. 0 /  0. 4. 0
  libswscale     0. 7. 1 /  0. 7. 1
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Mar 31 2011 18:53:20, gcc: 4.4.3

Seems stream 0 codec frame rate differs from container frame rate: 119.88 (120000/1001) -> 59.94 (60000/1001)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/asafche/Videos/myVideos/MAH00124.MP4':
  Duration: 00:15:35.96, start: 0.000000, bitrate: 5664 kb/s
    Stream #0.0(und): Video: h264, yuv420p, 1280x720, 59.94 tbr, 59.94 tbn, 119.88 tbc
    Stream #0.1(und): Audio: aac, 48000 Hz, stereo, s16
Output #0, mp4, to '/home/asafche/Videos/myVideos/eh.mp4':
    Stream #0.0(und): Video: libx264, yuv420p, 1280x720, q=2-31, 90k tbn, 59.94 tbc
    Stream #0.1(und): Audio: 0x0000, 48000 Hz, stereo, s16, 64 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Unsupported codec for output stream #0.1

Qu'est-ce que je fais de mal et comment diviser correctement un fichier mp4?

Asaf Chertkoff
la source
pourriez-vous s'il vous plaît nous dire la raison pour laquelle vous avez besoin de scinder le fichier? Est-ce pour partager ou jouer des parties du fichier? Ou toute autre raison?
theTuxRacer
C’est pour télécharger sur youtube, donc votre deuxième suggestion - lire des parties du fichier ...
Asaf Chertkoff

Réponses:

62

Avec ffmpeg, vous pouvez diviser un fichier à l’aide de la commande suivante:

ffmpeg -i ORIGINALFILE.mp4 -acodec copy -vcodec copy -ss START -t LENGTH OUTFILE.mp4

où START commence à positionner en secondes ou au format hh: mm: ss LONGUEUR est la longueur de morceau en secondes ou au format hh: mm: ss

Vous devrez donc exécuter cette commande plusieurs fois en fonction de la durée de votre vidéo. Si, disons, votre vidéo dure 31 minutes et que vous voulez une fraction de séquence de 15 minutes, voici comment vous la diffusez:

ffmpeg -i ORIGINALFILE.mp4 -acodec copy -vcodec copy -ss 0 -t 00:15:00 OUTFILE-1.mp4
ffmpeg -i ORIGINALFILE.mp4 -acodec copy -vcodec copy -ss 00:15:00 -t 00:15:00 OUTFILE-2.mp4
ffmpeg -i ORIGINALFILE.mp4 -acodec copy -vcodec copy -ss 00:30:00 -t 00:15:00 OUTFILE-3.mp4

Vous pouvez utiliser un script python pour le faire automatiquement (c.-à-d. Qu'il prend un fichier vidéo, la taille du morceau en secondes et génère des fichiers vidéo pouvant être lus individuellement): http://icephoenix.us/notes-for-myself/auto-splitting-video -file-in-equal-chunks-with-ffmpeg-and-python /

Alex
la source
Merci, mais j'ai besoin d'aide supplémentaire pour cela. Recherchez l'édition que j'ai faite dans ma réponse.
Asaf Chertkoff
1
Cela a fonctionné pour moi: ffmpeg -ss 00:05:00 -t 00:16:00 -i largfile.MP4 -acodec copie -vcodec copie smallfile.MP4 quelqu'un peut-il expliquer pourquoi?
Asaf Chertkoff
Je vais spéculer ici un peu, mais il semble que votre fichier source soit encodé avec un framerate, ce que libx264 ne supporte pas, donc il saute des images. Je pense que cela devrait fonctionner correctement, mais il pourrait y avoir quelques problèmes avec l'audio à cause de cela.
Alex
peut être. va voir ...
Asaf Chertkoff
1
Le commandement d'Asaf a également fonctionné pour moi. Il semblerait que les options de codec devraient venir après le fichier d’entrée.
daithib8
10

Si vous préférez utiliser une interface graphique, avidemux est disponible dans les référentiels. Définir les points de coupe est beaucoup plus facile de cette façon!

Les marqueurs de sélection définissent la partie de la vidéo qui sera exportée. L'utilisation de "Copier" en audio et vidéo évite le réencodage. Vous pouvez également choisir le conteneur ou le modifier (avi, mp4, mkv, etc.).

J'ai fait un tas de coupures sur certaines vidéos d'une caméra et c'était instantané!

utilisateur24362
la source
2
Avidemux a été supprimé du référentiel Ubuntu 16.04.
naXa
5

Vous n'êtes pas sûr de ce dont vous avez besoin, mais vous pouvez le saisir dans un terminal: Pour ouvrir un terminal, appuyez sur Ctrl+ Alt+T

split -b 4M file.mp4 part_file

Cela divisera les fichiers en morceaux de 4 mégaoctets. Pour recréer le fichier à nouveau, tapez

cat part_file[a-c] > file.mp4

Notez que j'ai tapé a-cdans le crochet, car le groupe créé 3 fichiers. dans votre cas, il vous faudra peut-être en voir plus. Je vais expliquer avec un exemple.

$ ls -lh
-rwxr-xr-x 1 root        root        9.3M 2011-04-17 20:09 file.mp4

Cela montre que je n'ai qu'un seul fichier, de 9,3 MB. Pour diviser, je tape:

$ split -b 2M file.mp4 part_file

Après division, je récupère les fichiers en tant que:

$ ls -lh
-rwxr-xr-x 1 root        root        9.3M 2011-04-17 20:09 file.mp4
-rw-r--r-- 1 thetuxracer thetuxracer 2.0M 2011-04-17 20:12 part_fileaa
-rw-r--r-- 1 thetuxracer thetuxracer 2.0M 2011-04-17 20:12 part_fileab
-rw-r--r-- 1 thetuxracer thetuxracer 2.0M 2011-04-17 20:12 part_fileac
-rw-r--r-- 1 thetuxracer thetuxracer 2.0M 2011-04-17 20:12 part_filead
-rw-r--r-- 1 thetuxracer thetuxracer 1.3M 2011-04-17 20:12 part_fileae

Notez les deux caractères ajoutés au nom de fichier.

Pour récupérer le fichier:

$ cat part_filename[start-end][start-end] > file.mp4
theTuxRacer
la source
3
Cette méthode sera très rapide mais ne vous permettra pas de jouer les morceaux individuels. Vous pouvez utiliser ffmpeg pour extraire des parties d'un fichier vidéo, mais pour le scinder automatiquement en plusieurs petits morceaux lisibles individuellement sans les réassembler en un tout, vous aurez probablement besoin d'écrire un script avec un fichier mp4. Je peux vous donner un exemple si vous voulez, mais si c'est juste pour déplacer le fichier, cette réponse est bonne.
Slipstream
@ Slipstream - vous avez bien compris - je dois le scinder pour youtube. mon appareil photo produit du MP4 mais je dois séparer ceux-ci car ils sont plus longs que les 15 minutes autorisées.
Asaf Chertkoff
alors vous voulez la réponse d'Alex ci-dessous ...
Slipstream
5

Utilisez mkvmerge à partir du package mkvtoolnix. Utilisez quelque chose comme

mkvmerge -o outputprefix --split 1G origfile.mp4

Cela diviserait votre fichier en blocs de 1 Go. Vous pouvez également utiliser des indications de temps.

rtega
la source
Je ne l'ai jamais utilisé auparavant mais j'ai essayé: génial! la vitesse instantanée et tout continue à être lisible. Merci!
tuk0z
Ceci est particulièrement utile si vous souhaitez spécifier une taille. Merci!
BBQ Singular
0

S'il s'agit d'une MP4 partie 2, alors avec une approche très méticuleuse, vous pouvez continuer le fichier sans encodeur / décodeur. Cette réponse est destinée aux personnes ayant une formation en programmation et un éditeur hexadécimal qui souhaitent conserver le fichier "" intact "".

La première partie du fichier est un mdat, la seconde est un moov, contenant les métadonnées utilisées par le décodeur pour localiser les morceaux, qui contiennent des échantillons (images codées et son, qu’il est important de ne pas connaître). Ensuite, il y a STCO, STTS, STSC, etc. Cela s'appelle des "atomes". Ils indiquent quels sont le décalage, la longueur, etc. de chacun des morceaux. Si vous effectuez un travail correct, vous pouvez créer plusieurs instances de votre vidéo et une version différente avec des morceaux différents. Le fichier sera alors lisible sur les lecteurs et digéré sur les sites Web de vidéos. Si vous êtes un codeur, créez un analyseur MP4 ou utilisez un analyseur existant pour suivre les pièces et leurs décalages. Cela vous aidera à en savoir plus sur le format et à reconstruire les fichiers automatiquement.

Léon Pelletier
la source
0

La méthode la plus simple et la plus infaillible consiste à utiliser MP4Box:

  1. # apt install gpac
  2. $ MP4Box -split 15 /home/asafche/Videos/myVideos/MAH00124.MP4(le paramètre est le temps en secondes). Pour d'autres possibilités de partage, par exemple par taille, voir https://gpac.wp.imt.fr/mp4box/mp4box-documentation/ ouMP4Box -h general

La concaténation est aussi simple.

Csaba Toth
la source
0

Le frein à main est un autre outil graphique à source ouverte permettant de fractionner des vidéos et bien plus encore.

Par exemple, ici, je scinde ma vidéo en 24.53 (mm: ss) et je découpe également le cadre de droite: entrez la description de l'image ici

Vous pouvez voir l'aperçu de la sortie facilement - avec le bouton "Aperçu".

Noam Manos
la source