Como criar imagens GIF animadas de um screencast?

476

Vi imagens GIF animadas de transmissões de tela (como a abaixo) promovidas algumas vezes neste site como uma maneira de melhorar as respostas.

Imagem GIF animada

Que cadeia de ferramentas está sendo usada para criá-las? Existe um programa que faça isso automaticamente, ou as pessoas fazem screencasts, os convertem em uma série de quadros estáticos e criam as imagens GIF?

andrewsomething
fonte
6
O LICEcap (http://www.cockos.com/licecap) é muito mais simples do que qualquer uma das soluções abaixo, porque é baseado em GUI. É grátis como em liberdade e preço. A única desvantagem é que você deve executá-lo via Wine.
Dennis
4
Relacionado: Screencasting GIF; a maneira UNIX do Unix e Linux Stack Exchange.
Cristian Ciupitu
2
Esta captura de tela de exemplo é tirada no Windows?
Clément
@ Clément Essa foi a primeira coisa que notei, também :)
UniversallyUniqueID

Respostas:

269

Olhadinha

É um novo aplicativo que permite gravar facilmente GIFs na tela.

demonstração de screencast

De qualquer forma, lembre-se de que os GIFs têm uma paleta de cores muito limitada, portanto, não é uma boa ideia usá-los.

Desde o Ubuntu 18.10, você pode instalar o Peek diretamente.

sudo apt install peek

Para versões mais antigas do Ubuntu, você pode instalar as versões mais recentes do Peek a partir do seu PPA .

sudo add-apt-repository ppa:peek-developers/stable
sudo apt update
sudo apt install peek

Encontre mais informações no repositório do GitHub .

stommestack
fonte
2
Sim, este é ótimo. seu só funciona com X11 e é direcionado a GNOME 3.
Ajith R Nair
2
@BeastWinterwolf e ExillustX: não publique relatórios de erros aqui, use o rastreador de problemas em que as pessoas realmente se preocupam em vê-los! Relate-o aqui: github.com/phw/peek/issues
oligofren
2
Essa é uma ótima ferramenta.
Mike
1
@Jop V. como você fez um registro de um registro?
milkovsky
1
@milkovsky Eu não gravei isso. Dito isto, acho que eles usaram uma máquina virtual e gravaram isso.
Stommestack
272

Byzanz

O melhor software que já encontrei para gravar screencasts de GIF é o Byzanz.

O Byzanz é ótimo porque grava diretamente no GIF, a qualidade e o FPS são impressionantes, mantendo o tamanho dos arquivos no mínimo.

Instalação

O Byzanz agora está disponível no repositório do universo:

sudo apt-get install byzanz

Uso

Quando está instalado, você pode executá-lo em um terminal.

Este é um pequeno exemplo que fiz agora com

byzanz-record --duration=15 --x=200 --y=300 --width=700 --height=400 out.gif

insira a descrição da imagem aqui

Bruno Pereira
fonte
3
Obrigado, boa ferramenta! As cores nem sempre são precisas, mas esse é um detalhe menor. Eu escrevi um script de shell que ajuda a capturar uma janela (selecionada em tempo de execução pelo usuário), postada em uma resposta abaixo .
W
57
Byzanz não tem nenhuma interface de usuário! Devo adivinhar o x, y, a largura e a altura da área que quero gravar? É um pouco ridículo que em 2014 eu ainda tivesse que fazer isso.
Dan Dascalescu
5
@ DanDascalescu Ninguém diz que você precisa usá-lo ... Eu prefiro muito mais um terminal do que uma GUI, o que há de errado nisso?
Bruno Pereira
31
@DanDascalescu Não há necessidade de adivinhar. Você pode usar xwininfopara obter as propriedades da janela.
Marcus Møller 21/01
4
Alguma maneira de evitar ter que saber a duração com antecedência? Ao gravar, nunca sei com antecedência quanto tempo levará.
Nicolas Raoul
236

Primeiro instale isto:

sudo apt-get install imagemagick mplayer gtk-recordmydesktop

esses são os materiais necessários, ImageMagick, MPlayer e Desktop Recorder. Em seguida, use o Desktop Recorder para capturar uma parte da tela / aplicativo a ser usada como screencast. Depois que o Desktop Recorder salvou a gravação em um vídeo OGV , o MPlayer será usado para capturar capturas de tela JPEG, salvando-as no diretório 'output'.

Em um terminal:

mplayer -ao null <video file name> -vo jpeg:outdir=output

Use o ImageMagick para converter as capturas de tela em gifs animados.

convert output/* output.gif

você pode otimizar as capturas de tela da seguinte maneira:

convert output.gif -fuzz 10% -layers Optimize optimised.gif
maniat1k
fonte
35
Outra maneira de otimizar o gif é usar o gifsicle: gifsicle -O in.gif -o out.giftentei e obtive uma redução de 100x no tamanho do arquivo.
Yrogirg
10
Para aqueles que querem saber, a primeira bandeira no comando @Yrogirg é uma capital "O", e não o dígito "0" :)
Brandizzi
2
Uau, o gifsicle acabou de tornar o meu mais rápido, mas não menor, e o comando convert optimize tornou-o realmente feio.
MalcolmOcean
6
Eu recomendo combinando as duas últimas convertetapas em um: convert output/* -layers Optimize output.gif. Para mim, isso acelerou o tempo de processamento e diminuiu o arquivo de saída. Não vejo motivo para executar essas etapas separadamente. (Eu não tentei o -fuzz 10%argumento.) #
Thejoshwolfe
1
Como @MalcolmOcean, a convertdeclaração deixou tudo horrível. De acordo com os documentos ( imagemagick.org/script/command-line-options.php#layers ), a optimizeimplementação pode mudar com o tempo. Mas uma convertdeclaração levemente modificada com a -coalescebandeira melhorou as coisas, mas ainda não foi para onde era aceitável. Acabei tendo que usar a -layers optimize-transparencyconfiguração para obter melhores resultados:convert 'output/*.jpg' -coalesce -layers optimize-transparency optimised.gif
136

visão global

Esta resposta contém três scripts de shell:

  1. byzanz-record-window - Para selecionar uma janela para gravação.
  2. byzanz-record-region - Para selecionar uma parte da tela para gravação.
  3. Um front-end simples da GUI para 1, do MHC .

Introdução

Obrigado Bruno Pereira por me apresentarbyzanz ! É bastante útil para criar animações GIF. As cores podem estar desativadas em alguns casos, mas o tamanho do arquivo compensa isso. Exemplo: 40 segundos, 3.7Mb .

Uso

Salve um / todos os dois scripts a seguir em uma pasta dentro do seu $PATH. Aqui está um exemplo de como usar o primeiro script para criar um screencast de uma janela específica.

  1. Corre byzanz-record-window 30 -c output.gif
  2. Vá para a janela (alt-tab) que você deseja capturar. Clique nisso.
  3. Aguarde 10 segundos (codificados $DELAY), nos quais você se prepara para gravar.
  4. Após o sinal sonoro (definido na beepfunção), byzanzserá iniciado.
  5. Após 30 segundos (esse é o significado da 30etapa 1), byzanztermina. Um sinal sonoro será transmitido novamente.

Eu incluí o -csinalizador byzanz-record-windowpara ilustrar que quaisquer argumentos ao meu script shell são anexados a byzanz-recordele mesmo. A -cbandeira diz byzanzpara incluir também o cursor no screencast.
Veja man byzanz-recordou byzanz-record --helppara mais detalhes.

byzanz-record-window

#!/bin/bash

# Delay before starting
DELAY=10

# Sound notification to let one know when recording is about to start (and ends)
beep() {
    paplay /usr/share/sounds/KDE-Im-Irc-Event.ogg &
}

# Duration and output file
if [ $# -gt 0 ]; then
    D="--duration=$@"
else
    echo Default recording duration 10s to /tmp/recorded.gif
    D="--duration=10 /tmp/recorded.gif"
fi
XWININFO=$(xwininfo)
read X <<< $(awk -F: '/Absolute upper-left X/{print $2}' <<< "$XWININFO")
read Y <<< $(awk -F: '/Absolute upper-left Y/{print $2}' <<< "$XWININFO")
read W <<< $(awk -F: '/Width/{print $2}' <<< "$XWININFO")
read H <<< $(awk -F: '/Height/{print $2}' <<< "$XWININFO")

echo Delaying $DELAY seconds. After that, byzanz will start
for (( i=$DELAY; i>0; --i )) ; do
    echo $i
    sleep 1
done

beep
byzanz-record --verbose --delay=0 --x=$X --y=$Y --width=$W --height=$H $D
beep

byzanz-record-region

Dependência: xrectselde xrectsel . Clone o repositório e execute makepara obter o executável. (Se protestar, não há makefile, execute ./bootstrape ./configureantes de executar o `make).

#!/bin/bash

# Delay before starting
DELAY=10

# Sound notification to let one know when recording is about to start (and ends)
beep() {
    paplay /usr/share/sounds/KDE-Im-Irc-Event.ogg &
}

# Duration and output file
if [ $# -gt 0 ]; then
    D="--duration=$@"
else
    echo Default recording duration 10s to /tmp/recorded.gif
    D="--duration=10 /tmp/recorded.gif"
fi

# xrectsel from https://github.com/lolilolicon/xrectsel
ARGUMENTS=$(xrectsel "--x=%x --y=%y --width=%w --height=%h") || exit -1

echo Delaying $DELAY seconds. After that, byzanz will start
for (( i=$DELAY; i>0; --i )) ; do
    echo $i
    sleep 1
done
beep
byzanz-record --verbose --delay=0 ${ARGUMENTS} $D
beep

Versão Gui de byzanz-record-window

(comentário do MHC ): tomei a liberdade de modificar o script com um simples diálogo GUI

#!/bin/bash

# AUTHOR:   (c) Rob W 2012, modified by MHC (https://askubuntu.com/users/81372/mhc)
# NAME:     GIFRecord 0.1
# DESCRIPTION:  A script to record GIF screencasts.
# LICENSE:  GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
# DEPENDENCIES:   byzanz,gdialog,notify-send (install via sudo add-apt-repository ppa:fossfreedom/byzanz; sudo apt-get update && sudo apt-get install byzanz gdialog notify-osd)

# Time and date
TIME=$(date +"%Y-%m-%d_%H%M%S")

# Delay before starting
DELAY=10

# Standard screencast folder
FOLDER="$HOME/Pictures"

# Default recording duration
DEFDUR=10

# Sound notification to let one know when recording is about to start (and ends)
beep() {
    paplay /usr/share/sounds/freedesktop/stereo/message-new-instant.oga &
}

# Custom recording duration as set by user
USERDUR=$(gdialog --title "Duration?" --inputbox "Please enter the screencast duration in seconds" 200 100 2>&1)

# Duration and output file
if [ $USERDUR -gt 0 ]; then
    D=$USERDUR
else
    D=$DEFDUR
fi

# Window geometry
XWININFO=$(xwininfo)
read X < <(awk -F: '/Absolute upper-left X/{print $2}' <<< "$XWININFO")
read Y < <(awk -F: '/Absolute upper-left Y/{print $2}' <<< "$XWININFO")
read W < <(awk -F: '/Width/{print $2}' <<< "$XWININFO")
read H < <(awk -F: '/Height/{print $2}' <<< "$XWININFO")

# Notify the user of recording time and delay
notify-send "GIFRecorder" "Recording duration set to $D seconds. Recording will start in $DELAY seconds."

#Actual recording
sleep $DELAY
beep
byzanz-record -c --verbose --delay=0 --duration=$D --x=$X --y=$Y --width=$W --height=$H "$FOLDER/GIFrecord_$TIME.gif"
beep

# Notify the user of end of recording.
notify-send "GIFRecorder" "Screencast saved to $FOLDER/GIFrecord_$TIME.gif"
Rob W
fonte
17
Esses scripts são mantidos em algum lugar como o github? Eles são super úteis, seria bom se eles fossem mantidos em algum lugar melhor que o texto na resposta do StackOverflow.
KFro
1
@KFro Este é o Ask Ubuntu, não SO;) Não, eu não os coloquei em um repositório git, porque os scripts em si estão mal documentados (para os usuários). A documentação que acompanha está incluída na resposta, portanto não vejo nenhum benefício em dividir os arquivos e a documentação em um repositório Git.
22415 Robert W
1
Não há mais créditos para edição, mas pronto ;-).
Rmano 4/14
2
Só queria agradecer imensamente por esta - resposta incrível e me ajudou muito. Aqui está o que eu acabei com. Também gosto de usar se notify-sendo som estiver desligado.
22915 Daniel Buckmaster
2
@Masi Byzanz - e esses scripts - funcionar muito bem para mim em 16.04
Jeff Puckett
51

ffmpeg Instale o ffmpeg

Uma das melhores ferramentas que eu uso é ffmpeg. Ele pode pegar a maioria dos vídeos de uma ferramenta de screencast, como kazamconvertê-los em outro formato.

Instale isso no centro de software - ele será instalado automaticamente se você instalar o excelente ubuntu-restricted-extraspacote.

O Kazam pode produzir nos formatos de vídeo mp4ou webm. Geralmente, você obtém melhores resultados em mp4formato.

exemplo de sintaxe de criação de GIF

A sintaxe básica para converter vídeo em gif é:

ffmpeg -i [inputvideo_filename] -pix_fmt rgb24 [output.gif]

GIFs convertidos - especialmente aqueles com 25/29 quadros por segundo padrão podem ser muito grandes. Por exemplo - um vídeo de 800Kb webm de 15 segundos e 25fps pode gerar 435Mb!

Você pode reduzir isso por vários métodos:

taxa de quadros

Use a opção -r [frame-per-second]

por exemplo ffmpeg -i Untitled_Screencast.webm -r 1 -pix_fmt rgb24 out.gif

Tamanho reduzido de 435Mb para 19Mb

limite de tamanho de arquivo

Use a opção -fs [filesize]

por exemplo ffmpeg -i Untitled_Screencast.webm -fs 5000k -pix_fmt rgb24 out.gif

Nota - este é um tamanho aproximado do arquivo de saída, portanto o tamanho pode ser um pouco maior que o especificado.

tamanho do vídeo de saída

Use a opção -s [widthxheight]

por exemplo ffmpeg -i Untitled_Screencast.webm -s 320x200 -pix_fmt rgb24 out.gif

Isso reduziu o tamanho do vídeo de 1366x768 de exemplo para 26Mb

loop para sempre

Às vezes, você pode querer que o GIF faça um loop para sempre.

Use a opção -loop_output 0

ffmpeg -i Untitled_Screencast.webm -loop_output 0 -pix_fmt rgb24 out.gif

otimizar e encolher ainda mais

se você usar imagemagick convertcom um fator de distorção entre 3% e 10%, poderá reduzir drasticamente o tamanho da imagem

convert output.gif -fuzz 3% -layers Optimize finalgif.gif

finalmente

combine algumas dessas opções para reduzir a algo gerenciável para o Ask Ubuntu.

ffmpeg -i Untitled_Screencast.webm -loop_output 0 -r 5 -s 320x200 -pix_fmt rgb24 out.gif

Seguido por

convert output.gif -fuzz 8% -layers Optimize finalgif.gif

exemplo

insira a descrição da imagem aqui

liberdade de expressão
fonte
Se você tem Docker e seu vídeo é demo.mkvque você pode executar este comandos: docker run --rm -v $(pwd):/tmp/video/ jrottenberg/ffmpeg -i /tmp/video/demo.mkv -framerate 1/2 -pix_fmt rgb24 -loop 0 /tmp/video/demo.gif,sudo chown $USER:$USER demo.gif
czerasz
2
Para mim, reclama que não existe tal opção como -loop_output...
1
+1 Melhor resposta. Mas um q vc ainda acha ubuntu-restricted-extrasexcelente ??
Severus Tux
1
@ParanoidPanda agora a opção é -loop. Assim seria -loop 0. Aqui está um comando que funciona no Ubuntu 16.04.01 ffmpeg -f x11grab -r 25 -s 100x100 -i :0.0+500,500 -pix_fmt rgb24 -loop 0 out2.gif. +500,500é a posição X, Y para iniciar o retângulo 100x100. xgrabtoma a tela como entrada.
sanbor
34

Silentcast

O Silentcast é outra ótima ferramenta baseada em GUI para criar imagens .gif animadas. Suas características incluem:

  • 4 modos de gravação:

    1. Tela inteira

    2. Janela interior

    3. Janela com decoração

    4. Seleção personalizada

  • 3 formatos de saída:

    1. .gif

    2. .mp4

    3. .webm

    4. .png (quadros)

    5. .mkv

  • Não é necessária instalação (portátil)

  • Diretório de trabalho personalizado

  • Fps personalizados

Instalação

Se você deseja uma instalação regular e está executando uma versão suportada do Ubuntu, pode instalar o Silentcast by PPA:

sudo add-apt-repository ppa:sethj/silentcast  
sudo apt-get update  
sudo apt-get install silentcast  

Se você não está executando uma versão suportada do Ubuntu (você realmente deve atualizar!), Precisará baixar a versão mais recente da página do GitHub e satisfazer manualmente as dependências (você pode adquirir o yad e o ffmpeg daqui e aqui, respectivamente) ou, se você estiver executando uma versão um pouco mais recente, como a 13.10, tente fazer o download do .deb diretamente .

Se você estiver usando o Gnome, poderá instalar a extensão Topicons para facilitar a interrupção do Silentcast.

Uso

Inicie o Silentcast a partir da interface gráfica do seu ambiente de área de trabalho ou execute o silentcastcomando em um terminal. Escolha suas configurações e siga as instruções na tela. Quando terminar de gravar, você verá uma caixa de diálogo para otimizar a saída final removendo um certo número de quadros.

Para diretrizes de uso mais detalhadas, consulte o README, a versão on - line do GitHub ou a versão local armazenada no /usr/share/doc/silentcastzless ou no seu editor favorito.

Exemplo

Notas:

O Silentcast ainda está em fase de desenvolvimento e, embora seja bastante estável, você pode encontrar alguns bugs. Se sim, informe-os no rastreador de problemas do GitHub do projeto . Se você tiver problemas para instalar a partir do PPA e estiver executando uma versão suportada do Ubuntu, deixe um comentário abaixo ou entre em contato com o mantenedor (me) no Launchpad.

Seth
fonte
assim que eu bati 'Stop' ele trava ...
Francisco Corrales Morales
@FranciscoCorralesMorales Você pode executá-lo na linha de comando e tentar? Depois de travar, pegue a saída e faça o upload para paste.ubuntu.com e vincule-o aqui para que eu possa dar uma olhada. Obrigado!
Seth
1
Posso confirmar que isso funciona muito bem! Ele cria um arquivo .gif muito pequeno (650 KB) com ótima resolução fora das janelas abertas, conforme exibido nesta resposta: askubuntu.com/questions/882419/… Posso adicionar o pôster @Seth é um cara legal e me ajudou na AU sala de bate-papo geral configurá-lo :)
WinEunuuchs2Unix 11/11
O projeto é abandonado? Não há nenhum commit no repositório há quase dois anos.
Flux
@ Flux infelizmente, entre problemas de saúde e uni, sim. O repositório está abandonado no momento. O projeto no GitHub não é, no entanto, e você pode obter o código mais recente lá.
Seth
8

Existem todos os tipos de maneiras complicadas e bem-funcionais (presumivelmente) de fazer isso listadas aqui. No entanto, eu nunca quis passar por esse processo antes nem depois. Portanto, eu simplesmente uso um conversor on-line que atenda às minhas necessidades nas poucas vezes em que for necessário. Eu usei este site:

http://ezgif.com/video-to-gif

Não é o meu site e não sou afiliado a eles de forma alguma. Eles são os únicos nos meus favoritos e existem muitos mais.

KGIII
fonte
Eu gosto disso. Eu já uso o simplescreenrecorder para gravar minha área de trabalho no youtube por ocasião, por isso, transformar o mkv em um gif foi fácil com isso.
Isaaclw
8

Eu criei record-gif.shuma versão melhorada do Rob W'sbyzanz-record-region :

Uma interface gráfica fraca byzanz, melhorou a experiência do usuário ( área selecionável pelo mouse , barra de progresso de gravação, gravação com capacidade de reprodução ).

gravar área de trabalho com shell

  • definir gravação duration;
  • definir save_asdestino;
  • selecione - com o mouse - a área a ser gravada;
  • crie um script para reproduzir a gravação (cf. $HOME/record.again).

Instalar

Eu também criei um script de instalação

curl --location https://git.io/record-gif.sh | bash -
Édouard Lopez
fonte
1
Você precisa fazer sudo apt install autoconf byzanzantes de executar este script. não está instalado por padrão no ubuntu
Crantisz 17/10
Obrigado @Crantisz, atualizei o script de instalação para instalar autoconfe byzanz. Você poderia tentar?
Édouard Lopez
Acabei de testar em outro PC. Não há git no meu sistema ubuntu recém-instalado. E não sei por que, mas o script para logo após a segunda pergunta Y / N do apt-get. Você pode empacotar todas as dependências em um comando?
Crantisz
@Crantisz o comando é um script de instalação, se você quiser apenas record-gif.sh você pode obtê-lo a partir do repo
Édouard Lopez
4
  1. Instale estes 3 pacotes: imagemagick mplayer gtk-recordmydesktop
  2. Execute o Desktop Recorder para capturar uma parte da tela / aplicativo a ser usada como screencast
  3. Faça o download ogv2gif.shem https://github.com/nicolas-raoul/ogv2gif
  4. Corre: ./ogv2gif.sh yourscreencast.ogv
  5. O arquivo GIF será colocado no mesmo diretório

100% inspirado na resposta de maniat1k .

Nicolas Raoul
fonte
3

Se você quiser ficar ainda mais sofisticado, use um método mais sofisticado do que os gifs animados usando o screencasting de tela HTMl5. O projeto x11-canvas-screencast criará uma captura de tela animada em tela html5.

Você pode ter visto alguns exemplos famosos dessa tecnologia no site Sublime Text. x11-canvas-screencastleva esse método um passo adiante ao incorporar o rastreamento do cursor do mouse. Aqui está uma demonstração do que o x11-canvas-screencast produz

O resultado é melhor do que um gif animado, pois não se limita ao número de cores que possui e ocupa menos largura de banda.

gene_wood
fonte
1
Isso é bom e tudo, mas você não pode facilmente compartilhar este, por exemplo Slack, Twitter etc.
Elias Lynn
@ElijahLynn very true. Esta solução é otimizada para alta taxa de quadros, baixa largura de banda e profundidade de cores. Não é portátil (para incorporar em um tweet, por exemplo), pois requer javascript.
gene_wood
3

Ok, então para capturar também os cliques do mouse, a única coisa que encontrei foi key-mon(via README of screenkey):

Então eu:

  • Começar key-mon
  • Use xrectselpara colocar as coordenadas da tela em um byzanzcomando
  • Execute o byzanzcomando

... e fica mais ou menos assim:

out.gif

Observe que key-mon --visible_clickdesenharia um círculo ao redor do ponteiro do mouse ao clicar com o mouse - o que eu preferiria, mas no Ubuntu 14.04.5 LTS isso está um pouco quebrado, pois esse círculo não aparece e desaparece rápido o suficiente para ilustrar corretamente os cliques (ou seja, pressionamentos e liberações do mouse).

sdaau
fonte
2

Eu criei recentemente uma versão combinada de scripts já postados aqui.
Basicamente, ele permite gravar a região da tela, mas com uma GUI simples.

Obrigado por Rob W por fornecer esses scripts legais

Aqui está o código (ou essência, se você quiser):

#!/bin/bash

#Records selected screen region, with GUI

#This is combined version of GIF recording scripts, that can be found here: https://askubuntu.com/questions/107726/how-to-create-animated-gif-images-of-a-screencast
#Thanks to Rob W, and the other author (unmentioned), for creating this lovely scripts

#I do not own any rights to code I didn't write
#                                     ~Jacajack

DELAY=5 #Delay before starting
DEFDUR=10 #Default recording duration
TIME=$(date +"%Y-%m-%d_%H%M%S") #Timestamp
FOLDER="$HOME/Pictures/Byzanz" #Default output directory

#Sound notification to let one know when recording is about to start (and ends)
beep() {
    paplay /usr/share/sounds/freedesktop/stereo/message-new-instant.oga &
}

#Custom recording duration as set by user
USERDUR=$(gdialog --title "Duration?" --inputbox "Please enter the screencast duration in seconds" 200 100 2>&1)

#Duration and output file
if [ $USERDUR -gt 0 ]; then
    D=$USERDUR
else
    D=$DEFDUR
fi

#Get coordinates using xrectsel from https://github.com/lolilolicon/xrectsel
REGION=$(xrectsel "--x=%x --y=%y --width=%w --height=%h") || exit -1

notify-send "GIFRecorder" "Recording duration set to $D seconds. Recording will start in $DELAY seconds."

for (( i=$DELAY; i>0; --i )) ; do
    sleep 1
done

#Record
beep
byzanz-record --cursor --verbose --delay=0 ${REGION} --duration=$D "$FOLDER/byzanz-record-region-$TIME.gif"
beep

notify-send "GIFRecorder" "Screencast saved to $FOLDER/byzanz-record-region-$TIME.gif"
Jacajack
fonte
2

Se você também quiser gravações visíveis de cliques do mouse ou pressionamentos de tecla, a screenkey é sua melhor aposta: https://github.com/wavexx/screenkey

nachtigall
fonte
2
Não vejo como screenkeylidar com os cliques do mouse (parece ser apenas para indicação do teclado); no entanto, seu README refere-se ao key-monque pode fazer isso, veja minha resposta abaixo.
Sdaau
1

Use gtk-recordmydesktope ffmpeg:

apt-get install gtk-recordmydesktop ffmpeg

Execute o RecordMyDesktop capture uma parte da tela / aplicativo para usar como screencast:

gtk-recordmydesktop

Crie ogv2gif.shcom o seguinte conteúdo:

INPUT_FILE=$1
FPS=15
WIDTH=320
TEMP_FILE_PATH="~/tmp.png"
ffmpeg -i $INPUT_FILE -vf fps=$FPS,scale=$WIDTH:-1:flags=lanczos,palettegen $TEMP_FILE_PATH
ffmpeg -i $INPUT_FILE -i $TEMP_FILE_PATH -loop 0 -filter_complex "fps=$FPS,scale=$WIDTH:-1:flags=lanczos[x];[x][1:v]paletteuse" $INPUT_FILE.gif
rm $TEMP_FILE_PATH

Use-o :

./ogv2gif.sh yourscreencast.ogv

Referências :

Fedir RYKHTIK
fonte
1

Eu testei todo o método acima, achei o mais simples é:

  1. use gtk-recordmydesktop e key-mon para obter um ogv
  2. ffmpeg -i xx.ogv xx.gif <- sem nenhum parâmetro .

o fps é original e o tamanho do gif é menor que o arquivo ogv.

eexpress utópico
fonte