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: 30.759 ]
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}
Enfeite o LILO com uma imagem de seu gosto
Máquina Enigma e encriptação em XOR
Aprendendo a melhorar os seus scripts
Áudio Profissional no GNU/Linux
Raios de luz explodindo atrás do texto
Como contribuir para projetos abertos no GitHub
Ripando CDs de audio no Debian e derivados
Atualizando do Slackware 9 para 10.0
Asterisk e Asterisk GUI - Instalação e Configuração no Debian Squeeze
Experiência de migração para software livre
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Instalação Uefi com o instalador clássico do Mageia (0)
É cada coisa que me aparece! - não é só 3% (2)
SysAdmin ou DevOps: Qual curso inicial pra essa área? (1)
Alguma pessoa pode me ajudar com drriver Core i3 7020u (Debian 12)? (2)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta