Script para conversao de video compativel com PS3
Publicado por M4iir1c10 (última atualização em 10/03/2012)
[ Hits: 4.679 ]
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}
Prompt Interativo para o Legendary
Script que pergunta o período para geração do relatório do SARG
newchangelog - Script para gerar changelog.
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (6)