Posts Tagged ‘Linux’

Atualizado: Tutorial/Dicas: Usando gStreamer, QT4 e Python para criar um player

Olá pessoas, depois de muito tempo sem passar por aqui para postar nada, decidi postar um pequeno tutorial, ou uma série de dicas para que vocês tenham uma ideia de como usar gStreamer, QT4 e Python na criação de um player :)

Primeiro, o porque do uso do QT4? Simples, não gosto muito do GTK, prefiro QT, sou lunatiKo, dá nisso :P

Depois, o porque do gStreamer? gStreamer é mais prático para quem quer criar um player, tá tudo ali, instala meia-duzia de pacotes e teu sistema toca tudo. Além do mais, dá suporte a efeitos e coisas afins. Numa aplicação QT4 pura, é melhor usar só o gStreamer e não o Phonon

Agora vamos deixar de lorota e começar a codar :D

O gStreamer tem toda uma estrutura de Pipelines, sinks e coisas do gênero, mas para um simples player nos não precisamos nos preocupar tanto assim ;) Basta um simples elemento, chamado playbin, o playbin faz o trabalho de criar o decoder, o sink para a saida de som e tudo mais, tudo automaticamente :D

Vejamos um pequeno código (Atenção, faça isso no interpretador python, afinal o gStreamer usa uma Thread para poder tocar tudo, portanto, o seu programa iria sair assim que chegasse no play :P

import gst

player = gst.Pipeline(’player’)

playbin = gst.element_factory_make(’playbin’)

player.add(playbin)

playbin.set_property(’uri’,'file:///home/…/minhamúsica.ogg’)

player.set_state(gst.STATE_PLAYING)

Viram que não é tão dificil não é :)

Agora analisemos o código:

import gst -> Importa o gStreamer

player = gst.Pipeline(’player’) -> Cria a pipeline

playbin = gst.element_factory_make(’playbin’) -> Cria o elemento playbin

player.add(playbin) -> Adiciona o playbin a pipeline do gStreamer

playbin.set_property(’uri’,'file:///home/…/minhamúsica.ogg’) -> Seta a propriedade uri do playbin para a localização do stream, isso pode ser um stream http, um arquivo local e por ai vai

player.set_state(gst.STATE_PLAYING) -> Muda o estado da pipeline, STATE_PLAYING começa a tocar, STATE_NULL para de tocar, STATE_PAUSED pausa o stream

Adivinhem só, se você colocar um stream de vídeo ai, ele vai mostrar o vídeo numa nova janela :D

Agora você se pergunta, como posso saber o fim do stream? Simples eu digo!

Usamos dbus e pygtk

Vejam só o código:

import gst, gtk

def mensagem(bus, message,player):

if message.type == gst.MESSAGE_EOS:

player.set_state(gst.STATE_NULL) # Vai para o stream na mensagem de fim-de-stream

player = gst.Pipeline(’player’)

bus = player.get_bus() # Pega o elemento do DBUS

bus.add_signal_watch() # Adiciona o watch de sinais

bus.enable_sync_message_emission() # Habilita a emissão de mensagens sync

bus.connect(’message’,message,player) #Conecta o sinal e passa como parametro opcional o player.

playbin = gst.element_factory_make(’playbin’)

player.add(playbin)

playbin.set_property(’uri’,'file:///home/…/minhamúsica.ogg’)

player.set_state(gst.STATE_PLAYING)

gtk.main() #Inicia o GTK para que o dbus funcione…

Isso dai já faz o player em si.

Depois desses códigos, vou deixar que vocês pesquisem um pouco :)

Vou dar logo uma dica, usem o QWidget.winId() (no Windows, int(QWidget.winId())), coloquem o gtk.main numa thread com QThread e criem um qt sinal para o “message” e o “sync-message::element”

 

Além disso, tenho um projeto de player aqui: http://svn.kinuxlinux.org/DJ, é chamado de DeeJay, as deps são gstreamer-python, pygtk, pyqt4 :D

Aproveitem

Links:

  • http://doc.trolltech.com
  • http://pygstdocs.berlios.de
  • http://pygtk.org

Posted by Otávio Souza on Julho 21st, 2008 4 Comments

Dica: KeyTouch

Olá pessoas, depois de um tempinho usando KDE4, procurei o jeitinho de colocar as teclas multimédias do teclado do Note pra funcionar ;)

Fui do velho jeito, mas descobri que o KMix não está mais com configurações de aumento de volume via teclas, o que me deixou fula, até ai blz, posso mandar o amaroK fazer isso, mas fico, só vou poder usar o amaroK para ouvir as coisas? E se for um vídeo? (Apesar de termos um Plasmoid para o amaroK exibir vídeos ;) )

Procurei um pouco (santo google!), e achei o que queria! O KeyTouch, com ele é possivel configurar diversos tipos de teclado multimédia, assim você não tem trabalho algum, é só dizer quais são as aplicações e cabum! Tudo funcionando, até mesmo um OSD para o volume ;)

Abraços e fica ai a dica :)

Posted by Otávio Souza on Junho 18th, 2008 No Comments

Linux como uma melhor opção - Palestra no CEFET-SE

Segue o slide da apresentação que fiz no CEFET-SE!

Quando tiver apresentado a outra, mando o vídeo do Youtube :)

Linux como uma melhor opção

Posted by Otávio Souza on Junho 18th, 2008 No Comments

Palestra sobre SL no CEFET-SE

Olá pessoas, como vocês sabem também sou palestrante :P

Então, convido todos vocês ao micro-evento no CEFET-SE no dia 18/06 às 9:00 no Mini-Auditório 1 (Ao lado da DEN)

E para aqueles que não podem, na sexta feira à noite, às 7:00 no Auditório Engenheiro Pedro Bras.

Lembrando, isso é tudo dentro do CEFET-SE

O micro-evento vai ser promovido pelo MSLC-SE, estamos cogitando a possibilidade de termos certificados para os participantes ;)

UPDATE: Não tivemos a palestra da sexta, pois numa sexta, noite, com feriado já chegando, só tínhamos 17 pessoas no CEFET todo, isso pq estavam fazendo prova =\

Abraços!

Posted by Otávio Souza on Junho 6th, 2008 No Comments

VIA - Vergonha na cara um dia chega

Olá pessoas, bem, dizem que vergonha na cara um dia chega e isso é verdade, um bom exemplo é a VIA OO, VIA? VIA? Você tem certeza que é a VIA? Sim, tenho certeza que é a VIA :P

A empresa finalmente tomou vergonha na cara e reconheceu o Software Livre como uma “onda” que vai ficar e pegar e acabou por liberar as especificações dos seus hardwares, quem mais vai se aproveitar disso é o pessoal do X e do Mesa, quem sabe agora teremos um suporte 3D decente? O pessoal das placas de rede também, poderemos agora usar aquela maldita placa de rede VIA sem precisar passar noapic? Espero que a resposta para essas perguntas seja SIM! Sim poderemos!

Mas isso só o tempo ira nos dizer :D

Abraços Livres && Como diz um amigo meu, peroba sempre ajuda :D

Posted by Otávio Souza on Maio 4th, 2008 No Comments