6 votes

Comment diviser des vidéos avec FFmpeg et l'option -segment_times?

Je tente de diviser une vidéo avec FFmpeg et l'option -segment_times comme montré dans ce ticket FFmpeg. Mais cela ne fonctionne pas, la sortie d'erreur n'est pas utile et la sortie résultante est une seule vidéo de taille zéro.

segment_times times

Spécifie une liste de points de division. times contient une liste de spécifications de durée séparées par des virgules, dans l'ordre croissant. Voir aussi l'option 'segment_time'.

Veuillez noter que je n'ai intentionnellement pas utilisé l'option -ss et -t pour des raisons trop longues à expliquer.

Ma commande

ffmpeg -i input.mp4 -f segment -segment_times 10,20 -vcodec copy output02%d.mp4

Sortie

ffmpeg version N-59275-g9b195dd Copyright (c) 2000-2013 the FFmpeg developers
  compilé le Dec 21 2013 22:01:05 avec gcc 4.8.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheo
ra --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
  libavutil      52. 58.101 / 52. 58.101
  libavcodec     55. 45.103 / 55. 45.103
  libavformat    55. 22.100 / 55. 22.100
  libavdevice    55.  5.102 / 55.  5.102
  libavfilter     4.  0.100 /  4.  0.100
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
Entrée #0, mov,mp4,m4a,3gp,3g2,mj2, en provenance de 'input.mp4':
  Métadonnées:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2013-12-16 21:59:06
  Durée: 00:01:53.06, début: 0.000000, débit: 1467 kb/s
    Flux #0:0(und): Vidéo: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 1272 kb/s, 29.97 fps, 29.97 tbr, 60k tbn, 59.94 tbc (défaut)
    Métadonnées:
      handler_name    : VideoHandler
    Flux #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stéréo, fltp, 192 kb/s (défaut)
    Métadonnées:
      creation_time   : 2013-12-16 21:59:06
      handler_name    : IsoMedia File Produced by Google, 5-11-2011
Sortie #0, segment, vers 'output02%d.mp4':
  Métadonnées:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
Le fichier de sortie #0 ne contient aucun flux
  • Vidéo exemple @ HD 720p uniquement pour les tests.
    Mais cela ne fonctionne pas avec 2 autres vidéos complètement différentes également
  • Dernière version Windows de FFmpeg (git-9b195dd, 2013-12-22, statique, 32-bit)

Ce que je fais de travers ?

8voto

slhck Points 209720

Vous devez indiquer à ffmpeg de copier tous les flux de sortie avec l'option -c copy, et en plus de mapper tout depuis l'entrée vers la sortie avec -map 0. Cela est mentionné dans tous les exemples du multiplexeur de segments.

ffmpeg -i input.mp4 -f segment -segment_times 10,20 -c copy -map 0 output02%d.mp4

Notez que si la vidéo contient des images clés à des intervalles irréguliers, la durée de vos segments peut ne pas correspondre aux temps indiqués, car ffmpeg ne peut diviser la vidéo qu'aux images clés. Si vous voulez des tailles de segment régulières, vous devez réencoder la vidéo (par exemple, choisir un encodeur comme libx264 à la place de copy) et définir un intervalle d'images clés avec -g.

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