web-dev-qa-db-fra.com

Comment supprimer quelques secondes du fichier .mp4 en utilisant ffmpeg?

Comment supprimer quelques secondes du fichier .mp4 en utilisant ffmpeg? J'ai le fichier test.mp4 et je veux supprimer les 10s de 11h00 à 11h10

5
Demo Django

Vous pouvez essayer de le faire sans ré-encoder, mais comme vous ne pouvez couper que sur des images clés, elles ne seront probablement pas alignées sur les temps de coupe souhaités. Si vous avez besoin de précision, vous devrez donc ré-encoder:

ffmpeg -i input.mp4 -filter_complex \
  "[0:v]trim=end=660,setpts=N/FRAME_RATE/TB[v0]; \
   [0:a]atrim=end=660,asetpts=N/SR/TB[a0]; \
   [0:v]trim=start=670,setpts=N/FRAME_RATE/TB[v1]; \
   [0:a]atrim=start=670,asetpts=N/SR/TB[a1]; \
   [v0][a0][v1][a1]concat=n=2:v=1:a=1[v][a]" \
  -map "[v]" -map "[a]" output.mp4
  • (a) trim vous permettra de choisir vos clips.
  • (a) setpts réinitialise les horodatages.
  • concat concatène les clips.

Voir Documentation de filtre FFmpeg pour plus de détails sur chaque filtre.

2
llogan

Je pense que vous devez couper la vidéo en 2 parties, puis les fusionner. la première "valeur temporelle" est le point de départ, la deuxième "valeur temporelle" est la longueur de la vidéo que vous souhaitez couper. En dessous, par exemple, la première découpe commence à 00:00:00 et dure 11 minutes, la seconde coupe commence à 11 minutes 10 secondes et dure 10 minutes.

coupe:

ffmpeg -i test.mp4 -ss 00:00:00 -t 00:11:00 -acodec copy -vcodec copy test1.mp4

ffmpeg -i test.mp4 -ss 00:11:10 -t 00:10:00 -acodec copy -vcodec copy test2.mp4

fusionner:

cat test1.mp4 test2.mp4 >> test3.mp4

Je n'ai pas essayé, laissez-moi savoir si cela fonctionne.

1
JerQ