Como converter trecho de vídeo em gif (Função Shell Scripting)

Script para quem quiser criar gif de trecho de vídeo.

Como converter trecho de vídeo em gif (Função Shell Scripting)

Acabei de criar esse script para quem quiser criar gif de trecho de vídeo. Há o script dessa função bash, no final desse artigo, como toda as linhas comentadas, linhas que começam com ‘tralha’(#), no entanto, vou explicar passo a passo.

ffmpeg -t 5 -ss 00:00:10 -i funny.mp4 out%04d.gif 
convert -delay 1x20 -loop 0 out*.gif animation.gif
convert -layers Optimize animation.gif animation_small.gif

Segue a Função/Script abaixo (possui cabeçalho)

#!/bin/bash
# ---------------------------------------------------------------
# gifconv
#
# Converter trecho de vídeo em gif (Função Shell Scripting)
#
# Uso: $ sh gifconv.sh 
#    $ ./gifconv 
#   ou , em aso de estar nas funções terminalroot ou
#   como alias no seu .bashrc
#    $ gifconv 
#
# Ex.: $ gifconv [Clipe do Bebê.mp4]
#
# Autor: Marcos da B. M. Oliveira, www.terminalroot.com.br
# Desde: Dom Mai 10 14:41:27 2015 
# Versão: 0.1
# Licença: GPL
# ----------------------------------------------------------------
_pkgs(){
 # Verifica se tem o ffmpeg instalado.
 if test -f /usr/bin/ffmpeg ; then
  echo -n
 else
  echo "É necessário possuir o 'ffmpeg' para que esse script funcione.";
  echo "Abortar."
  exit 0;
 fi
 
 #verifica se tem o convert instalado.
 if test -f /usr/bin/convert ; then
  echo -n
 else
  echo "É necessário possuir o 'convert' para que esse script funcione.";
  echo "Abortar."
  exit 0;
 fi
}
# Funão que irá fazer a onversão
_gifconv(){
 # Validador dos pacotes necessários
 _pkgs
 # Verifica se vc informou o vídeo (se passou o parâmetro)
 if [ -z $1 ]; then
  echo "Informe o vídeo, ex.: converter.sh video.mp4";
 else
  # Interação para informar o tempo que será iniciado
  echo "Informe o tempo de INÍCIO que deseja, iniciar o corte, ex.: 00:05:12";
  read tempo;
  
  # Interação para informar a duração do gif
  echo "Informe o tempo de DURAÇÃO que deseja, 2 segundos, ex.: 2";
  read duracao;
  
  # Cria um diretório temporário que depoi será excluido
  mkdir tempdir
  
  # Informa que está tudo certo
  echo "[+] - Transformando o vídeo...aguarde";
  
  # Faz a conversão
  ffmpeg -sameq -ss $tempo -t $duracao -i "$*" tempdir/out%04d.gif 2>/dev/null
 
  # Nova etapa da conversão
  convert -delay 1x25 -loop 0 tempdir/out*.gif tempdir/animacao.gif;
  
  # Extrai o nome do vídeo que será o mesmo nome pro gif
  arquivo=$(echo "$*" | rev | cut -c5- | rev);
 
  # Otimização da conversão
  convert -layers Optimize tempdir/animacao.gif "$arquivo.gif";
  
  # Se tudo der certo, informará o sucesso da operação
  if [ -f "$arquivo.gif" ]; then
   echo "Pronto!";
  else
   echo "Erro ao transformar arquivo em gif, contacte o dsenvolvedor.";
  fi
  
  # Deleta o diretório temporário
  [ -d tempdir ] && rm -rf tempdir;
 
 # Finaliza a verificação 
 fi
 
 # Saída
 exit 0
}
# Chama a função com o parâmetro*
_gifconv "$*"

Compartilhe

Marcos Oliveira

Autor
Marcos Oliveira
Desenvolvedor de Software
youtube.com/TerminalRootTV

Pacote Promocional com Todos os Cursos

Adquira todos os cursos para se tornar um ninja do Terminal e do Linux.

Artigos Relacionados




Conheça