Ferramentas do usuário

Ferramentas do site


gravando_um_video_tutorial

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
gravando_um_video_tutorial [2016/03/10 19:51]
cartola /* No Linux */
gravando_um_video_tutorial [2016/12/05 08:31]
cartola /* Legendas direto na tela */
Linha 1: Linha 1:
 +
 +====== 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 ====== ====== No Linux ======
Linha 4: Linha 12:
  
 Usando ffmpeg para gravar a tela Usando ffmpeg para gravar a tela
 +
 +<code> ffmpeg -f x11grab -s 1920x1080 -r 30 -i :0.0 -q:v 2 meuVideo.avi
 +</code>
 +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 Usando audacity ou o próprio ffmpeg para o áudio
  
-Usando um script para já colocar legenda na tela+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.
  
-<code>#!/bin/bash+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
  
-# Script pra apresentar legendas na tela durante gravacao de video+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 <borda>] [-d tempo] -f <arquivo_legendas>" 
 +    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
  
-# Pega um arquivo texto, opcionalmente com 2 idiomas, e mostra cada um +Instruções completas tomando como exemplo um Linux com XFCE:
-# num canto da tela.+
  
-# todo: +  *  Instale o aplicativo xosd-bin 
-#       testar mais idiomaspten, fres +  *  Pode ser pela linha de comandos 
-#       - tratar tamanho para passar pra proxima linha +  *  Ou via instalador gráfico 
-#       - mapear atalho de teclado pra passar pra proxima+  *  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 
 +  *  Notause 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 
 +  *  Prontoestá 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 umanão use separador 
 +   Pra usar "|" na legenda reconfigure o separador 
 +   Pode ser mais de um caracter, por exemplo "XXX" 
 +  *  É isso aí, bons tutoriais!
  
-# Configuracoes +Veja o tutorial de uso dos scripts em vídeo feito usando ele e os passos descritos acima!
-# separador de idiomas +
-s="|"+
  
-if [ "$1" = "" ]; then +https://www.youtube.com/watch?v=EdJYHQw-VW0
-  echo +
-  echo "Uso$0 <arquivo_legendas>" +
-  echo +
-  echo "Separacao de idiomas com $s" +
-  echo "Uma legenda (varios idiomas) por linha" +
-  echo +
-  exit +
-fi+
  
-readarray arq < $1 +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.
-tam=$(wc -l $1 | cut -d\  -f 1)+
  
-i=0 +https://www.youtube.com/watch?v=OVJ6mGQlIxU
-while [ $i -lt $tam ]; do +
-  # pega texto(s) +
-  t1="$(echo ${arq[$i]} | cut -d\| -f 1)" +
-  t2="$(echo ${arq[$i]} | cut -d\| -f 2)" +
-  # coloca na tela +
-  (echo "$t1" | osd_cat -A center -d 4 -o 10 -f -bitstream-*-*-*-*-*-100-*-*-*-*-*-iso8859-* -c white -O 2 -u black) & +
-  echo "$t2" | osd_cat -A center -p bottom -d 4 -o -450 -f -bitstream-*-*-*-*-*-100-*-*-*-*-*-iso8859-* -c white -O 2 -u black +
-  read lixo +
-  (( i++ )) +
-done</code>+
  
gravando_um_video_tutorial.txt · Última modificação: 2016/12/05 08:31 por cartola