web-dev-qa-db-fra.com

Fractionner un fichier MP4

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?

33
Asaf Chertkoff

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 bloc en secondes et génère des fichiers vidéo pouvant être lus individuellement): http://icephoenix.us/notes -pour-moi-même/auto-fractionnement-fichier-vidéo-en-morceaux-égaux-avec-ffmpeg-and-python /

61
Alex

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é!

9
user24362

Vous n'êtes pas sûr de votre 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 support, 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
5
theTuxRacer

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.

4
rtega

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 des métadonnées utilisées par le décodeur pour localiser des 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 garder une trace des pièces et de leurs décalages. Cela vous aidera à en savoir plus sur le format et à reconstruire les fichiers automatiquement.

0
Léon Pelletier

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/ ou MP4Box -h general

La concaténation est aussi simple.

0
Csaba Toth