Blog


A farsa dos televisores 3D
Categoria(s): Eletrônicos TI TV Uadarréu

Curtiu Avatar? Pensou em ter uma TV capaz de rodar filmes 3D em casa? É isso que a Sony e outras fabricantes prometem.

Desde que você troque sua recém comprada TV de LCD.

Aliás, isso sempre me lembra que nos anos 80, eu jogava com óculos 3D no Master System, exatamente com o mesmo princípio usado nas "novas" TVs em 3D. E funcionava muito bem.

Como não gosto de ficar replicando artigos de outras fontes, leia este artigo que conta toda a enganação das novas TVs 3D no site da Super Interessante.

Leia lá, comente aqui :)






Gravando vídeo da web

Nesse post vou falar descrever meu calvário ao tentar fazer um gravador de vídeo para web, no início tentando fazer ele com Java, e depois partindo para uma solução em Flash.

Aproveitando meu trabalho anterior com multimídia em Java, a mesma empresa que me pediu o trabalho do player multimídia, me solicitou que eu fizesse um gravador de vídeo que usasse a webcam do usuário. Porém, rodando na web.

Além disso, o gravador de vídeo também deveria capturar o som do microfone.

Parte 1: Tentando com Java

Bom, lá fui eu tentar usar o JMF novamente, já que ele captura o vídeo quando instalado na máquina do usuário. Achei no site da Sun umas classes que complementam o JMF e mostram na tela o vídeo que está sendo capturado (o JMF sozinho não mostra).

O chato, porém, é que pra ele capturar vídeo é preciso ter algumas bibliotecas nativas (DLLs ou .so) instaladas no dekstop do usuário.

E com applets, vira aquele parto: fiz um applet assinado (que o usuário tem que aceitar o alerta de segurança), e fiz um esquema pra detectar se o usuário tinha as bibliotecas nativas. Caso não tivesse, eu redirecionava ele para uma página com o instalador.

Bom, aí começaram os problemas: embora gravasse o vídeo, o cliente disse que os usuários do seu sistema seriam os mais novatos possíveis, e não gostou da solução de instalação de bibliotecas nativas.

Além disso, para um applet conseguir usar o microfone não basta ele ser assinado. Se isso já não fosse incômodo o suficiente, eu teria que achar uma solução para criar o arquivo .java.policies na pasta do usuário. E mesmo assim, o applet não consegue gravar e reproduzir ao mesmo tempo (por questões de segurança). Me pareceu ser um bug na verdade, já que em vários fórums disseram que arrumando as policies isso funcionaria.

Com javawebstart, o som era gravado normalmente, mas além do problema das bibliotecas nativas e seu instalador, o cliente não gostou de ser uma aplicação não embutida na página.

Ou seja, resumindo: se você fizer em javawebstart, e instalar bibliotecas nativas no computador do usuário, funciona.

Mas ainda assim, o vídeo gravado não terá compactação, será em RGB ou YUV.

Depois de pesquisar outras soluções, cheguei a duas possíveis: comprar uma biblioteca que permite um applet gravar som e vídeo (da Vimas Technologies), porém só funciona no Windows; ou jogar tudo pro alto e tentar usar o Flash.

Parte 2: Usando Flash

Já que em Java não deu certo, e eu não podia deixar o cliente na mão, fui então pesquisar como fazer o gravador de vídeo em Flash.

Eu usei bastante Flash em 1999 e 2000, na época do Flash 3 e 4, pra fazer umas animações, ou seja, muita água rolou por debaixo da ponte desde então.

Muita gente sabe aqui que não gosto de usar Flash, Applets ou qualquer outro tipo de plugin para fazer coisas que é possível fazer com Javascript+HTML. Porém esse não foi o caso.

Depois de achar na web alguns exemplos ensinando como usar a câmera (existe um objeto ActionScript chamado Camera - simples, não?), eu li que para gravar o vídeo num servidor, eu precisaria de um serviço de hospedagem com suporte ao Flash Media Server, da Adobe.

Outra vantagem, é que o vídeo é gravado diretamente no servidor em formato .flv (que usa o codec h.264).

Após consultar alguns fóruns, indicaram o serviço da Influxis (estrangeiro), que disseram ser ótimo, além de serem parceiros da Adobe.

O cliente contratou o serviço, fui lá e configurei a conta, e aí tentei sair do "olá mundo" com o uso da câmera no Flash. Vi que usando o objeto NetStream, eu conseguia gravar um vídeo da câmera no servidor (e reproduzir, se necessário), bastando conectar o vídeo gravado num objeto Video. Tudo bem simples mesmo.

Bom, aí agora faltava elaborar mais o gravador: colocar botões, capturar os eventos, fazer pausa, stop, etc. E me deparei com algo que não esperava: a bagunça que virou o ActionScript.

Além de 3 versões, o Actionscript 2 é totalmente diferente do 3. Fora isso, boa parte do que eu tive que usar para criar o player, não estava documentada no help do Flash. Pra ajudar, existem vários sites da Adobe com parte da documentação, e coisas que você só acha em fórums (que não sejam da Adobe).

Ou seja, eu tive que ficar procurando pela web cerca de 70% do código final, que era de coisas não documentadas, e ficar na tentativa e erro.

Pra ajudar, depois de 4 horas tentando achar o motivo do gravador de vídeo ter parado de funcionar de repente, eu notei que ele precisa ter a largura e altura mínimas suficiente para mostrarem o alerta de segurança (que confirma se o usuário permite usar a câmera). Caso o flash não tenha altura e largura mínimas pra essa confirmação aparecer, simplesmente não há captura do vídeo.

Enfim, saiu, mais foi um parto. E espero que isso possa ajudar alguém que precise fazer o mesmo.






Player multimídia em Java

Recentemente precisei fazer, para uma agência de publicidade, um player de vídeo em Java, que além da necessidade óbvia de rodar no Linux, atendesse à vários requisitos deles, como: sempre iniciar em full screen, ler a playlist de um arquivo XML remoto (ou não), fornecer estatísticas de uso pra um banco de dados, exibir imagens, reproduzir cada item durante um tempo programado, exibir arquivos Flash, etc.

Como não achei tutorial algum na web explicando o que fazer (seja em português, seja em inglês), vou descrever brevemente o que fiz e funcionou tanto no Windows XP, Vista e Ubuntu 9.10.

Existe uma plataforma de multimídia pra Java, o Java Multimedia Framework, da Sun. Funciona bem, captura vídeo também, porém os codecs já estão bem desatualizados. Saí em busca de algo que pudesse reproduzir os formatos mais populares hoje em dia.

Primeiramente um resumo do que procurei e NÃO funcionou:

- FMJ: uma tentativa de reescrever o código do JMF. Funciona bem pra reproduzir vídeos, porém faltam várias features, e é muito difícil de se reaproveitar o código pra fazer algo.

- JFFMPEG: um wrapper Java para a FFMPEG (biblioteca de codecs feitos em C e usado para vários players tanto em Windows quanto Linux). A idéia deles é boa: se o codec existir nativamente, usa a versão nativa, senão usa a versão em Java. O problema: eles não fornecem as bibliotecas nativas para Windows. Eu notei que os envolvidos fundaram uma empresa e agora VENDEM uma solução. Por isso tiraram os arquivos que fariam a coisa funcionar. Até existem os passos pra se compilar tudo, mas além de estarem escondidos no site, são incompletos.

Depois de abandonar estas duas soluções, achei o FOBS4J, que é uma solução em Java baseada no JMF e um wrapper sobre a FFMPEG. Baixei e funcionou com todos os vídeos comumente usados.

Como eles usam o JMF como base, baixei o código dele também do site da Sun. Não é o código mais lindo do mundo, mas pode ser reusado numa boa.

Agora aqui mais algumas dicas salvadoras:

- a versão 0.4.2 do fobs4j (que só existe pra Windows) é altamente instável, não a use (ela sempre dá crash por volta de 5 minutos de reprodução de vídeo);

- como você vai ver nos exemplos do fobs4j, você vai precisar sempre informar qual o path das DLLs/SOs (use um script no Linux, e um .bat ou .exe no Windows);

- o código do JMStudio é meio porquinho, então você pode tentar fazer seu próprio player, ou se estiver acostumado a ler código, pode tentar usar o do JMStudio pra algo.

- o JMF do fobs4j não inclui várias bibliotecas nativas. Se você precisar fazer captura de vídeo, vai precisar delas. Ou seja, basta baixar a versão do site da Sun e copiar estas bibliotecas.

Espero que isso possa ajudar quem tiver que passar pelos mesmos problemas.






Fotos do Níver do Pimpolho Jr.
Categoria(s): Vida Pessoal

Coloquei no ar as fotos do aniversário do Pimpolho Jr, tiradas pelo meu bom amigo Guilherme Lechat.

Lembrando que as fotos foram redimensionadas automaticamente pelo JAlbum (programa para gerar álbums, feito em Java).

Portanto se você acha que saiu muito feio na foto, não se culpe, culpe o JAlbum e não se torture.






Por que não rouba a mãe?

Domingo, como de costume, fui com minha esposa levar o Pimpolho Jr ao SESC, para ele socializar com outras crianças, ver brinquedos diferentes, e eu também aproveitar e ler as revistas da semana.

Aproveito a revistaria do SESC para ler as revistas por diversos motivos: não tenho a menor vontade de comprar tantas revistas semanalmente (e nem verba pra isso); é ótimo sair de casa (e a revistaria tem até ar-condicionado); aproveito a onda eco-chata e não derrubo mais árvores comprando tantas revistas (e por consequência vou levar à falência a Votorantim e a Abril).

Uma coisa "interessante" em fazer isso: sempre tem uma ou duas pessoas que não respeitam o silêncio da sala de leitura, e vão lá apenas pra incomodar alguém que está lendo. Já notei que são sempre as mesmas duas ou três pessoas, que ficam o final de semana inteiro vagando pelo SESC, na tentativa desesperada de fazer amigos. Se eles vêem alguém vagamente conhecido em qualquer setor, vão lá correndo e não páram mais de falar. Tudo bem, desde que não seja na sala de leitura.

E um fato realmente chato: no melhor estilo "sou brasileiro e não desisto de ser pilantra nunca", essa semana roubaram as revistas Super Interessante, a Info, e a Quatro Rodas.

Tudo bem que a Super virou ultra-pop, a Info é genérica demais (e só usa os termos "de lavada" ou "deu um banho na concorrência"), e a Quatro Rodas ama de paixão todos os carros da Volks. Ao menos não roubaram a Exame, Você S/A, Scientific American Brazil e as revistas genéricas de mulher (com matérias como "perca N quilos com a dieta do ", "aprenda os segredos mais apimentado do sexo", "fique linda com a coleção primavera-verão"). Também não roubaram a revistinha com a Programação do SESC.

Isso porque de uns dois anos pra cá, o SESC já diminuiu bastante a quantidade de revistas que compram por semana (basicamente tiraram todas as revistas que tratavam do mesmo assunto e deixaram apenas uma do gênero). Daqui a pouco eles cansam de abastecer de revistas o espertinho que anda levando tudo pra casa, e pronto: nem o espertinho e nem todas as outras pessoas que frequentam o local vão poder ler nada.





Anúncios