Convertendo vídeos para celular(mp4)

Algum tempo atrás criei um script, em texto, para converter vídeos(diversos formatos) para rodar em celular. Mas depois fiz umas adaptações e o script passou a converter vários tipos de arquivos de vídeos para um tamanho e qualidade(som e imagem) especificada. O script é bem simples mas funciona muito bem.

Cheguei a iniciar uma interface gráfica (GUI) para o script em kdialog, mas não cheguei terminar. Caso alguém queira dar continuidade, posso disponibilizar o fonte.

Formatos testados: 3gp, asf, avi, mpg, mpeg, ogv, ogg, wmv, flv

*** NOVA VERSÃO DO SCRIPT ***, tanto para celular como para PC

#!/bin/bash
# Simples script que converte qualquer arquivo de video
# para o formato mp4, conpativel com a maioria dos celulares.
#
# Por Tales A. Mendonça // Contribuições de Luciano Martini e
# Bruno Gonçalves do BigLinux
# Última atualização - 24/1/2010
 
# -------------------------------------------------------
## ALTERE APENAS AQUI
 
# Caso não queira utilizar alguma opção abaixo, comente a linha com um # no início da linha.
 
# Configurações do vídeo
frame="15" # quantidade de frames por segundo. Use um valor entre 10 a 30, obtendo menos ou mais quantidade de quadros. | Para PC use de 23 a 25
q_crf="27" # Qualidade do vídeo. Máxima = 5, mínima = 50 | Para PC use de 20 a 25
q_subq="6" # Qualidade máxima = 8, mínima = 1
contraste="1.0" # Máxima = 2.0, mínima = -2.0
brilho="0.0" # Máxima = 1.0, mínima = -1.0
saturacao="1.0" # Máxima = 3.0, mínima = -3.0
resolucao="352:-3" # Rasolução do vídeo, mude apenas o primeiro valor, pois o "-3" atribui um valor automatico para não distorcer o vídeo. | Para PC, comente essa linha para pegar a resolução padrão do vídeo.
 
# Configuração do som
q_som="40" # Qualidate do som, mínimo = 15, máximo = 500 | Para PC use 45, 50 ou 55 que já ficará excelente.
canal="channels=1:mode=3" # Força o áudio sair em mono. Para 2 canais use canal="channels=2"
 
# -------------------------------------------------------
 
p="$1"
converte_video() {
p="$1"
# Função para converter o vídeo gerando apenas um arquivo de vídeo "*.264"
mencoder "$1" -ofps $2 -nosound -ovc x264 -x264encopts threads=auto:crf=$3:nocabac:subq=$4:frameref=5:level_idc=12:bframes=0:b_pyramid:weight_b:me=umh -of rawvideo -vf harddup,eq2=1:$5:$6:$7,scale=$8 -o "$(echo -n "$p" | rev | cut -d"." -f2- | rev)".264
}
 
converte_audio() {
p="$1"
# Função para converter o vídeo gerando apenas um arquivo de audio "*.aac"
mencoder "$1" -ovc frameno -oac faac -faacopts mpeg=4:object=2:quality=$2 -srate 32000 -of rawaudio -af $3 -o "$(echo -n "$p" | rev | cut -d"." -f2- | rev)".aac
}
 
# Verifica se o mencoder existe.
if [ ! -e "/usr/bin/mencoder" ]; then
echo "             ***********************************************"
echo "             * ERRO: Você não possui o mencoder            *"
echo "             * instalado, favor instalar.                  *"
echo "             * Saindo do script...                         *"
echo "             ***********************************************"
sleep 2
exit 1
fi
 
# Verifica se o MP4Box existe.
if [ ! -e "/usr/bin/MP4Box" ]; then
echo "             ***********************************************"
echo "             * ERRO: Você não possui o MP4Box              *"
echo "             * instalado, favor instalar o pacote gpac.    *"
echo "             * Saindo do script...                         *"
echo "             ***********************************************"
sleep 2
exit 2
fi
 
# Verifica se existe arquivo para ser convertido.
if [ "$1" = "" ]; then
clear
echo ""
echo "             ***********************************************"
echo "             * ERRO: Arquivo não encontrado. Por favor,    *"
echo "             * selecione um arquivo de vídeo.              *"
echo "             ***********************************************"
echo "             *        VEJA COMO UTILIZAR O SCRIPT          *"
echo "             *                                             *"
echo "             * $ sh converte-video-mp4.sh arquivo-de-video *"
echo "             ***********************************************"
echo "             * Saindo do script...                         *"
echo "             ***********************************************"
echo ""
sleep 2
exit 3
fi
 
# Verifica se é um arquivo de vídeo
case "$1" in
*.3gp) ;; *.asf) ;; *.avi) ;; *.mpg) ;; *.mpeg) ;; *.ogv) ;; *.ogg) ;; *.wmv) ;; *.flv) ;;
*)
clear
echo ""
echo "             ***********************************************"
echo "             * Este não é um arquivo de vídeo válido.      *"
echo "             * Favor escolher um arquivo de vídeo.         *"
echo "             ***********************************************"
echo ""
exit 4;;
esac
 
# Chama as funções
clear
echo ""
echo "             ***********************************************"
echo "             * Tudo certo, o vídeo                         *"
echo "             * '$1'                                         "
echo "             * começará a ser convertido em 3 segundos...  *"
echo "             ***********************************************"
echo "                        ."
sleep 1
echo "                   ."
sleep 1
echo "              ."
sleep 1
echo ""
 
# Remove vestígios
thedir_is="$(echo -n "$p" | rev | cut -d'/' -f2- | rev)/"
cd $thedir_is
rm -f *.aac *.264
cd $OLDPWD
 
# Cria o arquivo .264
clear
echo ""
echo "             ***********************************************"
echo "             * Gerando o arquivo de vídeo, aguarde...      *"
echo "             ***********************************************"
echo ""
converte_video "$p" $resp $frame $q_crf $q_subq $contraste $brilho $saturacao $resolucao &&
 
# Cria o arquivo .aac
clear
echo ""
echo "             ***********************************************"
echo "             * Gerando o arquivo de áudio, aguarde...      *"
echo "             ***********************************************"
echo ""
converte_audio "$p" $resp $q_som $canal &&
 
# Cria o MP4
clear
echo ""
echo "             ***********************************************"
echo "             * Gerando o arquivo MP4, aguarde...           *"
echo "             ***********************************************"
echo ""
MP4Box -fps $frame -add "$(echo -n "$p" | rev | cut -d"." -f2- | rev)".264 -add "$(echo -n "$p" | rev | cut -d"." -f2- | rev)".aac -new "$(echo -n "$p" | rev | cut -d"." -f2- | rev)".mp4 &&
 
# Remove vestígios
thedir_is="$(echo -n "$p" | rev | cut -d'/' -f2- | rev)/"
cd $thedir_is
rm -f *.aac *.264
cd $OLDPWD

Para fzer o download da versão acima, clique aqui.

Para fazer a conversão de um vídeo, basta executar:

$ sh converte-video-mp4.sh arquivo-a-ser-convertido

ou

$ sh celular-mp4.sh arquivo-a-ser-convertido

Segue o código do script:

obs.: Altere apenas as opções de “Configurações do vídeo

Código:

#!/bin/bash
# Simples script que converte qualquer arquivo de video
# para o formato mp4, conpativel com a maioria dos celulares.
#
# Por Tales A. Mendonça // Contribuições de Luciano Martini
# Última atualização - 15/10/2009

# -------------------------------------------------------

# Configurações do vídeo
q_som="128" # Qualidate do som
q_video="450 300" # Qualidade do vídeo
resolucao="352:-3" # Rasolução do vídeo, mude apenas o primeiro valor, pois o "-3" atribui um valor automatico para não distorcer o vídeo
frame="15" # quantidade de frames por segundo. Use um valor entre 10 a 30, obtendo menos ou mais quantidade de quadros

# -------------------------------------------------------

p="$1"
converte() {
p="$1"
# Função para converter o arquivo
mencoder "$1" -of lavf -lavfopts format=mp4 -ovc xvid x264 -oac lavc -lavcopts acodec=libfaac:abitrate=$2 -xvidencopts
-x264encopts bitrate=$3 -vf scale=$4,pp=linblenddeint -ofps $5 -srate 32000 -o "$(echo -n "$p" | rev | cut -d"." -f2- | rev)".mp4
}

# Verifica se o mencoder existe.
if [ ! -e "/usr/bin/mencoder" ]; then
echo "             ********************************************"
echo "             * ERRO: Você não possui o mencoder         *"
echo "             * instalado, favor instalar.               *"
echo "             * Saindo do script...                      *"
echo "             ********************************************"
sleep 2
exit 1
fi

# Verifica se existe arquivo para ser convertido.
if [ "$1" = "" ]; then
clear
echo ""
echo "             ********************************************"
echo "             * ERRO: Arquivo não encontrado. Por favor, *"
echo "             * selecione um arquivo de vídeo.           *"
echo "             ********************************************"
echo "             *        VEJA COMO UTILIZAR O SCRIPT       *"
echo "             *                                          *"
echo "             * $ sh celular-mp4.sh arquivo-de-video     *"
echo "             ********************************************"
echo "             * Saindo do script...                      *"
echo "             ********************************************"
echo ""
sleep 2
exit 2
fi

# Verifica se é um arquivo de vídeo
case "$1" in
*.3gp) ;; *.asf) ;; *.avi) ;; *.mpg) ;; *.mpeg) ;; *.ogv) ;; *.ogg) ;; *.wmv) ;; *.flv) ;;
*)
clear
echo ""
echo "             ********************************************"
echo "             * Este não é um arquivo de vídeo válido.   *"
echo "             * Favor escolher um arquivo de vídeo.      *"
echo "             ********************************************"
echo ""
exit 3;;
esac

# Chama a função
clear
echo ""
echo "             ********************************************"
echo "             * Tudo certo, o vídeo                      *"
echo "             * '$1'                                      "
echo "             * começará a ser convertido em 5 segundos..*"
echo "             ********************************************"
echo "                     ."
sleep 1
echo "                   ."
sleep 1
echo "                 ."
sleep 1
echo "               ."
sleep 1
echo "             ."
sleep 1

converte "$p" $resp $q_som $q_video $resolucao $frame

Clique aqui para baixar o scriptv20-1-2010

Categories: Linux, ShellScript

Loading Facebook Comments ...

9 comentários

  • jorge rick neto

    ola bom dia gostaria de saber como que uso este programa que vc criou e se nao existe um pluguim que adicionado ao firefox ja nao baixa noi formato para celular gosto muito do linux mas ainda nao sei mexer se vc puder me ajudar te agradesso pela sua atemçao agradesso se vc me mandar a resposta en meu email muito obrigado antecipado

  • Adao

    Por que ao invés de usar a lavc para chamar o faac você já não usa diretamente o próprio faac?

    de
    -oac lavc -lavcopts acodec=libfaac:abitrate=$2
    para
    -oac faac −faacopts br=$2

    E a linha
    scale=$4,pp=linblenddeint
    precisa ser alterada. Para uma melhor qualidade, você deve desinterlaçar primeiro o vídeo e depois redimensionar
    pp=linblenddeint,scale=$4

    E se o vídeo não for interlaçado? Daí ficará ruim, pois o filtro pp=linblenddeint irá prejudicar a qualidade desnecessariamente.

  • Cruzeeeeeiro

    Deixa o Azul, eu adoro o azul e, brigadão pelos scripts, pois se amo o Linux é justamente pelos scripts. Estou até pensando em faer um site com todos scripts que eu encontrar na net. Claro com os devidos créditos.

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>