Estou desenvolvendo uma aplicação em Java que manipula arquivos multimídia…Tentei utilizar o JMF, mas não obtive resultados positivos para os meus objetivos. Assim, optei por utilizar o JVLC, um binding para o VLC player (implementado em C++) em Java:
http://trac.videolan.org/jvlc/
Localmente funciona perfeitamente. Se eu fizesse uma aplicação desktop, distribuiria o jar e colocaria as dll´s na mesma pasta da aplicação. Tudo funcionaria perfeitamente. Todavia, minha aplicação deve ser acessível através de um portal. Assim, preciso distribuir a aplicação via Applet ou JWS.
Eu havia desenvolvido um mecanismo que, quando a aplicação é inicializada, ela verifica se consegue acessar as bibliotecas em uma das pastas listadas na propriedade “java.library.path”. Se as bibliotecas não estão instaladas, minha aplicação faz o download delas do meu servidor e instala em uma destas pastas (java.library.path). O problema é que isso só funciona até o Windows XP…No linux e no Windows Vista minha aplicação não tem permissão para acessar essas pastas de programas…Só consigo acessar pastas de usuários. Assim, meu download e instalação ficam impossibilitados…
1-Distribuição via JWS:
Descobri uma aplicação que utiliza o JVLC também e é distribuída via JWS:
http://www.myuniportal.com/download.php
Quando esta aplicação é “instalada” ela faz o download de um jar com todas as dll´s necessárias par ao fucionamento. Quando ela é inicializada, verifiquei na pasta “…\Sun\Java\Deployment\cache\6.0” e descobri que, de alguma forma a aplicação extrai essas dll´s do jar e as coloca em uma pasta dentro desse contexto de pastas…A pasta que tem o Jar que encapsula as dll´s e que abriga as dll´s desencapsuladas é “…\Sun\Java\Deployment\cache\6.0\47”, caso alguém queria baixar a aplicação para dar uma olhada no que estou dizendo. Nesta pasta tem um jar de 10,3 MB. É ele quem encapsula as dll´s…A aplicação fucniona perfeitamente. O arquivo jnlp dela é o seguinte:
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+"
codebase="http://www.myuniportal.com/MyUniPortal/" href="http://www.myuniportal.com/MyUniPortal/MyUniPortal.jnlp">
<information>
<title>MyUniPortal</title>
<vendor>MyUniPortal</vendor>
<homepage href="http://www.myuniportal.com"/>
<description>MyUniportal Application</description>
<icon href="myuniportalicon.jpg"/>
<icon kind="splash" href="myuniportal.jpg"/>
<shortcut online="true">
<desktop/>
<menu/>
</shortcut>
<offline-allowed/>
</information>
<security>
<all-permissions/>
</security>
<update check="timeout" policy="always"/>
<resources os="Windows">
<j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se" java-vm-args="-Xms128m -Xmx128m -XX:NewSize=96m -XX:MaxNewSize=96m " />
<jar href="main.jar.pack.gz" main="true"/>
<jar href="eConcertUser.jar.pack.gz"/>
<jar href="MyAdmin.jar.pack.gz"/>
<jar href="MyMail.jar.pack.gz"/>
<jar href="MyMaps.jar.pack.gz"/>
<jar href="MyOffice.jar.pack.gz"/>
<jar href="MyImages.jar.pack.gz"/>
<jar href="MyColab.jar.pack.gz"/>
<jar href="MyVideo.jar.pack.gz"/>
<jar href="MyTeach.jar.pack.gz"/>
<jar href="MyLib.jar.pack.gz"/>
<jar href="MySearch.jar.pack.gz"/>
<jar href="MyComms.jar.pack.gz"/>
<jar href="lib/activation.jar.pack.gz"/>
<jar href="lib/ssce.jar.pack.gz"/>
<jar href="lib/jmf2.1.1.e.jar.pack.gz"/>
<jar href="lib/customizer.jar.pack.gz"/>
<jar href="lib/mediaplayer.jar.pack.gz"/>
<jar href="lib/multiplayer.jar.pack.gz"/>
<jar href="lib/sound.jar.pack.gz"/>
<jar href="lib/MyUniPortal-WebServiceClient.jar.pack.gz"/>
<jar href="lib/yahoo_search-2.0.0.jar.pack.gz"/>
<jar href="lib/synthetica.jar.pack.gz"/>
<jar href="lib/syntheticaBlackMoon.jar.pack.gz"/>
<jar href="lib/syntheticaBlackStar.jar.pack.gz"/>
<jar href="lib/syntheticaBlueIce.jar.pack.gz"/>
<jar href="lib/syntheticaBlueMoon.jar.pack.gz"/>
<jar href="lib/syntheticaBlueSteel.jar.pack.gz"/>
<jar href="lib/syntheticaGreenDream.jar.pack.gz"/>
<jar href="lib/syntheticaOrangeMetallic.jar.pack.gz"/>
<jar href="lib/syntheticaMauveMetallic.jar.pack.gz"/>
<jar href="lib/syntheticaSilverMoon.jar.pack.gz"/>
<jar href="lib/syntheticaSkyMetallic.jar.pack.gz"/>
<jar href="lib/syntheticaWhiteVision.jar.pack.gz"/>
<jar href="lib/swingx-lite.jar.pack.gz"/>
<jar href="lib/jep-2.3.1.jar.pack.gz"/>
<jar href="lib/jfreechart-1.0.9.jar.pack.gz"/>
<jar href="lib/jcommon-1.0.12.jar.pack.gz"/>
<jar href="lib/DJNativeSwing.jar.pack.gz"/>
<jar href="lib/jna.jar.pack.gz"/>
<jar href="lib/jna_WindowUtils.jar.pack.gz"/>
<jar href="lib/jogl.jar.pack.gz"/>
<jar href="lib/gluegen-rt.jar.pack.gz"/>
<jar href="lib/JDICplus.jar.pack.gz"/>
<extension name="worldwind" href="http://www.myuniportal.com/MyUniPortal/worldwind.jnlp" name="worldwind"/>
<nativelib href="lib/windows/x86/JDICplus_native.jar"/>
<nativelib href="jmf-native.jar"/>
<nativelib href="jogl-native.jar"/>
<nativelib href="jvlc-native.jar"/>
</resources>
<application-desc main-class="MyUniPortal" >
<argument>mup_userid=student</argument>
<argument>mup_password=student</argument>
</application-desc>
</jnlp>
Gostaria de saber se alguém sabe como posso fazer algo semelhante na minha aplicação…
2-Distribuição via Applet
Via applet existe alguma forma viável de colocar essas bibliotecas em seu devido lugar para todos os SO´s? Não que eu procure uma panacéia, mas pelo menso uma forma viável para cada SO.
Agradeço desde já…
