47 votes

Division d'un fichier MP4

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

J'ai essayé ffmpeg mais j'ai obtenu 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 travers et comment diviser correctement un fichier mp4 ?

89voto

Eric Scrivner Points 1392

Avec ffmpeg, vous pouvez diviser un fichier en utilisant la commande suivante :

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

où START est la position de départ en secondes ou au format hh:mm:ss LENGTH est la longueur du morceau en secondes ou au format hh:mm:ss

Vous devrez donc exécuter cette commande plusieurs fois en fonction de la longueur de votre vidéo. Si votre vidéo dure 31 minutes et que vous souhaitez la diviser en tranches de 15 minutes, voici comment procéder :

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

Il existe un script Python que vous pouvez utiliser et qui fait cela automatiquement (c'est-à-dire qu'il prend le fichier vidéo, la taille du morceau en secondes et génère des fichiers vidéo individuels lisibles) : https://github.com/c0decracker/video-splitter

10voto

user24362 Points 101

Si vous préférez utiliser une interface graphique, il y a avidemux disponible dans les dépôts. 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, en utilisant la fonction "copier" dans l'audio et la vidéo pour éviter le réencodage. Vous pouvez également choisir le conteneur ou le modifier (avi, mp4, mkv, etc).

J'ai fait quelques coupes sur des vidéos à partir d'une caméra et c'était instantané !

8voto

Al Crowley Points 21

Utilisez mkvmerge du paquetage mkvtoolnix. Utilisez quelque chose comme

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

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

5voto

Don Wakefield Points 4684

Je ne suis pas sûr de ce dont vous avez besoin, mais vous pouvez taper ceci dans un terminal : Pour ouvrir un terminal, appuyez sur Ctrl + Alt + T

split -b 4M file.mp4 part_file

Cette opération divise les fichiers en morceaux de 4 mégaoctets. Pour recréer le fichier, tapez

cat part_file[a-c] > file.mp4

Remarquez que j'ai tapé a-c dans la parenthèse, parce que le fractionnement a créé 3 fichiers. dans votre cas, il se peut que vous deviez en voir plus. Je l'expliquerai par un exemple.

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

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

$ split -b 2M file.mp4 part_file

Après la division, j'obtiens les fichiers suivants :

$ 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

Remarquez les deux caractères ajoutés au nom du fichier.

Pour récupérer le fichier :

$ cat part_filename[start-end][start-end] > file.mp4

3voto

aJIT Points 31

J'ai pensé qu'il serait utile d'aller au-delà de la question initiale "comment diviser correctement un fichier mp4" en indiquant comment le faire efficacement . Pour une vidéo de grande taille, cela peut être particulièrement utile, comme je l'ai constaté sur un fichier de 13,7 Go en suivant la réponse d'Alex ci-dessus.

L'astuce consiste à utiliser la fonction -ss option antes de-i pour que ffmpeg saute plus l'heure spécifiée dans l'entrée au lieu de chercher à travers il. Voir la documentation de ffmpeg https://www.ffmpeg.org/ffmpeg.html#Main-options pour plus de détails, mais l'explication pertinente est la suivante :

-ss position (input/output)
When used as an input option (before -i), seeks in this input file to position. 
...
When used as an output option (before an output url), decodes but discards input until the timestamps reach position.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X