MEncoder - Criando Programa Gráfico Para Conversão
Você gosta do MEncoder? Porém, acha um problema ter que memorizar os comandos? Não seria melhor ter um Script que,
com dois ou três cliques, faz o trabalho para você? Aqui vamos fazer um Script e transformá-lo em um programa, com
direito a ícone e tudo mais... Meu alvo principal é um Script que converta vídeos e que sejam compatíveis com o sistema
do PS3.[ Hits: 32.309 ]
Por: M4iir1c10 em 05/03/2012 | Blog: https://github.com/mauricioph
#!/bin/bash
# Os programas que serão usados e onde eles se encontram
MENCODER="$(builtin type -P mencoder)"
ZEN="$(builtin type -P zenity)"
LAME="$(builtin type -P lame)"
PLY="$(builtin type -P play)"
# A resolução ou o tamanho do vídeo, embora eu coloquei algumas opções para vídeos em HD lembre se que no PS3
# você vai ter problemas para rodar qualquer vídeo com resolução superior a 720x576.
RESOLU="$(${ZEN} --list --text "Selecione a resolução do vídeo final" --column "Resolução" --radiolist --column size A "640x480" B "640x360" C "720x404" D
"720x416" E "954x544" F "1280x720" G "1920x1080" | tr x :)"
# Agora vamos basear o bitrate do video de acordo com o tamanho do video
BITRATE="$(echo $RESOLU | sed 's/:/ /g' | awk '{print $1}')"
# Vamos selecionar o vídeo a ser convertido
INFILE="$(${ZEN} --file-selection)"
# Só para ter certeza que o usuário sabe oque esta escolhendo e não clicou
# sem querer em um arquivo que não é um vídeo, vamos olhar que tipo de
# arquivo foi selecionado se não for um vídeo damos uma bronca nele.
ENTRADA=$(file -bi "$INFILE" | awk '{print $1}'| grep video | awk 'BEGIN{FS="/"}{print $1}')
echo $ENTRADA
function intro(){
while [ "$ENTRADA" != "video" ]
do ${ZEN} --error --text "Voce não escolheu um arquivo de vídeo válido"
INFILE="$(${ZEN} --file-selection)"
ENTRADA=$(file -bi "$INFILE" | awk '{print $1}'| grep video | awk 'BEGIN{FS="/"}{print $1}')
echo $ENTRADA
done
}
intro
# agora que estamos certos que é um vídeo vamos definir o nome dele como a variável de entrada
ENTRADA="$(echo $INFILE)"
LOC=$(basename "${ENTRADA}")
# vamos criar uma pasta temporária para colocar todos os logs e arquivo usados
# durante a conversão, definindo os nomes para os mesmos
TEMPO="$(mktemp -d /tmp/mauricio.XXXXXXXXX)"
SAIDA="$(echo ${LOC} | sed 's/ /_/g')"
LOGI="$(echo ${TEMPO}/${SAIDA}.log)"
#Primeira função de conversão, colocamos os atributos necessários para o mencoder e
# jogamos a saída de dados para o zenity com o awk filtramos as informações do mencoder e
# criamos uma função que da um refresh no zenity para que o mesmo possa indicar a porcentagem da
# conversão junto com as demais informações.
function primeiropasso(){
${MENCODER} "${ENTRADA}" -ovc lavc -lavcopts vcodec=mpeg4:vpass=1:vbitrate=${BITRATE} -oac mp3lame -lameopts cbr:br=128:mode=0 -vf
scale=${RESOLU},harddup -ffourcc XVID -o "$HOME/${SAIDA}.PS3.avi" -passlogfile ${LOGI} 2>&1 | awk -vRS="\r" '$1 ~ /Pos/ {gsub(/Pos:/," ");gsub(/%\)/,"
");gsub(/ \(/," ");print $3"\n#Convertendo o vídeo para pasta do usuário \\nPosição :\\t"$1"\\nQuadros :\\t"$2"\\nPorcentagem
:\\t"$3"%\\nMédia de Quadros :\\t"$4"\\nTempo Restante :\\t"$6; fflush();}' | ${ZEN} --progress --title "Convertendo ${LOC} 1 passo" --text
"Convertendo ${LOC}" --auto-close
}
# fazemos a mesma coisa para o segundo passo, o motivo pelo qual estou colocando
# os passos em funções separadas é porque se algum dia você perdeu um usb com o vídeo
# convertido e quer converter do original para outro vídeo para o PS3 o programa vai identificar que
# você já converteu esse vídeo uma vez e vai lembrar dele fazendo assim só uma vez o segundo passo,
# quer dizer não precisa assistir o vídeo que ele já assistiu.
function segundopasso() {
echo "Second Stage" | text2wave -o ${TEMPO}/audio.wav
lame -V3 -b 192 ${TEMPO}/audio.wav ${TEMPO}/audio.mp3 play ${TEMPO}/audio.mp3 ${MENCODER} "${ENTRADA}" -ovc lavc -lavcopts
vcodec=mpeg4:vpass=2:vbitrate=${BITRATE} -oac mp3lame -lameopts cbr:br=128:mode=0 -vf scale=${RESOLU},harddup -ffourcc XVID -o
"$HOME/Desktop/${SAIDA}.PS3.avi" -passlogfile ${LOGI} 2>&1 | awk -vRS="\r" '$1 ~ /Pos/ {gsub(/Pos:/," ");gsub(/%\)/," ");gsub(/ \(/," ");print $3"\n#Convertendo
o vídeo para pasta do usuário \\nPosicao :\\t"$1"\\nQuadros:\\t"$2"\\nPorcentagem :\\t"$3"%\\nMedia de Quadros :\\t"$4"\\nTempo Restante :\\t"$6; fflush();}' |
${ZEN} --progress --title "converting ${LOC} 2 passo" --text "converting ${LOC}" --auto-close echo "The file is ${SAIDA}.PS3.avi, You will find it on your home folder" |
text2wave -o ${TEMPO}/audio.wav lame -V3 -b 192 ${TEMPO}/audio.wav ${TEMPO}/audio.mp3 play ${TEMPO}/audio.mp3}
# vamos lembrar do vídeo que foi convertido criando nossa pasta de "memória"
if [ ! -d $HOME/.videologs ]
then mkdir $HOME/.videologs
fi
LOGTWO=$(basename "${LOGI}")
function usedsecondpass() {
${MENCODER} "${ENTRADA}" -ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=${BITRATE} -oac mp3lame -lameopts cbr:br=128:mode=0 -vf
scale=${RESOLU},harddup -ffourcc XVID -o "$HOME/Desktop/${SAIDA}.PS3.avi" -passlogfile "${HOME}/.videologs/${LOGTWO}" 2>&1 | awk -
vRS="\r" '$1 ~ /Pos/ {gsub(/Pos:/," ");gsub(/%\)/," ");gsub(/ \(/," ");print $3"\n#Convertendo o vídeo para pasta do usuário \\nPosição
:\\t"$1"\\nQuadros :\\t"$2"\\nPorcentagem :\\t"$3"%\\nMédia de Quadros :\\t"$4"\\nTempo Restante :\\t"$6; fflush();}' | ${ZEN} --progress --title
"converting ${LOC} 2 passo" --text "converting ${LOC}" --auto-close echo "Mission Acomplished, your file is at the Desktop. The name is ${SAIDA}.PS3.avi" | text2wave
-o ${TEMPO}/audio.wav lame -V3 -b 192 ${TEMPO}/audio.wav ${TEMPO}/audio.mp3 play ${TEMPO} /audio.mp3}
# Lembra desse vídeo? então pula para o segundo passo.
if [ -f ${HOME}/.videologs/${LOGTWO} ]
then echo "I remember this, lets do it again." | text2wave -o ${TEMPO}/audio.wav
lame -V3 -b 192 ${TEMPO}/audio.wav ${TEMPO}/audio.mp3
play ${TEMPO}/audio.mp3
usedsecondpass
else primeiropasso
segundopasso
fi
# vamos limpar a bagunça que essa conversão fez
rm -f ${TEMPO}/audio.wav
rm -f ${TEMPO}/audio.mp3
# mais não vamos apagar tudo, esse programa tem que se lembrar desse vídeo para a próxima vez que for necessário, caso você decidir limpar o seu
sistema um dia para economizar espaço, essa pasta ~/.videologs deve ser um das que você definitivamente deve dar uma olhada, em uma semana
ou um mês não acumula muito mais depois de uns 6 meses pode ultrapassar a marca dos GB de arquivos.
for i in $(ls ${TEMPO}/*.log | xargs ) do mv $i $HOME/.videologs/ done
#agora acabamos com todo o lixo.
cd ~/
rm -fr ${TEMPO}
Áudio Profissional no GNU/Linux
Proteção de tela ou vídeo como papel de parede
Instalando e configurando um dock igual ao Mac Leopard no KDE
Como controlar todas as mídias da sua casa somente com 1 controle remoto e 1 Linux
LIRC - Linux Infrared Remote Control
Problema no GRUB no Debian Squeeze 6.0.7 [Resolvido]
Bonding para Heartbeat + Bonding para DRBD + OCFS2 + Debian Squeeze
Uma pequena análise do Gentoo Linux
Criando um banco de dados para obter ajuda do sistema
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Secure boot, artigo interessante, nada técnico. (0)
Preciso recuperar videos *.mp4 corrompidos (1)
\Boot sem espaço em disco (Fedora KDE Plasma 42) (6)









