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 $OLDPWDPara 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"-x264encopts
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 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 script – v20-1-2010