FFMPEG - création de segments à partir d'une source unique en utilisant segment_times comme indiqué pour -ss

0

J'ai réussi à créer des segments à partir d'un fichier source unique en utilisant -ss et -t après le -i, en utilisant un script python pour créer un fichier .txt contenant la liste des segments et en utilisant -concat pour regrouper les segments.

Aujourd'hui, j'ai découvert les segments -f et -segment_times. Cependant, j'ai effectué une recherche dans superutilisateur et google et je ne trouve pas pourquoi ma commande fonctionne maintenant. Quelqu'un peut-il vous aider?

J'aimerais aussi pouvoir utiliser la fonction segment_list, mais la documentation sur la syntaxe à utiliser n'est pas très claire.

Voici la commande que j'ai utilisée:

C:\Users\3A01>ffmpeg -i f:\Transcoder\repo\LB000001.mp4 -f segment -segment_times 10,20 -c copy -map 0 f:\test.mp4

Voici la sortie:

C:\Users\3A01>ffmpeg -i f:\Transcoder\repo\LB000001.mp4 -f segment -segment_times 10,20 -c copy -map 0 f:\test.mp4
ffmpeg version N-82225-gb4e9252 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 5.4.0 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --   enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --   enable-libebur128 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-   iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --   enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --     enable-libzimg --enable-lzma --enable-decklink --enable-zlib
  libavutil      55. 35.100 / 55. 35.100
  libavcodec     57. 66.101 / 57. 66.101
  libavformat    57. 57.100 / 57. 57.100
  libavdevice    57.  2.100 / 57.  2.100
  libavfilter     6. 66.100 /  6. 66.100
  libswscale      4.  3.100 /  4.  3.100
  libswresample   2.  4.100 /  2.  4.100
  libpostproc    54.  2.100 / 54.  2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'f:\Transcoder\repo\LB000001.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 2016-03-10T20:46:05.000000Z
    encoder         : HandBrake 0.10.5 2016021100
  Duration: 00:29:43.08, start: 0.000000, bitrate: 869 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv,     smpte170m/bt470bg/bt709), 718x576 [SAR 16:15 DAR 359:270], 703 kb/s, 25 fps, 25    tbr, 90k tbn, 180k tbc (default)
    Metadata:
      creation_time   : 2016-03-10T20:46:05.000000Z
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo,     fltp, 160 kb/s (default)
    Metadata:
      creation_time   : 2016-03-10T20:46:05.000000Z
      handler_name    : Stereo
[mp4 @ 0000000000028200] Invalid segment filename template 'f:\test.mp4'
Could not write header for output file #0 (incorrect codec parameters ?):         Invalid argumentStream mapping:
      Stream #0:0 -> #0:0 (copy)
      Stream #0:1 -> #0:1 (copy)
    Last message repeated 1 times
Lewis909
la source

Réponses:

0

test.mp4devrait être test%d.mp4. Puisque vous allez créer plusieurs fichiers, vous devez fournir un nom de sortie avec un modèle que ffmpeg utilisera pour nommer plusieurs fichiers. Celui que j'ai fourni produira test1.mp4 test2.mp4...

Sachez que puisque vous utilisez le mode copie, les coupes peuvent ne pas se produire aux points spécifiés.

Gyan
la source
Merci! Cela a fonctionné et ouvert d'autres questions, par exemple, comment utilisez-vous les segments avec des points d'entrée et de sortie afin de créer une conformité?
Lewis909
Je ne vois pas une option pour définir des points de sortie. Vous pouvez essayer d’inclure les points de sortie dans la liste segment_times, puis de supprimer tous les autres segments créés, en commençant par le deuxième.
Gyan