j'utilise cette commande pour couper un segment d'une vidéo à partir de la ligne de commande
ffmpeg -i %1 -vcodec copy -acodec copy -ss %2 -t %3 %~n1_cut%~x1
et je l'appelle comme
cut.bat video.mp4 001:23:45:678 10
et comme prévu, j'obtiens un video_cut.mp4 avec 10 secondes de la vidéo d'origine, le problème est que quelques secondes du fichier résultant sont un écran noir avec audio, pourquoi cela se produit-il et comment le corriger?
%~n1
développe% 1 en un nom de fichier, ou si seul un chemin d'accès est présent (sans barre oblique inverse) - le dernier dossier de ce chemin d'accès et%~x1
développe% 1 en un fichier eXtension uniquement - .txt source: superuser.com/questions/ 224416 /…Réponses:
La plupart des vidéos utilisent des codecs qui effectuent une compression temporelle, donc un point de coupure spécifié peut s'appuyer sur des images avant (et après) ce point de coupure pour être décodé correctement. Ainsi, lorsque vous utilisez ffmpeg pour découper des vidéos et utiliser le
copy
mode, ffmpeg doit inclure toutes les images avant et après le segment découpé qui sont nécessaires pour décoder correctement le segment.Donc, vous avez deux options, utilisez le mode copie mais réglez un commutateur qui permettra à tous les joueurs de lire correctement ces fichiers
(cela entraînera probablement une sortie qui commence avant votre point de coupure)
ou ré-encoder les flux
la source
-t
option.%
? J'ai essayé de rechercher ffmpeg.org/ffmpeg.html mais je ne trouve pas l'utilisation.-ss
et-t
avant-i
et cela a fonctionné, avant, je n'ai mis que-ss
avant-i
et-t
après, donc ça n'a pas fonctionné.https://github.com/mifi/lossless-cut/pull/13
Lorsque j'exécute ffmpeg avec les arguments dans cet ordre -i ... -ss ... -t ..., il produit un fichier vidéo qui n'a pas de vidéo pendant quelques secondes initiales. (pour autant que je puisse comprendre, c'est parce qu'il ne cherche pas une image clé?)
Si je change l'ordre en -ss ... -i ... -t ..., les vidéos coupées résultantes sont lues correctement.
ma
ffmpeg -version
la source
-ss
avant-i
mais cela n'a pas fonctionné sur mon fichier mp4.