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
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 ;)
#!/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}
remover usuários do sistema/SAMBA
Autenticação automática no Velox
LinkSymbol - Criador de links simbólicos
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Exclui todos os usuários sem querer e não consigo criar outro (0)
Compartilhame... no Samba não funciona [RESOLVIDO] (17)
Codigo em c++ imprimindo valores duplicados[AJ... (1)