domingo, 13 de novembro de 2011

Atualização no programa encode-xvid - Agora com interface gráfica

Olá novamente. Neste post venho com uma notícia: o programa que estou desenvolvendo - encode-xvid agora está com uma interface gráfica. Desenvolvi uma em python usando a biblioteca gráfica pyGTK. Este é um wrapper onde eu posso montar a linha de comando com mais facilidade - mas ao mesmo tempo é um hobby onde posso desenvolver em python, que gosto tanto.

Quem quiser conferir o projeto, é só ir lá na página no google code e pegar instruções de como fazer svn checkout, ou conferir os fontes lá mesmo - http://code.google.com/p/encode-xvid/

Por enquanto só vai funcionar no GNU/Linux, porque o script está em shell script, mas pretendo reescrever em python, aí vai rodar em outros SO também, desde que tenham o ambiente instalado.

Grande abraço e até a próxima.

Artigo completo (View Full Post)

segunda-feira, 7 de novembro de 2011

Script para encode xvid agora no google code

O script que criei em outro post para gerar arquivos para dvd agora está no google code. Resolvi colocar ele lá para ficar mais fácil compartilhar o desenvolvimento e manter atualizado.

Se quiser acompanhar a evolução deste script é só pegar em https://code.google.com/p/encode-xvid/

Sei que este script não é coisa muito grande, mas é meu primeiro esforço em desenvolver software livre. vou tentar melhorá-lo com o tempo.

Artigo completo (View Full Post)

domingo, 6 de novembro de 2011

Shell script para gerar arquivos xvid com áudio mp3

Olá pessoal. Neste post vou colocar um script que eu mesmo fiz para fazer encode de arquivos de vídeo no formato avi com o codec de vídeo xvid e áudio mp3.

Faço essa conversão porque tenho dois probleminhas: 1 - meu dvd é velhinho e roda arquivos com legendas, mas não arquivos muito grandes - nesse caso tenho que reduzir o bitrate. 2 - meu xbox 360 não carrega legendas externas (srt) de vídeos e só roda xvid.

O software que eu uso para encode é o mencoder, o SO é GNU/Linux distro Slackware 13.37. O mplayer foi compilado por mim. Versão:

MPlayer SVN-r34308-4.5.2 (C) 2000-2011 MPlayer Team


Meu mplayer foi compilado com as bibliotecas adicionais xvid e libmp3lame, mas para encode do xvid eu estou usando lavc. Para audio estou usando mp3lame.

Antes de postar o script, vale lembrar que é minha primeira aventura de script shell para automatizar alguma tarefa minha, então o código pode não ser o melhor possível. Dicas são muito bem vindas!

Abaixo o script:


#!/bin/bash

function usage {
echo "uso: video-encode -v video -l legenda -ab audio-bitrate -vb video-bitrate [-vol volume] [-sim] -o arqiuvo-output"
}

function error_exit {
echo "$1" 1>&2
exit 1
}

while [ "$1" != "" ]; do
case $1 in
-v )
shift
video=$1
;;
-l )
shift
legenda=$1
;;
-vb )
shift
vb=$1
;;
-ab )
shift
ab=$1
;;
-o )
shift
output=$1
;;
-vol )
shift
vol=":vol=$1"
;;
-sim )
sim=true
;;
* )
usage
error_exit "Parâmetro não reconhecido: $1"
;;
esac
shift
done


# Verificando se o arquivo de vídeo é válido
test -n "$video" -a -f "$video" || error_exit "Arquivo inválido: $video"

# Verificando se o arquivo de legenda (se informado) é válido
test -z "$legenda" -o -f "$legenda" || error_exit "Legenda inválida: $legenda"

# Verificando se o arquivo de legenda (se informado) está no format utf-8
test -f "$legenda" -a $(file -bi "$legenda" | sed 's/\(.*\)charset=//') == "utf-8" || error_exit "A legenda não está no formato utf-8: $legenda"

# Tenta criar o arquivo de saída
touch "$output" > /dev/null 2>&1 || error_exit "Erro ao criar o arquivo de saída: $output"

echo
echo "******************************************************"
echo "Ambiente"
echo "video: $video"
echo "legenda: $legenda"
echo "vbitrate: $vb"
echo "abitrate: $ab"
echo "******************************************************"
echo

function echo_exec {
echo $1
echo $2

if [ -z $sim ]; then
eval $2 || error_exit "Operação cancelada"
fi
}

cmd="mencoder \"$video\" -sub \"$legenda\" -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac mp3lame -ffourcc XVID -o /dev/null"
echo_exec "Encoding 2-pass - parte 1" "$cmd"

cmd="mencoder \"$video\" -sub \"$legenda\" -ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=$vb -oac mp3lame -lameopts abr:br=$ab$vol -ffourcc XVID -o \"$output\" -utf8"
echo_exec "Encoding 2-pass - parte 2" "$cmd"


Explicando em termos gerais, o script aceita os seguintes parâmetros de linha de comando:
-v arquivo de vídeo origem
-l arquivo de legendas
-vb bitrate do vídeo
-ab bitrate do áudio
-o arquivo de output
-vol volume do áudio - opcional (para aplicar ganho - pode distorcer)
-sim modo simulação (na verdade só exibe os comandos na tela, sem executar nada)

Estou usando o método 2pass do mencoder porque achei que tive videos de melhor performance assim.

Alguns pontos a melhorar:

O mencoder está sempre usando -utf8, por isso precisa do arquivo de legendas em formato utf-8. Vou tentar criar uma função para converter automaticamente o arquivo para utf-8 caso não seja - atualmente o programa retorna um erro e não prossegue.

Antes de rodar o programa é preciso saber de antemão o bitrate de áudio e vídeo que serão usados. Vou tentar identificar no arquivo de origem e dar suporte ao usuário entrar com as informações através de prompt.

Tornar a seleção da legenda opcional. Embora era minha intenção, ainda não está funcionando.

Acabei de executar o script e na minha máquina está funcionando (bem, na nossa máquina sempre funciona, né...), então espero que ajude outras pessoas da mesma forma que me ajuda aqui.

Grande abraço a todos e até a próxima.

Artigo completo (View Full Post)

domingo, 30 de outubro de 2011

Problema de conexão tcp/ip com MySQL no Slackware13.37 - Resolvido

Olá a todos mais uma vez.

Neste post vou relatar um problema que aconteceu comigo e o que eu fiz para resolver.

Neste fim de semana montei uma instalação GNU/Linux para desenvolver alguns projetos em Java com JBoss Seam e MySQl - minha primeira escolha era o postgres, mas o mysql já estava instalado e eu encontrei dificuldades instalando o postgres no Slackware, mas fica para outro post - A distro escolhida foi o Slackware, em sua versão recentemente lançada 13.37.

SO, BD, eclipse e Jboss instalados, banco de teste criado, fui criar uma conexão no eclipse para começar a trabalhar na IDE. Quando veio o problema: Não conseguia conectar no banco pelo software.

Horas e horas procurando consegui resolver.

Primeira orientação que vi foi procurar no arquivo my.cnf - no meu caso fica no /etc/my.cnf - se existe alguma entrada skip-networking não comentada.

Esta entrada skip-networking desabilita o suporte a rede: Só é possível conectar ao servidor na mesma máquina e pelo socket /var/lib/mysql/mysql.sock.

O meu problema era que não havia esta configuração no meu servidor, e mesmo assim não conseguia conectar via tcp/ip. Foi quando encontrei no arquivo de script que inicia o meu servidor que o script estava passando esse parâmetro pela linha de comando.

No meu é /etc/rc.d/rc.mysqld. Na linha 32 do script tem a seguinte linha:

SKIP="--skip-networking"

Essa linha deve ser comentada para o servidor aceitar conexões tcp/ip.

Grande abraço e até a próxima.

Artigo completo (View Full Post)

quinta-feira, 27 de outubro de 2011

Rational Team Concert - JazzHub

Atenção, pessoal do RJ!

Para o corajoso que estiver disposto a encarar o trânsito na Gávea na hora do rush ....

O pessoal da IBM vai ministrar uma palestra a qual pretende demonstrar a ferramenta Rational Team Concert. No site da IBM aondhttp://www.blogger.com/img/blank.gife o evento esta sendo anunciado cita que haverá demonstração de como criar um projeto e demonstrará os principais recursos da ferramenta. Acho que vale dar uma conferida.
O evento vai ser na PUC-RIO no RIO DE JANEIRO 28/10/11, 19h30

Auditório: B8 Edifício Frings – 8ª andar - Rua Marquês de São Vicente, 225 – Gávea

OBS:
O Palestrante será o Gerente de Desenvolvimento Sênior da IBM Estados Unidos que também é responsável pelos projetos “jazz.net” e “JazzHub”, Robin D Garside.

Artigo completo (View Full Post)

segunda-feira, 27 de junho de 2011

Tortoise/SVN Command Bat execute

Pode ser uma boa solução automatizar os comandos que fazemos repetidamente pelo Tortoise. Por exemplo, o comando update nas pastas que você precisa atualizar. Existem casos em que, dependendo da configuração do SVN, somos obrigados a dar update em diretório por diretório, o que além de ser extremante chato ainda corremos o risco de esquecer alguma atualização.
Ainda existem os casos dos que não precisam dar o update na raiz de diretórios porque vai atualizar coisas demais que não são necessárias.
Em fim, se for o caso de um "bat" lhe ser útil para executar ações do Tortoise, segue o exemplo abaixo de um script que o Felipe Guerço criou e agilizou bastante as coisas aqui. Obrigado Felipe!
Segue exemplo:


Segue referência, TortoiseSVN Commands ...
@echo off

FOR %%A IN (

"C:\sorteJayk\projeto\GLADY07\Implementation"
"C:\sorteJayk\projeto\GLADY07\Req"
"C:\sorteJayk\projeto\GLADY08\AChecklist"
"C:\sorteJayk\projeto\GLADY08\ZYZ"
"C:\sorteJayk\projeto\GLADY08\Homologacao_interna"
"C:\sorteJayk\projeto\GLADY09\Projetc_first"
"C:\sorteJayk\projeto\GLADY09\Projetc_log"
"C:\sorteJayk\projeto\GLADY09\Requist"
"D:\PROJETOS sorteJayk\TI\ACESSO"
"D:\PROJETOS sorteJayk\TI\GLADY"
"D:\PROJETOS sorteJayk\TI\MVC"
"D:\PROJETOS sorteJayk\TI\PTR_MAIN"

) DO "C:\Arquivos de programas\TortoiseSVN\bin\TortoiseProc.exe" /notempfile /command:update /path:%%A /closeonend:3



Artigo completo (View Full Post)

 
BlogBlogs.Com.Br