gravando_um_video_tutorial
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
| Ambos lados da revisão anteriorRevisão anteriorPróxima revisão | Revisão anterior | ||
| gravando_um_video_tutorial [2016/04/06 13:17] – cartola | gravando_um_video_tutorial [2016/12/05 10:31] (atual) – /* Legendas direto na tela */ cartola | ||
|---|---|---|---|
| Linha 18: | Linha 18: | ||
| Usando audacity ou o próprio ffmpeg para o áudio | Usando audacity ou o próprio ffmpeg para o áudio | ||
| + | |||
| + | Outros softwares para captura da tela: | ||
| + | * Kazam - pacotes já disponíveis para Linux ([[https:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[https:// | ||
| Linha 42: | Linha 48: | ||
| #!/bin/bash | #!/bin/bash | ||
| | | ||
| - | # Script pra apresentar legendas na tela durante gravacao de video | + | # EN: Script to show subtitles on screen while recording or presenting or |
| + | # | ||
| + | # PT_BR: | ||
| + | # gerar arquivos com legendas. | ||
| | | ||
| - | # Pega um arquivo texto, opcionalmente com 2 idiomas, e mostra cada um | + | # EN: Takes a text file, optionally with 2 languages, and shows each in one |
| - | # num canto da tela. | + | # |
| + | # PT_BR: | ||
| + | # num canto da tela ou gera os arquivos de legendas. | ||
| | | ||
| - | # todo: | + | # A Fazer: |
| + | # - opcao de legenda titulo pra inicio e fim no meio da tela | ||
| # - testar mais idiomas: pt, en, fr, es | # - testar mais idiomas: pt, en, fr, es | ||
| # - tratar tamanho para passar pra proxima linha | # - 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 | # - mapear atalho de teclado pra passar pra proxima | ||
| + | # - sair apos tocar ultima legenda | ||
| + | # - aguardar primeiro comando pra tocar primeira legenda | ||
| + | # - tratar interrupcao bruta | ||
| | | ||
| - | # Configuracoes | + | |
| - | # separador de idiomas | + | # Requisitos | Requisites |
| - | s="xxx" | + | # |
| - | # tempo que as legendas ficam na tela (em segundos) | + | # - ffmpeg |
| - | d=4 | + | # - osd_cat |
| - | # tamanho da fonte a ser usada (achei 80 bom para fullHD) | + | # - 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 | ||
| + | |||
| + | # | ||
| + | | ||
| + | # | ||
| + | |||
| + | # Valores padrao | Default values | ||
| + | # separador de idiomas | ||
| + | s="|" | ||
| + | # tempo que as legendas ficam na tela (em segundos) | ||
| + | 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 | t=80 | ||
| - | # tamanho da borda da legenda | + | # tamanho da borda da legenda |
| - | b=3 | + | b=2 |
| - | # cor da legenda (em ingles, teste ao mudar) | + | # cor da legenda (em ingles, teste ao mudar) |
| c=" | c=" | ||
| - | # cor da borda da legenda (em ingles, teste ao mudar) | + | # cor da borda da legenda (em ingles, teste ao mudar) |
| - | | + | |
| + | # saida da legenda para tela (screen) ou arquivo (file) | defines output to " | ||
| + | o=" | ||
| + | |||
| + | # Obtendo valores personalizados | Getting customized settings | ||
| + | while getopts " | ||
| + | case $opt in | ||
| + | d) # altera o tempo da legenda na tela | change subtitle screen time | ||
| + | d=" | ||
| + | b) # espessura da borda da legenda | sibtitle border thickness | ||
| + | b=" | ||
| + | f) # nome do arquivo de legendas | subtitles file name | ||
| + | f=" | ||
| + | t) # tamanho da borda | border size | ||
| + | t=" | ||
| + | c) # cor da fonte | font color | ||
| + | c=" | ||
| + | r) # cor da borda | border color | ||
| + | r=" | ||
| + | s) # separador | separador | ||
| + | s=" | ||
| + | o) # define saida na tela " | ||
| + | o=" | ||
| + | esac | ||
| + | done | ||
| + | |||
| + | trap "rm -f / | ||
| | | ||
| - | | + | |
| + | # Programa principal | Main program | ||
| + | # | ||
| | | ||
| - | if [ "$1" = "" | + | if [ "$f" = "" |
| echo | echo | ||
| - | echo "Uso: $0 < | + | echo "Uso: $0 [-b < |
| echo | echo | ||
| echo " | echo " | ||
| Linha 78: | Linha 141: | ||
| fi | fi | ||
| | | ||
| - | readarray arq < $1 | + | readarray arq < $f |
| - | tam=$(wc -l $1 | cut -d\ -f 1) | + | tam=$(wc -l $f | cut -d\ -f 1) |
| | | ||
| - | # calculando posicao da linha de baixo | + | # calculando posicao da linha de baixo | calculating bottom subtitle position |
| offset=$(expr 5 \* $t) | offset=$(expr 5 \* $t) | ||
| | | ||
| Linha 87: | Linha 150: | ||
| rm -f / | rm -f / | ||
| mkfifo / | mkfifo / | ||
| + | | ||
| + | # Aguarda o primeiro comando de disparo de legendas | ||
| + | # Wait first subtitle command shot | ||
| + | cat / | ||
| + | | ||
| + | # inicia a gravacao | starts recording | ||
| + | teste=" | ||
| + | if [ " | ||
| + | num=01 | ||
| + | else | ||
| + | num=`expr $teste + 1 | awk ' | ||
| + | fi | ||
| + | ffmpeg -f x11grab -s 1920x1080 -r 12000/1001 -i :0.0 -q:v 2 meuVideo-$num.avi > /dev/null 2>&1 & | ||
| + | pid=" | ||
| + | | ||
| + | if [ " | ||
| + | # guardando momento inicial para calcular tempos | saving initial moment to calculate times | ||
| + | inicio=" | ||
| + | fi | ||
| + | | ||
| while [ $i -lt $tam ]; do | while [ $i -lt $tam ]; do | ||
| # pega texto(s) | # pega texto(s) | ||
| t1=" | t1=" | ||
| t2=" | t2=" | ||
| - | # coloca na tela | + | # coloca na tela ou no arquivo | draws onscreen or write to file |
| - | (echo " | + | |
| - | echo " | + | |
| + | echo " | ||
| + | elif [ " | ||
| + | agora=" | ||
| + | echo $(date +%H: | ||
| + | (echo; echo $i; echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | sleep $d; echo OK PARA PROXIMA | ||
| + | fi | ||
| (( i++ )) | (( i++ )) | ||
| # o " | # o " | ||
| Linha 100: | Linha 192: | ||
| fi | fi | ||
| done | done | ||
| + | | ||
| + | kill -2 $pid 2> /dev/null | ||
| | | ||
| rm -f / | rm -f / | ||
gravando_um_video_tutorial.1459948645.txt.gz · Última modificação: por cartola
