Glitchiness wanneer ik transparantie toevoeg aan een gif en deze converteer naar webm

Om te beginnen heb ik deze gif van google afbeeldingen:

Vervolgens converteer ik het blauw naar transparantie:

convert octopus.gif -transparent "#00AEFF" octopus-transparent.gif

Nu heb ik dit (let op: er is al een storing opgetreden)

Nu voor de grote finale, converteer ik het naar webm:

convert octopus-transparent.gif tmp%03d.png
ffmpeg -framerate 25 -f image2 -i ./tmp%03d.png -c:v libvpx -pix_fmt yuva420p octopus.webm

Zie de volgende schermafbeelding. Het is nog steeds transparant, maar de maatvoering is niet langer stabiel, en eerlijk gezegd begint het er een beetje griezelig uit te zien:

Ik weet niet echt veel over videocodecs en met de hulp van anderen ben ik zo ver gekomen. Ik zou graag advies krijgen over hoe ik deze commando’s kan veranderen om storingen te voorkomen.


Antwoord 1, autoriteit 100%

Uw probleem kan te wijten zijn aan frames van ongelijke grootte van een optimalisatie, dus voeg -coalesce toe aan uw opdracht, zodat het is

convert octopus.gif -coalesce -fuzz 25% -transparent "#00AEEF" miff:- | convert -dispose background - octopus-transparent.gif

Als je gewoon weer als gif wilt opslaan, kun je -laag optimaliseren toevoegen voordat je opslaat. Maar als u wilt uitvoeren naar webm, moet u mogelijk de -layers optimaliseren vermijden.

Ook heb je geen constante blauwe kleur, dus je hebt -fuzz nodig.

De pijp om te converteren, stelt u de mogelijkheid om de GRATIS-methode in te stellen. Het werkt niet in lijn in de eerste converteren, aangezien het nodig is na het lezen van de invoer en zal dus de blauwe achtergrond ophalen in plaats van de transparante.

Wat is uw IM-versie? Misschien heb je een upgrade nodig. Ik krijg dit met behulp van IM 6.9.8.3 Q16:

Other episodes