Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Découper une vidéo (avec ffmpeg ou avconv ?)

27 réponses
Avatar
Olivier Miakinen
Bonjour,

J'ai récupéré sur le web un extrait du journal télévisé de TF1, pour
un reportage qu'il m'intéresse de conserver. Le découpage n'étant pas
parfaitement calé (3 secondes en trop avant, quelques secondes en trop
après), j'ai voulu le redécouper avec ffmpeg, puis avec avconv suite
à un message annonçant que sur Ubuntu le premier était remplacé par le
second.

Après avoir recherché des infos dans le man et sur la toile, J'ai
essayé la commande suivante :

$ avconv -i source.mp4 -vcodec copy -acodec copy -ss 00:00:03 \
-t 00:02:11 dest.mp4

Résultat : le découpage est parfait pour l'image, par contre le son
démarre avec quelques secondes de retard, ce qui est parfaitement
insupportable. J'ai essayé la même chose en remplaçant avconv par
ffmpeg, et ai obtenu le même résultat.

Des idées ?

P.-S. : voici ce que m'affiche la commande ffmpeg (les fichiers source
et destination sont respectivement bisons0.mp4 et bisons2.mp4) :
========================================================================
> ffmpeg version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers
> built on Apr 2 2013 17:00:59 with gcc 4.6.3
> *** THIS PROGRAM IS DEPRECATED ***
> This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'bisons0.mp4':
> Metadata:
> major_brand : isom
> minor_version : 512
> compatible_brands: isomiso2avc1mp41
> encoder : Lavf54.32.101
> Duration: 00:02:33.60, start: 0.000000, bitrate: 745 kb/s
> Stream #0.0(und): Video: h264 (Main), yuv420p, 640x360 [PAR 1:1 DAR 16:9], 657 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc
> Stream #0.1(und): Audio: aac, 48000 Hz, stereo, s16, 80 kb/s
> Output #0, mp4, to 'bisons2.mp4':
> Metadata:
> major_brand : isom
> minor_version : 512
> compatible_brands: isomiso2avc1mp41
> encoder : Lavf53.21.1
> Stream #0.0(und): Video: libx264, yuv420p, 640x360 [PAR 1:1 DAR 16:9], q=2-31, 657 kb/s, 25 tbn, 25 tbc
> Stream #0.1(und): Audio: libvo_aacenc, 48000 Hz, stereo, 80 kb/s
> Stream mapping:
> Stream #0.0 -> #0.0
> Stream #0.1 -> #0.1
> Press ctrl-c to stop encoding
> frame= 3100 fps= 0 q=-1.0 Lsize= 11690kB time=130.92 bitrate= 731.5kbits/s
> video:10296kB audio:1297kB global headers:0kB muxing overhead 0.836823%
========================================================================

Cordialement,
--
Olivier Miakinen

7 réponses

1 2 3
Avatar
Olivier Miakinen
Le 09/04/2013 09:59, jdanield a écrit :

J'essaierai aussi, mais pas maintenant car je devrais déjà être parti
depuis longtemps. Merci !



tu ne pourra pas juger, alors, car on ne peut pas être juge et parti :-)



:-D
Avatar
Olivier Miakinen
Le 09/04/2013 11:00, Alf92 a écrit :

j'ai chargé la video et essayé de faite le cut.

avec FFMPEG :
------------------
ffmpeg -ss 3 -t 131 -i
Des_bisons_en_Loz_re_-_Replay_JT_Le_Journal_du_week-end_-_MY.MP4
-vcodec copy -acodec copy
Des_bisons_en_Loz_re_-_Replay_JT_Le_Journal_du_week-end_-_MY-FFMPEG-CUT.MP4
pause
------------------
resultat : pas de désynchro mais les 3 premières secondes n'ont pas été
coupées.
http://frpn.free.fr/0divers/testvideo/Des_bisons_en_Loz_re_-_Replay_JT_Le_Journal_du_week-end_-_MY-FFMPEG-CUT.MP4



En effet. C'est curieux, car je ne vois pas la différence avec la
commande que j'avais moi-même lancée. Peut-être une version de
ffmpeg différente ?

avec VideoRedo :
au chargement de la video VideoRedo m'indique une "erreur de
positionnement à 00:00:00" et propose de corriger.
si j'accepte de corriger le solt tourne en boucle.
si je ne corrige pas, le soft accepte de faire le cut proprement (les 3
seconde et la fin sont bien coupés) et il n'y a pas de désynchro.
http://frpn.free.fr/0divers/testvideo/Des_bisons_en_Loz_re_-_Replay_JT_Le_Journal_du_week-end_-_MY-VIDEORODO-CUT.mp4



Oui, c'est parfait ça.

autre essai avec FFMPEG :
cette fois ci je passe par une étape intermédiare
avec un container M2TS réputé robuste
------------------
ffmpeg -i
Des_bisons_en_Loz_re_-_Replay_JT_Le_Journal_du_week-end_-_MY.mp4 -bsf
h264_mp4toannexb -vcodec copy -acodec copy
Des_bisons_en_Loz_re_-_Replay_JT_Le_Journal_du_week-end_-_MY.M2TS

ffmpeg -ss 3 -t 131 -i
Des_bisons_en_Loz_re_-_Replay_JT_Le_Journal_du_week-end_-_MY.M2TS
-vcodec copy -absf aac_adtstoasc -acodec copy
Des_bisons_en_Loz_re_-_Replay_JT_Le_Journal_du_week-end_-_MY-FFMPEG2-CUT.MP4

pause
------------------
à noter que FFMPEG m'aréclamé les fitres
-bsf h264_mp4toannexb
et -absf aac_adtstoasc
dont j'ignore la fonction.
résultat : le cut est bien fait à la seconde 3 mais la video est noir
jusqu'à la seconde 6.
http://frpn.free.fr/0divers/testvideo/Des_bisons_en_Loz_re_-_Replay_JT_Le_Journal_du_week-end_-_MY-FFMPEG2-CUT.MP4



Chez moi, c'est même pire que ça : je ne vois rien d'autre qu'un écran
noir, même passé 6 secondes.

conclusion :
la video a bien un problème à son début.
seul VideoRedo semble capable de le traiter sans réencoder.
(je n'ai pas fait le test en réencodant la vidéo avec FFMPEG mais il
est probable que cela écrase le problème).



Encore merci pour le temps passé.
Avatar
Olivier Miakinen
Le 09/04/2013 22:57, pehache a écrit :

Fichier d'origine :
14,3 Mo
Avec -ss 0 -t 134 -acodec copy -codec copy :
12,6 Mo
Avec -ss 3.8 -t 130.2 :
12.7 Mo



OK... Il faudrait maintenant mettre quelques paramètres d'encodage pour
optimiser le résultat, si tant est que ça ait une importance pour ce que
tu fais de cette video.



Maitenant que j'ai réussi à obtenir un résultat correct grâce à ton
aide, ca n'a strictement aucune autre importance que la curiosité
d'essayer de comprendre comment ça marche.

Mais je passe la main à Alf pour ça :-)



:-)
Avatar
jdanield
Le 09/04/2013 22:59, pehache a écrit :

Il ne veut pas se caler sur les images clefs, justement, mais couper
là où il a envie de couper. Ce qui implique en principe un réencodage.



je ne suis pas sûr qu'il soit à une seconde près

jdd
Avatar
Alf92
jdanield a écrit :

Le 09/04/2013 22:59, pehache a écrit :

Il ne veut pas se caler sur les images clefs, justement, mais couper
là où il a envie de couper. Ce qui implique en principe un réencodage.



je ne suis pas sûr qu'il soit à une seconde près



il semble que le pb ne soit pas l'arret sur une keyframe puisque
VideoRedo a réussi à faire le cut proprement.
Avatar
jdanield
Le 10/04/2013 12:13, Alf92 a écrit :

il semble que le pb ne soit pas l'arret sur une keyframe puisque
VideoRedo a réussi à faire le cut proprement.




si tu ne recompile pas, tu ne peux pas faire un arret ailleurs que sur
une keyframe, donc soit tu le fais sans le dire, soit tu recompile au
moins le début de la video (entre le début et la première keyframe)

jdd
Avatar
Alf92
jdanield a formulé :
Le 10/04/2013 12:13, Alf92 a écrit :

il semble que le pb ne soit pas l'arret sur une keyframe puisque
VideoRedo a réussi à faire le cut proprement.




si tu ne recompile pas, tu ne peux pas faire un arret ailleurs que sur une
keyframe, donc soit tu le fais sans le dire, soit tu recompile au moins le
début de la video (entre le début et la première keyframe)



absolument.
c'est ce qui me fait dire que ce n'est pas un pb de keyframe sur la
video de notre ami.
1 2 3