====== No Windows ======
Existem muitas opções de softwares para gravação de vídeos da tela e que servem para a criação de um tutorial.
O [[http://www.camstudio.org|CamStudio]] é um conhecido software livre destinado a este propósito.
====== No Linux ======
Usando ffmpeg para gravar a tela
ffmpeg -f x11grab -s 1920x1080 -r 30 -i :0.0 -q:v 2 meuVideo.avi
Você pode mudar algumas coisas aí. A resolução (1920x1080) a qualidade do vídeo (2 a 31, sendo 2 a melhor) ou o formato do vídeo, bastando alterar a extensão. Aqui não funcionou bem com mp4, que eu preferiria. Há também inúmeras outras opções do ffmpeg que podem ser usadas. Esse comando não grava o áudio, pra isso em geral eu uso o Audacity separadamente, mas também é possível gravar o áudio direto.
Usando audacity ou o próprio ffmpeg para o áudio
Outros softwares para captura da tela:
* Kazam - pacotes já disponíveis para Linux ([[https://launchpad.net/kazam|Ubuntu]])
* [[http://www.mplayerhq.hu/design7/news.html|mencoder]] - tradicional conversor, gravador de vídeo e áudio, companheiro do player "MPlayer"
* [[http://www.maartenbaert.be/simplescreenrecorder/|SimpleScreenRecorder]]
* [[https://obsproject.com/|OBS Project]] - faz streaming ao vivo também, multiplataforma (Win, Mac, Linux)
===== Legendas direto na tela =====
Usando esses scripts é possível já colocar legenda na tela pra gravação ao vivo.
É necessário configurar um atalho de teclado que ainda não esteja sendo usado pelo seu gerenciador de janelas (Window Manager). No meu caso, por exemplo, usei o XFCE e configurei o atalho Ctrl+Shift+U para chamar o primeiro script. Ele vai passar a informação ao segundo script para que seja mostrada a próxima legenda.
É necessário instalar a ferramenta "osd_cat". No meu linux aqui ela vem com o pacote xosd-bin.
Primeiro script (a ser associado ao atalho de teclado do WM):
#!/bin/sh
# Script que atua junto com o "mostra_legendas.sh"
# Deve ser mapeado junto a um atalho de teclado do gerenciador de janelas.
# Por exemplo, no XFCE va na configuracao de teclado e associe um atalho
# a este comando. Toda vez que o atalho for acionado a proxima legenda aparece.
echo > /tmp/mostra_legenda_pipe
Segundo script, a ser executado chamando o arquivo txt com as legendas em até 2 idiomas:
#!/bin/bash
# EN: Script to show subtitles on screen while recording or presenting or
# generate subtitle files.
# PT_BR: Script pra apresentar legendas na tela durante gravacao de video ou
# gerar arquivos com legendas.
# EN: Takes a text file, optionally with 2 languages, and shows each in one
# screen edge (top/bottom) or writes subtitle files
# PT_BR: Pega um arquivo texto, opcionalmente com 2 idiomas, e mostra cada um
# num canto da tela ou gera os arquivos de legendas.
# A Fazer:
# - opcao de legenda titulo pra inicio e fim no meio da tela
# - testar mais idiomas: pt, en, fr, es
# - tratar tamanho para passar pra proxima linha
# - publicar (github, sf, ...)
# - melhorar o inicio/fim de gravacao (expect?)
# - tirar dependencias externas: video_tela.sh
# - entender e tratar os n idiomas de entrada. Hoje ta hardcoded pra 2. Pode vir na primeira linha do arquivo, inclusive os nomes dos arq de saida
# Feito:
# - mapear atalho de teclado pra passar pra proxima
# - sair apos tocar ultima legenda
# - aguardar primeiro comando pra tocar primeira legenda
# - tratar interrupcao bruta
#------------------------
# Requisitos | Requisites
#
# - ffmpeg
# - osd_cat
# - Para gerar legendas direto no video. Se for gerar apenas arquivos srt nao eh preciso.
# - To generate onscreen subtitles to be directly recorded. To generate srt files it's not necessary.
# - proxima_legenda.sh
# - ter o programa
# - configurar atalho de teclado no Window Manager (ex: xfce, Kde, Gnome, ...) para rodar proxima_legenda.sh
#-------------------------------
# Configuracoes | Configurations
#-------------------------------
# Valores padrao | Default values
# separador de idiomas | language separator
s="|"
# tempo que as legendas ficam na tela (em segundos) | subtitles time on screen
d=5
# tamanho da fonte a ser usada (achei 80 bom para Full HD) | font size (I found 80 good with Full HD)
t=80
# tamanho da borda da legenda | subtitle border size
b=2
# cor da legenda (em ingles, teste ao mudar) | font color
c="yellow"
# cor da borda da legenda (em ingles, teste ao mudar) | font border color
r="black"
# saida da legenda para tela (screen) ou arquivo (file) | defines output to "s"creen or "f"ile
o="file"
# Obtendo valores personalizados | Getting customized settings
while getopts "b:d:f:t:c:r:s:o:" opt; do
case $opt in
d) # altera o tempo da legenda na tela | change subtitle screen time
d="$OPTARG" ;;
b) # espessura da borda da legenda | sibtitle border thickness
b="$OPTARG" ;;
f) # nome do arquivo de legendas | subtitles file name
f="$OPTARG" ;;
t) # tamanho da borda | border size
t="$OPTARG" ;;
c) # cor da fonte | font color
c="$OPTARG" ;;
r) # cor da borda | border color
r="$OPTARG" ;;
s) # separador | separador
s="$OPTARG" ;;
o) # define saida na tela "screen" ou arquivo "file" | defines output to screen or file
o="$OPTARG" ;;
esac
done
trap "rm -f /tmp/mostra_legenda_pipe ; kill -2 $pid 2> /dev/null ; exit" 0 1 2 3 15
#----------------------------------
# Programa principal | Main program
#----------------------------------
if [ "$f" = "" ]; then
echo
echo "Uso: $0 [-b ] [-d tempo] -f "
echo
echo "Separacao de idiomas com $s"
echo "Uma legenda (varios idiomas) por linha"
echo
exit
fi
readarray arq < $f
tam=$(wc -l $f | cut -d\ -f 1)
# calculando posicao da linha de baixo | calculating bottom subtitle position
offset=$(expr 5 \* $t)
i=0
rm -f /tmp/mostra_legenda_pipe
mkfifo /tmp/mostra_legenda_pipe
# Aguarda o primeiro comando de disparo de legendas
# Wait first subtitle command shot
cat /tmp/mostra_legenda_pipe > /dev/null
# inicia a gravacao | starts recording
teste="$(\ls meuVideo-*avi 2> /dev/null | tail -1 | sed -e 's/meuVideo-//' -e 's/\.avi//')"
if [ "$teste" = "" ]; then
num=01
else
num=`expr $teste + 1 | awk '{printf"%02d",$1}'`
fi
ffmpeg -f x11grab -s 1920x1080 -r 12000/1001 -i :0.0 -q:v 2 meuVideo-$num.avi > /dev/null 2>&1 &
pid="$!"
if [ "$o" = "file" ]; then
# guardando momento inicial para calcular tempos | saving initial moment to calculate times
inicio="$( expr $(date +%s) )"
fi
while [ $i -lt $tam ]; do
# pega texto(s)
t1="$(echo ${arq[$i]} | awk -F"$s" '{printf"%s",$1}')"
t2="$(echo ${arq[$i]} | awk -F"$s" '{printf"%s",$2}')"
# coloca na tela ou no arquivo | draws onscreen or write to file
if [ "$o" = "screen" ]; then
(echo "$t2" | osd_cat -A center -d $d -o 10 -f -bitstream-*-*-*-*-*-$t-*-*-*-*-*-iso8859-* -c $c -O $b -u $r) &
echo "$t1" | osd_cat -A center -p bottom -d $d -o -$offset -f -bitstream-*-*-*-*-*-$t-*-*-*-*-*-iso8859-* -c $c -O $b -u $r
elif [ "$o" = "file" ]; then
agora="$(expr $(date +%s) - $inicio )"
echo $(date +%H:%M:%S,000 --date="@$(expr $agora - 75600)")
(echo; echo $i; echo "$(date +%H:%M:%S,000 --date="@$(expr $agora - 75600)") --> $(date +%H:%M:%S,000 --date="@$(echo $agora + $d - 75600 | bc)")") | tee -a subtitle1.srt >> subtitle2.srt
echo "$t1" | tee -a subtitle1.srt
echo "$t2" >> subtitle2.srt
sleep $d; echo OK PARA PROXIMA
fi
(( i++ ))
# o "if" eh para pular a ultima espera depois de mostrar a ultima linha
if [ $i -lt $tam ]; then
cat /tmp/mostra_legenda_pipe > /dev/null
fi
done
kill -2 $pid 2> /dev/null
rm -f /tmp/mostra_legenda_pipe
Instruções completas tomando como exemplo um Linux com XFCE:
* Instale o aplicativo xosd-bin
* Pode ser pela linha de comandos
* Ou via instalador gráfico
* Salve o primeiro script num arquivo texto
* Use seu editor preferido
* Torne o arquivo executável
* Abra as configurações de teclado do XFCE
* Associe o script à sua sequência de teclas
* Nota: use uma sequência ainda não utilizada
* Salve o segundo script em outro arquivo
* Note que várias coisas podem ser configuradas
* Torne o arquivo executável
* Pronto, está tudo certo
* É só criar um arquivo com legendas
* Separe com "|" se quiser 2 legendas
* Aqui fiz uma em PT_BR outra em EN
* Se quiser apenas uma, não use separador
* Pra usar "|" na legenda reconfigure o separador
* Pode ser mais de um caracter, por exemplo "XXX"
* É isso aí, bons tutoriais!
Veja o tutorial de uso dos scripts em vídeo feito usando ele e os passos descritos acima!
https://www.youtube.com/watch?v=EdJYHQw-VW0
E aqui um tutorial feito com ele. Neste eu coloquei outro atalho de teclado para colocar um fundo preto na tela com o gthumb, fazendo títulos de entrada e saída do vídeo.
https://www.youtube.com/watch?v=OVJ6mGQlIxU