Existem várias maneiras de fazer isso.
Opção 1: Use uma ferramenta de linha de comando chamada gifsicle . Está disponível nos repositórios padrão do Ubuntu / Debian.
É rápido e não afeta a qualidade. A compra só aceita números de quadros, não de tempo, por isso, se você precisar reduzir o tempo exato, você mesmo deverá descobrir o número do quadro. Você pode visualizar o número total de quadros e tempos de atraso entre cada quadro com este comando:
gifsicle --info YOURFILE.gif
Em seguida, você pode dividir o tempo que deseja cortar com o atraso do quadro e ele fornecerá o número de quadros neste tempo, para que você possa descobrir o quadro inicial e o quadro final.
Substitua XXXX pelo quadro em que você deseja que seu GIF seja iniciado e AAAA com o quadro onde deseja que seu GIF termine.
gifsicle YOURFILE.gif '#XXXX-YYYYY' -O3 > cut.gif
Opção 2: Usando o FFMPEG. Também está disponível no apt.
O FFMPEG aceita tempo diretamente, então é muito simples, mas pode piorar a qualidade do gif de saída e aumentar o tamanho do arquivo em alguns casos.
ffmpeg -i YOURFILE.gif -ss 00:00:04 -t 00:00:08 -async 1 cut.gif
Opção 3: se você estiver satisfeito com as ferramentas on-line e seu GIF não exceder 20 MB, esta ferramenta on-line um> pode cortar GIFs por número de quadro ou por tempo e não afetará a qualidade.