Antes que nada para quien ande despistado, Streaming PC -> Android, básicamente es poder reproducir en nuestro dispositivo audio o música que no están físicamente en él, estando generalmente en nuestro PC. El objetivo va a ser simple, tener TODA nuestra música y vídeos en el dispositivo, o al menos parecer que lo tenemos. En mi caso, si abro por ejemplo la aplicación Winamp o Música (la que trae por defecto) tengo acceso a más de 150GB de música y más de 500GB de vídeos)

Estaba visitando algún que otro foro cuando me llamó la atención que más de un forero preguntaban cual era la mejor opción para realizar Streaming desde un PC a un dispositivo Android. Lo gracioso es que el 90% de todas las respuestas eran siempre las mismas: Que si las mismas aplicaciones que lo hacen posible en iPhone, que el programa y aplicación Orb, que si Subsonic, que si…

Todas las soluciones que se daban pasaban por instalar un programa en el PC y otro en el dispositivo. Además, en la mayoría de los casos si se deseaba usar la función para poder hacer Streaming via WAN (no dentro de la propia red local) hacía falta tener uan cuenta dada de alta en los servicios de estos programas, con lo que pueda implicar en ello la privacidad de nuestros datos (a saber que estadísticas o datos guardan de nosotros esos sites).

Lo bonito de la informática y de los estándares es que cuando se hacen las cosas bien generalmente te ahorras dinero y tiempo/trabajo, a la vez que ganas en seguridad, facilidad y en este caso también rapidez. Estas aplicaciones te obligan a instalar programas absurdos en el PC, programas con publicidad, recopilación de datos… y todo ello puede hacerse simplemente con instalar en este caso una “aplicación” y media en Android, sin instalar absolutamente nada en nuestro PC. Y digo “aplicación”, porque en realidad si nuestro dispositivo lo soporta, la “aplicación” no es más que una interfaz gráfica de utilidades linux que ya están presentes en el dispositivo.

Esto no es ninguna magia. Como todos saben (y quien no lo sepa hoy ya lo va a saber) todos los sistemas Windows, Linux y MAC OS incluso permiten el uso del protocolo SMB de Microsoft (Service Message Block… el nombre no es que sea muy intuitivo). Básicamente SMB es el protocolo para compartir carpetas/archivos en red de forma mayoritaria. En Linux o MAC OS se suele leer o suena más como SAMBA, que no es más que una implementación de este protocolo. En otros lugares también se le conoce como CIFS (Common Internet File System). Dejando a un lado el nombre, básicamente este protocolo es el que nos permite en Windows hacer clic derecho en una carpeta y compartirla para que cualquier otro dispositivo tenga acceso a ella. Tan fácil como eso. ¿Y sinceramente… por qué no usar esto para Android? Vamos a ver lo que tendríamos que hacer. El objetivo final es que cuando yo acceda a mi biblioteca de música dentro cualquier aplicación Android de reproducción de medios (Aplicación Música, Vídeos, Winamp…) no solo aparezca la música que poseo sino toda la música disponible en mi red:

  • Compartir los recursos de la red en los equipos donde dicha música se encuentre
  • Tener un dispositivo Android compatible con CIFS
  • Instalar un gestor CIFS (por comodidad) y montar la carpeta de red
  • Hacer que Android reconozca la carpeta
  • Forzar la actualización de medios en nuestro dispositivo
  • Opcional -> Permitir el acceso remoto (desde WAN) a nuestros recursos

Aunque parezcan muchos puntos, en realidad todo ello se realiza en un par de minutos máximo, no se requieren conocimientos de nada, y es bastante simple.

 

  1. ¿Como se comparten recursos de red?

    Bueno, esto no es que sea el tema principal. Depende de si usamos por ejemplo Windows Vista/7 o XP. El proceso es similar de todos modos. Primero nuestro equipo tendrá que reconocer nuestra red como red privada o de trabajo para que la detección de red esté activada por defecto. También recomiendo no usar las funciones de compartición en el hogar, soy de los que prefiere el sistema tradicional. Visto esto, tan solo hay que coger por ejemplo nuestra carpeta donde se encuentra toda nuestra música, en mi caso por ejemplo todo el contenido audio/visual se encuentra en dos sitios: Un HDD externo conectado al router y una unidad en mi propio equipo. En el caso de mi equipo tan solo tengo que realizar un botón derecho compartir, uso compartido avanzado… establecer un nombre al recurso de la red (anotar que nombre se le pone, importante) y por defecto debería de ser suficiente. En el caso del router es similar, salvo que toda la gestión se hace a través de este. Con ello, todos los equipos de la red serían capaces de detectar el nuevo recursos de la red, con lo que podrán reproducir cualquier contenido de este. Ojo!! Dependiendo de la seguridad de nuestro equipo y como se halla configurado la compartición, es posible que dichos recursos estén a disposición de todos o solo a aquellos que tengan un usuario y contraseña concretos

     

  2. ¿Como puedo tener un dispositivo Android compatible con CIFS?

    En la actualidad existen de serie dispositivos que poseen los módulos en el kernel para CIFS, pero en el caso de que no se tenga, prácticamente todos los dispositivos Android tienen a sus disposición Kernels con soporte para CIFS, y aun cuando no lo sean, siempre pueden descargar el módulo pertinentel, copiarlo en la carpeta de sistema por una de las muchas formas que se pueden hacer, generalmente en el Path “/system/lib/modules”  y problema resuelto. El archivo que pongo a continuación son dos módulos, el primero es para CIFS, el segundo es un agregado que como veremos más adelante nos evita problemas con los caracteres españoles:

    Módulos para CIFS

    Estos módulos deberían de ser compatibles con la gran mayoría de todos los Kernels. Por supuesto como he dicho, siempre y cuando ya de por sí no tengamos un Kernel con soporte para CIFS.

     

  3. ¿Como instalar y configurar un gestor CIFS y montar la carpeta? ¿Como hacer que nuestro dispositivo la reconozca?

    San Google no tiene restricciones absurdas en el Market como Apple en su AppStore. Cualquier dispositivo Android puede acceder al Market e instalar de forma gratuita la aplicación CIFS Manager. Dependiendo del soporte que tenga nuestro dispositivo en el Kernel, será necesario (o no) tener nuestro dispositivo rooteado. Aquí vamos a interpretar que sí lo tenemos. Tan solo se trata de configurar el cliente CIFS con los ajustes que previamente configuramos en nuestro Windows.

    En primer lugar la dirección IP (o dominio) del recurso compartido, así como su nombre. Si esta en el equipo 192.168.100.200 y el recurso se llama perico, habría que poner “192.168.100.200/perico”. Por supuesto el usuario y la contraseña que tienen permiso para acceder a dicho recurso, y para acabar el punto de montaje, que vamos a dejarlo de momento por defecto, que creo que era /mnt/cifs. Lo que hace el punto de montaje es especificar la ruta en nuestro dispositivo donde se montará el recurso compartido…. es decir que si accediésemos con un gestor de archivos a dicha ruta, al entrar en dicha carpeta estaríamos entrando al recurso compartido. Por último, se pueden especificar o no otras opciones, pero eso lo veremos más adelante. Simplemente con esto, si usásemos cualquier gestor de archivos ya podríamos acceder al contenido de nuestro recurso compartido, y si lo abriésemos desde el explorador de archivos el txt, el audio, el video… que exista en él, lo abriría nuestro dispositivo con la aplicación asociada.

     

  4. ¿Como hacer que Android reconozca la carpeta montada para que realmente parezca como si toda la música/video estuviesen en nuestro dispositivo?

    Bueno, esto es una cuestión meramente de lógica. Por regla general, cuando nuestro dispositivo arranca se ejecuta un servicio de Android que escanea nuestra SD en busca de nuevos contenidos multimedias. Recordar que Android no es como iPhone que tienes que pasar obligatoriamente por iTunes para añadir audio, vídeos o imágenes por ejemplo, en Android copias cualquier contenido que desees en la SD y este aparecerá en su respectiva aplicación, así de simple!! En iPhone OS no solo lo tienes que hacer a través de iTunes, sino que tan solo puedes tenerlo sincronizado con tu PC, en nuestro caso, el caso de los Androides, con montar la tarjeta SD en el equipo que sea podemos copiarnos del PC que sea el contenido que deseemos y listo, cuando abramos nuestro reproductor de vídeo, de audio o nuestro visor de fotos aparecerá todo.

    Visto esto, es simple. Si en vez de montar nuestro recurso compartido en la carpeta de sistema /mnt/cifs (que es la que viene por defecto) la montamos en “/sdcard/Medios” (por ejemplo), estaremos montando el recurso dentro de la propia SD (casi todos los Androides montan la SD en dicha ruta). Eso quiere decir que una vez montada la unidad (si tenemos conexión a la red claro) el sistema escanea de nuevo los medios en busca de nuevo contenido multimedia, escaneará también y tendrá en cuenta TODO el contenido de nuestro recurso compartido

    Ahora bien. Aquí aparece un pequeño problema que si no se sabe reconocer a más de uno le puede dar problemas y dolor de cabeza, así que mejor explicarlo. En España tenemos acentos, eñes y otros caracteres que en muchos países no existen. ¿Que sucede? Windows usa el estandar UTF-16  para la codificación de caracteres en el sistema de archivos, pero CIFS no tiene por qué haber sido compilado para tal. Si CIFS no soporta al menos UTF-8, todos los recursos de red que contengan por ejemplo acentos o caracteres latinos, no serán leídos correctamente, y además producirán un fallo que impedirá el correcto escaneo de los medios. Esto tampoco tiene mayor problema, tan solo hay que tener en cuenta que hay que cargar el módulo nls_utf8.ko en el sistema y especificar en las opciones de CIFS que se use la codificaicón UTF8. Lo primero se hace dentro de los ajustes generales de CIFS, donde pone: “Path to cifs.ko”. De echo, cuando configuramos CIFS con CIFS manager, si tenemso el módulo CIFS.ko en otra ubicación lo tendremos que especificar ahí. Tan solo hay que añadir el módulo especificado, por ejemplo: “/system/lib/modules/cifs.ko:/system/lib/modules/nls_utf8.ko” y de este modo se cargarán ambos módulos. Una vez esto se realiza, en las opciones de nuestra carpeta montada (en CIFS manager) nos vamos a “Options”, especificamos que se use UTF8: “iocharset=utf8″

     

  5. ¿Como forzar la actualización de contenido multimedia?

    Es posible que el contenido no aparezca poco a poco en nuestra “biblioteca”, puesto que sería absurdo que nuestro dispositivo estuviese constantemente actualizándola. La mejor forma de forzarla sería con la aplicación SDrescan (en Market). Tan solo hay que abrirla y esperar que escanee. Evidentemente si hemos compartido un recurso de red con miles de canciones, tardará más en realizar la actualización completa. También si lo deseamos, podemos deshabilitar la actualización automática de medios con la aplicación “rescan media” y usar SDrescan solo cuando nosotros lo deseamos. Para gustos los colores. Si hacemos esto, ahora si comenzarán a ir apareciendo poco a poco todo lo que tengamos en la carpeta/unidad de nuestro recurso compartido.

     

  6. ¿Se puede reproducir la música o los vídeos o ver las fotos aunque estemos en la otra parte del mundo?

    Por supuesto, aunque para ello si tendremos que tener preparados antes una pequeña infraestructura. Personalmente recomiendo siempre cualquier tecnología o protocolo que no haya que instalar, si ya tenemos las herramientas para que vamos a buscar otras que cuestan incluso dinero, son más lentas y son peores. La respuesta más simple es VPN.

    Los accesos VPN nos permiten acceder a nuestros recursos de red local aun cuando estamos en la otra parte del planeta. El único pero es que tenemos que disponer de un router o programa o… que tenga creado un servidor VPN. Muchos routers actuales permiten servidores VPN de forma sencilla como por ejemplo PPTP, aunque muchos otros nos permiten escoger desde PPTP, L2TP, IPSec, OpenVPN, Cisco VPN… para poder tener una infraestructura así que funcione bien también haría falta tener una IP estática o un servicio de DDNS en el router, que nos permita conocer siempre y en cada momento la dirección de nuestra red. Con estas dos herramientas, tan solo tendríamos que crear en nuestro Android la conexión VPN especificando el tipo de protocolo, usuario, contraseña… y ya está. Una vez todo preparado, bastaría tan solo con activar cuando fuese deseado la conexión VPN, montar en ese momento el recurso compartido y a disfrutar. Al conectarnos por VPN, tendremos acceso a los recursos de nuestra red, incluido por tanto las carpetas/unidades compartidos por nuestros equipos o directamente por el router/switch.

    Parece que no explico paso a paso como hacerlo, pero es que cada router es diferente, y configurar la conexión VPN en Android es tan sencillo como ir a conexiones inalámbricas, conexionese VPN y crear la que deseemos con los datos requeridos, no tiene pérdida. (La llave que aparece en la siguiente imagen significa que se está conectado a una red por VPN)

 

Ni que decir tiene, que con las conexiones WIFI actuales es posible no solo hacer en Streaming música, sino vídeos hasta a un buen y considerable bitrate, más que suficiente para ver lo que sea en nuestro dispositivo