0

J'utilise depuis quelques temps ce couple de commandes pour convertir un segment vidéo en gif animé, ayant ffmpeg calculer la meilleure palette pour cela:

 ffmpeg -ss $ START -i $ IN_FILE -t $ LONGUEUR -vf "fps = $ FPS, échelle = $ LARGEUR: -1: flags = lanczos, palettegen" palette.png
ffmpeg -ss $ START -i $ IN_FILE -i palette.png -t $ LONGUEUR -filter_complex "fps = $ FPS, échelle = $ LARGEUR: -1: flags = lanczos [x]; [x] [v:1]  paletteuse" output.gif

Cela fonctionne très bien pour les fichiers locaux, mais si je commence à utiliser des URL distantes pour $ IN_FILE il télécharge la partie requise deux fois – une fois pour la génération de la palette, une fois pour la conversion réelle. Le téléchargement complet du fichier à l'avance est généralement hors de question – souvent je m'intéresse à une très petite séquence au milieu d'une vidéo plus longue.

J'ai essayé de télécharger seulement la petite portion en utilisant -ss et -t et enregistrement sans réencodage dans un fichier temporaire:

 ffmpeg -ss $ START -i $ IN_URL -t $ LONGUEUR -vc copy -ac aucun temp.mkv

Dans ce cas j'évite le gaspillage de la bande passante (seule la partie pertinente du fichier est téléchargée, et seulement une fois), mais la recherche n'est plus précise, car -ss en entrée n'a que le

Lors de la conversion en gif en théorie, il serait possible de faire une recherche plus précise et de résoudre ce problème, mais il ne semble pas y avoir moyen d'obtenir le réel rechercher le point que j'ai traversé cette première approximation, donc il n'est pas possible de calculer où je devrais -ss dans le fichier temporaire. Jouer aussi avec -copy_ts n'a rien donné de bien.

Une autre possibilité pourrait être de réencoder déjà dans cette première étape (en appliquant peut-être l'échelle / rééchantillonnage dans le processus), mais j'aimerais éviter la perte de coût / qualité d'un encodage inutile supplémentaire.

Donc: comment puis-je effectuer la conversion de la meilleure palette vidéo en gif d'une petite partie d'un gros fichier réseau potentiellement efficace (= télécharger une fois, partie pertinente), avec recherche précise et sans recodages supplémentaires?