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"
-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