×
Namespaces

Variants
Actions
(Difference between revisions)

Archived:Aplicações multimídia para Maemo - Parte I

From Nokia Developer Wiki
Jump to: navigation, search
Raulherbster (Talk | contribs)
lpvalente (Talk | contribs)
m (Lpvalente - - Resumo)
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[Category:Maemo (Português)]][[Category:Multimedia]][[Category:Python (Português)]][[Category:Lang-PT]]
+
[[Category:Maemo]][[Category:Multimedia]][[Category:Python]][[Category:Lang-Portuguese]]
 +
{{Archived|timestamp=20121214212227|user=[[User:Lpvalente|Lpvalente]]|language=Lang-Portuguese}}
 +
 
 +
 
 +
{{ArticleMetaData
 +
|sourcecode= <!-- Link to example source code e.g. [[Media:The Code Example ZIP.zip]] -->
 +
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) -->
 +
|devices= <!-- Devices tested against - e.g. ''devices=Nokia 6131 NFC, Nokia C7-00'') -->
 +
|sdk= <!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Nokia Qt SDK 1.1]) -->
 +
|platform= <!-- Compatible platforms - e.g. Symbian^1 and later, Qt 4.6 and later -->
 +
|devicecompatability= <!-- Compatible devices e.g.: All* (must have internal GPS) -->
 +
|dependencies= <!-- Any other/external dependencies e.g.: Google Maps Api v1.0 -->
 +
|signing=<!-- Signing requirements - empty or one of: Self-Signed, DevCert, Manufacturer -->
 +
|capabilities=<!-- Capabilities required by the article/code example (e.g. Location, NetworkServices. -->
 +
|keywords= <!-- APIs, classes and methods (e.g. QSystemScreenSaver, QList, CBase -->
 +
|id= <!-- Article Id (Knowledge base articles only) -->
 +
|language=Lang-Portuguese
 +
|translated-by= <!-- [[User: XXXXX]] -->
 +
|translated-from-title=<!-- Title only -->
 +
|translated-from-id= <!-- Id of translated revision -->
 +
|review-by=<!-- After re-review: [[User:username]] -->
 +
|review-timestamp=<!-- After re-review: YYYYMMDD -->
 +
|update-by=<!-- After significant update: [[User:username]]-->
 +
|update-timestamp=<!-- After significant update: YYYYMMDD -->
 +
|creationdate=20080921
 +
|author=[[User:Raulherbster]]
 +
}}
 +
 
 +
===Resumo===
 +
{{Abstract|Este artigo faz parte de uma série de artigos que explica como criar aplicações multimídia no Maemo.}}
 +
 
 +
===Introdução===
 
A maioria das aplicações multimídia da plataforma [[Maemo]] são baseadas no GStreamer, uma biblioteca open-source que permite a construção de aplicações para manipulação de streams de mídia: desde simples reprodutores de mp3 até editores de aúdio e vídeo com funcionalidades complexas. Sua arquitetura é baseada em plug-ins, os quais provêem um grande número de codecs e funcionalidades já implementadas. GStreamer foi criado para prover uma solução para falhas no suporte à multimídia na plataforma Linux, por exemplo:
 
A maioria das aplicações multimídia da plataforma [[Maemo]] são baseadas no GStreamer, uma biblioteca open-source que permite a construção de aplicações para manipulação de streams de mídia: desde simples reprodutores de mp3 até editores de aúdio e vídeo com funcionalidades complexas. Sua arquitetura é baseada em plug-ins, os quais provêem um grande número de codecs e funcionalidades já implementadas. GStreamer foi criado para prover uma solução para falhas no suporte à multimídia na plataforma Linux, por exemplo:
  
 
; Existência de código duplicado : A maioria dos reprodutores de arquivos multimídia basicamente reimplementavam o mesmo código várias vezes. Uma determinada funcionalidade - a decodificação de um arquivo OGG, por exemplo - é comumente utilizada e poderia ser implementada como um elemento único e central para vários reprodutores;
 
; Existência de código duplicado : A maioria dos reprodutores de arquivos multimídia basicamente reimplementavam o mesmo código várias vezes. Uma determinada funcionalidade - a decodificação de um arquivo OGG, por exemplo - é comumente utilizada e poderia ser implementada como um elemento único e central para vários reprodutores;
 +
 
; Mecanismos não-unificados de plug-ins : Tipicamente, um reprodutor de multimídia possui um plug-in para diferentes tipos de mídia. Dois reprodutores de mídia distintos certamente vão implementar seus próprios mecanismos de plug-in. Entretanto, esses componentes não poderão ser facilmente compartilhados, pois a arquitetura de um reprodutor de mídia é bastante restrita para compartilhamento com outros reprodutores;
 
; Mecanismos não-unificados de plug-ins : Tipicamente, um reprodutor de multimídia possui um plug-in para diferentes tipos de mídia. Dois reprodutores de mídia distintos certamente vão implementar seus próprios mecanismos de plug-in. Entretanto, esses componentes não poderão ser facilmente compartilhados, pois a arquitetura de um reprodutor de mídia é bastante restrita para compartilhamento com outros reprodutores;
 +
 
; Reprodutores/Bibliotecas para um único propósito : Um reprodutor é criado para reproduzir um formato específico de aúdio e/ou de vídeo. A maioria dos reprodutores têm implementado uma infra-estrutura completa com o intuito de alcançar o seu único propósito: playback. A arquitetura dificulta a adição de novos filtros ou efeitos especiais para serem aplicados nos arquivos de multimídia.
 
; Reprodutores/Bibliotecas para um único propósito : Um reprodutor é criado para reproduzir um formato específico de aúdio e/ou de vídeo. A maioria dos reprodutores têm implementado uma infra-estrutura completa com o intuito de alcançar o seu único propósito: playback. A arquitetura dificulta a adição de novos filtros ou efeitos especiais para serem aplicados nos arquivos de multimídia.
  

Revision as of 00:23, 15 December 2012

Archived.pngAquivado: Este artigo foi arquivado, pois o conteúdo não é mais considerado relevante para se criar soluções comerciais atuais. Se você achar que este artigo ainda é importante, inclua o template {{ForArchiveReview|escreva a sua justificativa}}.

Acredita-se que este artigo ainda seja válido no contexto original (quando ele foi escrito)


Article Metadata

Artigo
Criado por User:Raulherbster em 21 Sep 2008
Última alteração feita por lpvalente em 15 Dec 2012

Resumo

Este artigo faz parte de uma série de artigos que explica como criar aplicações multimídia no Maemo.

Introdução

A maioria das aplicações multimídia da plataforma Maemo são baseadas no GStreamer, uma biblioteca open-source que permite a construção de aplicações para manipulação de streams de mídia: desde simples reprodutores de mp3 até editores de aúdio e vídeo com funcionalidades complexas. Sua arquitetura é baseada em plug-ins, os quais provêem um grande número de codecs e funcionalidades já implementadas. GStreamer foi criado para prover uma solução para falhas no suporte à multimídia na plataforma Linux, por exemplo:

Existência de código duplicado 
A maioria dos reprodutores de arquivos multimídia basicamente reimplementavam o mesmo código várias vezes. Uma determinada funcionalidade - a decodificação de um arquivo OGG, por exemplo - é comumente utilizada e poderia ser implementada como um elemento único e central para vários reprodutores;
Mecanismos não-unificados de plug-ins 
Tipicamente, um reprodutor de multimídia possui um plug-in para diferentes tipos de mídia. Dois reprodutores de mídia distintos certamente vão implementar seus próprios mecanismos de plug-in. Entretanto, esses componentes não poderão ser facilmente compartilhados, pois a arquitetura de um reprodutor de mídia é bastante restrita para compartilhamento com outros reprodutores;
Reprodutores/Bibliotecas para um único propósito 
Um reprodutor é criado para reproduzir um formato específico de aúdio e/ou de vídeo. A maioria dos reprodutores têm implementado uma infra-estrutura completa com o intuito de alcançar o seu único propósito: playback. A arquitetura dificulta a adição de novos filtros ou efeitos especiais para serem aplicados nos arquivos de multimídia.


Arquitetura

Basicamente, a arquitetura do GStreamer é composta por elementos, bins, pipelines e pads. Na nomenclatura do GStreamer, todo componente, exceto o próprio fluxo, é chamado de elemento: cada um deve ter, pelo menos, um pad de entrada (source), ou um pad de saída (sink), ou os dois ou até mesmo vários deles. Geralmente, uma aplicação GStreamer é composta por uma cadeia de elementos ligados entre si e permite-se que os dados fluam através dessa cadeia de elementos. Um elemento possui uma função bem específica, por exemplo, ler os dados de um arquivo ou decodificar os sinais presentes em um fluxo. Um elemento pode está em quatro estados possíveis:

  • Null: estado padrão;
  • Ready: buffers estão alocados e os arquivos propriamente abertos, contudo o fluxo ainda está em espera;
  • Paused: o fluxo está aberto, mas seu movimento está congelado;
  • Playing: o mesmo que Paused, mas os dados estão fluindo.


Um fluxo de mídia do source_element para sink_element

Um bin é simplesmente um conteiner de elementos que contém vários outros elementos ligados entre si. Lembre-se que um bin também é um elemento. Um pipeline é um tipo especial de bin que permite a execução dos elementos nele presentes.

Um pipeline com 3 elementos

Pads são como portas pelas quais o fluxo de mídia trafega. Normalmente, eles possuem possuem capacidades de manipulação de dados bem específicas, por exemplo, eles podem restrigir os tipos de dados que trafegam por eles.

Um elemento com 3 pads: sink, audio e video

Além de aplicações que utilizam plug-ins, também podemos desenvolver plug-ins para o framework GStreamer. Basicamente, um plug-in é um bloco de código facilmente carregável. Um simples plug-in pode conter a implementação de vários elementos, ou apenas de um único. Os plug-ins são classificados em classes (Base, Good, Ugly e Bad) de acordo com a licensa de distribuição e a qualidade.

86 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×