Je dois couper juste les 1 ou 2 premières secondes d'une série d'enregistrements FLV de longueurs variables et non spécifiées. J'ai trouvé de nombreuses ressources pour extraire une durée spécifique d'une vidéo (par exemple, des clips de 30 secondes), mais aucune pour continuer jusqu'à la fin d'une vidéo.
Ces deux tentatives ne donnent qu'une version copiée de la vidéo, sans le rognage souhaité:
ffmpeg -ss 2 -vcodec copy -acodec copy -i input.flv output.flv
ffmpeg -ss 2 -t 120 -vcodec copy -acodec copy -i input.flv output.flv
La pensée sur le second était: peut-être que si je spécifiais une longueur au-delà de ce qui était possible, cela irait jusqu'au bout. Pas de dé.
Je sais que ce n'est pas un problème avec les codecs ou d'utiliser des secondes au lieu du code temporel puisque ce qui suit a fonctionné comme un charme:
ffmpeg -ss 2 -t 5 -vcodec copy -acodec copy -i input.flv output.flv
D'autres idées? Je suis ouvert à l'utilisation d'autres outils de ligne de commande (basés sur Windows), mais je préfère fortement ffmpeg, car je l'utilise déjà pour la création de miniatures et je le connais bien.
Si cela peut aider, mes vidéos dureront moins de 2 minutes.
METTRE À JOUR:
Je suis passé à utiliser Mencoder ( http://www.mplayerhq.hu/ ) car il semble que ffmpeg ne le fera pas sans un peu plus de hackery.
La syntaxe Mencoder pour accomplir ce que je voulais faire est la suivante:
mencoder.exe -ss 2 -oac copy -ovc copy input.flv -o output.flv
mencoder
exemple, ci-dessus; ou laffmpeg
exemple, ci-dessous?Réponses:
Essayer:
Je pense que le paramètre d'entrée est censé être le premier.
la source
-i
) lors de la copie, voire du transcodage avec une version antérieure de FFmpeg, utilise la recherche d’images clés. C'est beaucoup plus rapide, mais sacrifie la précision. Si vous l'utilisez comme paramètre de sortie, le processus est potentiellement beaucoup plus lent (l'entrée est décodée image par image même pour les parties ignorées), mais précise. Même si la question est ancienne, je pense que cela devrait être la réponse acceptée.Tourne cette commande volonté Coupez la vidéo à partir de 2 secondes, comme prévu:
Le problème concernait l'intervalle d'images clés dans input.flv. Il était réglé sur 5 secondes, ce qui donnait 3 secondes d'images noires au début de la vidéo (5 - 2 = 3). J'ai depuis changé mon intervalle d'images clés à 1 seconde, bien que 2 secondes donnent probablement aussi les résultats souhaités dans mon cas.
METTRE À JOUR: Mise à jour de la commande de
-i
et-ss
paramètres par réponse de Dave, que j'ai accepté pour crédit.la source
-vcodec copy -acodec copy
pour toutes mes commandes d'édition. Le ré-encodage a empêché les images noires dès le début de ma vidéo ou de ne pas couper au bon endroit (la différence d’une seconde sans pour autant le ré-encodage se traduisait par une différence de presque 5 secondes dans la vidéo). Donc, j'ai fini par remplacer-vcodec copy
avec-vcodec libx264 -crf 0
.-vcodec copy
parce que la tranche ne commence pas sur une image clé. Je recevais une image fixe ou une image noire pendant N secondes jusqu'à la prochaine image clé. Si je ré-encode plutôt que de copier, cela fonctionne comme prévu. Donc, même si mon entrée et ma sortie sont à la fois H264, je devais tout de même ré-encoder (en utilisant-vcodec libx264
au lieu de-vcodec copy
).-i
devrait venir avant la-ss
.