L'utilisation de -ss en tant qu'option d'entrée avec -c: v copy risque de ne pas être précise, car ffmpeg est obligé d'utiliser uniquement / split sur les images i. Bien que cela puisse, si possible, ajuster l'heure de début du flux à une valeur négative pour compenser cela. Fondamentalement, si vous spécifiez "seconde 157" et qu'il n'y a pas d'image clé avant la seconde 159, deux secondes d'audio (sans vidéo) sont incluses au début, puis démarrent à partir de la première image clé . Soyez donc prudent lorsque vous séparez et copiez le codec.
Pour éviter cela, j'ai d'abord essayé de trouver les horodatages des images nécessaires pour -ss
et -to
en construisant une tuile de toutes les images proches. J'ai généré les tuiles en utilisant
ffmpeg -i "INPUT.mkv" -ss 09:55 -t 3 -vf "drawtext=fontfile=I\\:\Misc\\\\~Software\\\\~OS\\\\I386\\\\arial.ttf: fontsize=60: text='F%{n}\(%{pict_type}\)\@%{pts\:hms}': x=(w-tw)/2: y=h-(2*lh): fontcolor=white: box=1: boxcolor=0x00000000@1,scale=320:-1,tile=layout=12x10" tiles%03d.png
et selon eux, l'image clé nécessaire devrait commencer à 00: 09: 56.012, et la dernière image nécessaire devrait être 00: 10: 00.224. Cependant, le fragment créé lors de la découpe avec ces horodatages
ffmpeg -i "INPUT.mkv" -map 0:0 -map 0:4 -map 0:5 -map 0:6 -ss 09:56.012 -to 00:10:00.224 -vcodec copy -acodec copy J01.mkv
commence à une image non clé (son seulement) et se termine également au mauvais endroit. En revanche, couper le même fragment dans Avidemux fonctionne bien, même si les paramètres de sortie Copy
vidéo et audio sont définis sur (IIUC, pas de réencodage et démarrer à partir d'une image sans clé). Les horodatages affichés dans Avidemux sont également différents ( -ss 09:56.346 -to 10:00.558
vs -ss 09:56.012 -to 10:00.224
).
J'ai également essayé de couper par pkt_dts_time ( https://stackoverflow.com/questions/14005110/ ), mais cela n'a pas fonctionné non plus.
ps Une autre procédure similaire à ce que j'essaie de faire (à Avidemux susmentionné) consiste à effectuer un zoom avant dans la chronologie de Sony Vegas jusqu'à ce que vous puissiez passer d'une image à l'autre, puis définir la première image après le changement de scène (qui clé) en tant que point de départ et dernière image de la même scène (après quoi vient la prochaine image clé non nécessaire) en tant que point final, puis le rendu. Quelque chose comme cela peut également être fait dans Avidemux tout en copiant les flux vidéo et audio.
edit1: Voici le journal de la -copyts
version: pastebin. com / Cxzrc8Er. Devrais-je faire les autres aussi?
edit2: Voici les résultats pour "PATHTO\ffprobe.exe" -select_streams v -show_entries packet=pts_time,flags -of compact -read_intervals 580%600 "INPUT.mkv" | findstr K
.
packet|pts_time=578.160000|flags=K
packet|pts_time=581.205000|flags=K
packet|pts_time=583.499000|flags=K
packet|pts_time=585.042000|flags=K
packet|pts_time=588.671000|flags=K
packet|pts_time=594.885000|flags=K
packet|pts_time=596.012000|flags=K
J'ai également essayé toute la combinaison de commandes (mosaïques, listant les cadres de cette façon, découpant fragment de deux manières différentes) sur 2 autres vidéos, et les résultats sont similaires. Les durées des images clés listées dans le terminal à l’aide de votre commande suggérée correspondent à celles des tuiles créées par le mien; et généralement, couper avec ma méthode laisse une petite section gelée (~ 1s) au début et parfois plusieurs images indésirables à la fin et couper avec votre méthode laisse un flux vidéo vide plus long au début.
J'ai également trouvé un meilleur fragment vidéo à expérimenter, car il est visuellement plus facile de déterminer le nombre de trames recherchées manquantes et d'indépendants ajoutés (imgur.com / a / DTzmt, une partie appropriée peut être téléchargée à l'adresse bit.ly / Kmnz112f1). Votre solution a également mieux fonctionné.
De plus, pour vous assurer que: Voulez-vous dire -ss 09: 56.01 3 et non -ss 09: 56.01 2 dans votre solution d'origine? Et ai-je raison de supposer que cela fonctionne généralement avec les vidéos que vous coupez et que ce n'est pas le cas pour les miennes?
la source
-ss 15.399
j'utilise une sortie avec la première trame comme première image du changement de scène par rapport à l'escalator. Avec-ss 15.398
, il coupe de l'image clé avant.Réponses:
Essayer
la source
ffprobe -select_streams v -show_entries packet=pts_time,flags -of compact -read_intervals 580%600 input.mkv | findstr K