Script para conversao de video compativel com PS3

Publicado por M4iir1c10 (última atualização em 10/03/2012)

[ Hits: 4.670 ]

Homepage: https://github.com/mauricioph

Download ps3.sh




Esse script e parte do meu artigo sobre criando um programa para converter videos com mencoder para ser reproduzido no Playstation 3, leia o artigo aqui http://www.vivaolinux.com.br/artigo/MEncoder-Criando-Programa-Grafico-Para-Conversao/ e analize e download o script aqui ;)

  



Esconder código-fonte

#!/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}

Scripts recomendados

remover usuários do sistema/SAMBA

Menu Horario de Verão

Autenticação automática no Velox

LinkSymbol - Criador de links simbólicos

GNU - que bacana


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts