VERSION ACTUAL :

Inicio de sesión

Raulito el Friki

Raulito El Friki

COMENTARIOS

EN LINEA

Hay actualmente 0 usuarios conectados.

NUEVOS

  • Gilberto Morales
  • mr.popo
  • marcef
  • Ing Edward
  • Miguelon_85

Agregador de canales de noticias

LiveStream de tu webcam con AngularJS

Xenode - Dom, 07/06/2014 - 14:06
Preámbulo

El otro día fui al banco a activar la banca electrónica para la nueva cuenta que recientemente abrí. Cuando uno hace eso en el banco en el que tengo mi cuenta actualmente (Banorte) se le provee con un token ya sea físico o en el celular (smartphone app) para tener un método de autenticación a 2 pasos y así asegurar (reforzar la seguridad de) el acceso electrónico a las cuentas y su manejo.

El único beneficio real (al menos a mi manera de ver) del token en el celular vs el físico es la posibilidad de tener acceso a tu banca electrónica donde sea mientras traigas el móvil contigo. Sin embargo usar el token celular conlleva uno que otro problema de los que no hablaré para no alargar esto... El punto es que terminé pidiendo un token físico para la nueva cuenta y para tener el beneficio de la obicuidad del token celular en mi token físico sin moverlo del escritorio se me ocurrió montar una tokenCam que pudiera revisar desde donde sea cuando así lo necesitara. Hay varias maneras de hacer esto, (transmitir una webcam en vivo de forma semi-privada) de las más conocidas:

El método con VLC es la elección por excelencia de muchos, pero requiere una computadora razonablemente potente con un sistema operativo razonablemente nuevo (Lo que significa que mi servidor CentOS 6 de 32 bits desde donde quiero servir la LiveCam queda descartado por ejemplo).

El método con FFmpeg es más amigable con el hardware usado, pero al necesitar una cantidad fija de banda ancha por cliente, termina consumiendo todo el Internet disponible con pocas conexiones a la LiveCam rápidamente, no es escalable ni rentable por lo tanto.

El método con HTML5 Websockets funciona muy bien en localhost, pero al exponerlo al Internet, el consumo de banda ancha vuelve a ser un problema haciendo que haya una mala experiencia de uso generalmente al tratar de ver el streaming desde un cliente externo.

El software especializado para cámaras IP (como podrían ser motion o bien, zoneminder por ejemplo) resultó ser por demás complejo de configurar y abarcaba muchas más cosas aparte del objetivo que quería cumplir, además de proveer de resultados malos (pésima calidad de streaming, con bastante lag encima).

Intentar con WebRTC era otra opción, pero implementar algo con dicha tecnología quedó fuera de mis opciones al ver que (al menos de momento) sigue muy verde del lado de los móviles. En mi caso específico es importante poder acceder la tokenCam desde mi iPhone sin mayor problema.

Entonces, ¿Cómo haremos nuestro streaming?

Para empezar, necesito que todos estemos en la misma página: Hacer un Livestreaming directo es "carísimo" (hablando de banda ancha e incluso recursos de hardware) es por esto que las plataformas y/o servicios que ofrecen esta funcionalidad delegan la carga de la transcodificación y el streaming como tal por medio de plugins propietarios del lado del cliente (Flash, Silverlight, Complemento de Google Hangouts) evitando gastar demás en recursos propios y/o del servidor. Para mi implementación no quise depender de un plugin externo con la finalidad de asegurar la máxima compatibilidad multiplataforma del lado de los clientes; Sin embargo los problemas de recursos seguían siendo los mismos: Para que se hagan una idea, un streaming de baja resolución (VGA) a 320Kbps (por ejemplo) representa un gasto de banda ancha de más o menos 3GB diarios en transferencia sin que nadie lo vea. Cada 24 horas de alguien viéndolo (incluso si es únicamente un solo cliente atendiendo al streaming sin parar) añade otros 3GB de banda ancha en transferencia a los previos tres ¡Demasiado! La solución con la que ataqué este problema fue muy sencilla y creo que a más de un lector le va a parecer incluso gracioso... Continúa leyendo para conocer los detalles.

NOTA: Para este tutorial usaré Fedora Linux como sistema operativo de referencia, pero estas mismas instrucciones aplican para otras distros linux e incluso otras plataformas (como Windows u OS X) mientras instales los programas/dependencias utilizados según el método correcto para tu sistema con algunas pequeñas modificaciones en los pasos citados según corresponda.

Primero: Instalar dependencias

1. sudo yum -y install python ffmpeg git git-core

Segundo: El servidor y la webapp

Ahora necesitarás descargar la aplicación de AjaxCam (que yo hice) desde Github con la finalidad de ahorrarte varios pasos extra:

1. cd ~
2. git clone https://github.com/Jmlevick/ajaxcam.git
3. cd ajaxcam
4. python pythonserverGzip.py 9229

Esto debería iniciar la interfaz web de nuestra livecam en el puerto 9229 de nuestro localhost, ahora sólo nos falta el streaming para transmitir.

Tercero: Comenzar Streaming

¿Recuerdan la solución de la que les hablaba? Se trata de lo siguiente: Tomaremos una fotografía de 1 a 30 fotogramas según nuestro setup (sí, por raro que esto suene) cada segundo con nuestra cámara web vía ffmpeg y la imagen resultante de la captura será guardada a 1 solo contenedor JPEG que refrescaremos en tiempo real sobreescribiéndolo. Luego vía ajax (gracias a AngularJS en este caso) lo que hace la interfaz que descargaste y estás corriendo en tu localhost en estos momentos es refrescar la imagen en vivo cada segundo también, dando la ilusión de estar emitiendo un "feed de video en vivo" o bien, Livefeed. Lo mejor de este enfoque es que no sólo es "amigable con el hardware" al no consumir demasiados recursos sino que también es amistoso con tu banda ancha, al no consumirla a menos que un cliente accese al streaming per sé, en cuyo caso consumirá (según el peso de tus imágenes) alrededor de 3+ veces menos (gracias al setup montado y al servidor Python con compresión Gzip que utilizaremos) que un livefeed real (con calidad equivalente) asumiendo 24 horas continuas de estar enganchado al stream. La única "pega" que podría encontrarle a este enfoque es que tiene un poco de lag sí o sí, pero a final de cuentas todos los métodos de streaming directo lo tienen en mayor o menor cantidad. En cuanto al audio, si es algo que te interesa no es difícil de implementar y si lo necesitas estás más que invitado a implementarlo y hacer una pull request al proyecto en Github de la AjaxCam (yo no lo he implementado porque no lo necesito en mi setup para la tokenCam).

Una vez explicado esto, prosigamos:

Posiciona tu cámara donde la vayas a dejar haciendo streaming. Puedes "calibrar" la posición con cualquier app de cámara que tengas a la mano, (en Linux está Cheese por ejemplo) y después correremos los siguientes comandos en una consola:

1. cd ~/ajaxcam
2. ffmpeg -y -f v4l2 -s 640x480 -i /dev/video0 -update 1 -r 30 -qscale:v 2 output.jpeg
Del segundo comando lo que nos importa en parámetros es lo siguiente:

  • -s 640x480: De qué tamaño queremos las imágenes
  • -i /dev/video0: El dispositivo de captura. En Linux todas las webcam se "localizan" como /dev/videoX si sólo tienes una conectada y/o disponible, es la 0 (como en mi caso), la segunda sería la 1 y así.
  • -r 30: Número de fotogramas por segundo. Si el lag es un problema, déjalo en un rango de los 15 a los 30 para evitar lo más posible la latencia (o intenta incrementarlo incluso) Si la disponibilidad se ve afectada (que la imagen desaparezca de pronto y/o muy seguido) reduce este número. Puedes dejarlo hasta en 1 para obtener la mayor disponibilidad a costa de unos segundos extra de latencia.  

NOTA: El comando de ffmpeg para otras plataformas puede variar un poco, te recomiendo pedir asesoría en sus listas de correo o en sus foros para hallar el comando correcto de captura según tu caso... Los parámetros sin embargo, deberían ser los mismos en todos los casos.

En mi caso tengo una (algo antigua) cámara VGA que usaré para mi setup, so el comando que se ve arriba es perfecto para mi situación específica (además cada segundo cuenta cuando hablamos de un token, estos parámetros garantizan también poco lag). Ahora nos vamos a http://lvh.me:9229 o bien http://localhost:9229 y deberíamos ver nuestra LiveCam activa en la interfaz web. Si esto no es así, trata cortando el streaming de ffmpeg y reiniciándolo o bien, cambiando el parámetro de los FPS (de 30 a 15 por ejemplo) y volviéndolo a iniciar.

Finalizando: ¡A transmitir!

Todo esto está muy bien, pero ¿cómo podemos (por ejemplo) acceder este live feed desde nuestro móvil o bien darle acceso a otros? Sencillo. Utilizaremos ngrok (clic en el enlace para conocer más y hacer el setup si no lo tienes en tu sistema); Iniciar un servidor accesible al público para nuestra LiveCam con esta herramienta es tan sencillo como correr:

ngrok 9229

Eso nos soltará una URL en la consola del tipo:

http://234ab123.ngrok.com

Que podemos utilizar/visitar desde cualquier cliente externo para revisar nuestra LiveCam cuando queramos. Si realmente piensas servir esta LiveCam, no olvides añadir al inicio del sistema los siguientes comandos (que deben correr como tu usuario desde tu Home); Puedes establecer este comportamiento de muchas maneras: con autostart (aplicaciones al inicio del escritorio) un cronjob o bien, desde tu rc.local:

1. cd ajaxcam
2. ffmpeg -y -f v4l2 -s 640x480 -i /dev/video0 -update 1 -r 30 -qscale:v 2 output.jpeg3. python pythonserverGzip.py 9229
4. ngrok start mycam

NOTA: Como explicamos en nuestro tutorial de Ngrok, es posible personalizar la URL de nuestro túnel para evitar que ésta cambie aleatoriamente con el paso de los días, en este caso estoy iniciando el túnel mycam previamente establecido en la configuración de Ngrok directamente.

Y pues bueno, esto es todo... Si te gustó el post, no olvides compartirlo, darle like, recomendar este blog y demás; Cabe destacar que esto es sólo una implementación básica y cada quien puede "extenderla" según sus necesidades (control de acceso para mayor seguridad por ejemplo). Eeen fin, eso ya depende de cada uno.

Nos leemos en los comentarios.

Uncharted, la saga de los tesoros perdidos.

Tatica - Dom, 07/06/2014 - 08:23

Cuando compramos el PS3, vino con una serie de juegos a los que adicionamos unos cuantos para tener un stock de juegos que durara al menos uno o dos años. Entre los juegos que trajo el Play, estaba Uncharted 1 y 2, así que compramos el 3 también.

Ya que soy tan adicta a los video juegos, el trato era no abrir los paquetes hasta que terminara el juego anterior… y así he hecho. Luego de terminar los 3 juegos de Uncharted puedo decir sin que me quede nada por dentro… que juegazo!!!

Uncharted relata la historia de Nathan Drake, un caza tesoros con un humor muy a lo Mal Reynolds (Firefly) con una agilidad para trepar cosas tan grande que spiderman parece un niño en pañales. Cada uno de los 3 juegos va relatando la historia de Nathan y sus amigos, incluyendo traiciones, golpizas, metralletas y paisajes increíbles.

drake

Lo que más me gustó de este juego fue la evolución en el manejo del personaje y los escenarios. Si los juegas uno tras otro tal como hice yo, es como jugar el mismo juego, pero mejor. En el primer juego tienes un excelente rango de movimiento, unos escenarios increíbles y una trama histórica genial; pero en el segundo ya te dan mas libertad de movimientos en combate, mejores armas y escenarios aun mejores… y ni hablemos del tercero, donde ahora la cámara y el escenario cambian dependiendo de tu ánimo y estado físico. En pocas palabras, en el primero aprendes a gatear, en el segundo a caminar y en el tercero a correr!

Personalmente me gustan los juegos con historia, donde hay tesoros o elementos que buscar y donde puedes tomar decisiones que influyan en el final del juego; mas que todo por mi adicción. De esta forma, puedo *aceptar* que un juego ha terminado… esta es la principal razón por la cual no juego ningún MMORPG… nunca lo soltaría.

Si eres de aquellos que sueñan con Lara Croft e Indiana Jones, este es definitivamente un juego para ti. Ahora tendré que ahorrar por años de nuevo para comprar un PS4 porque el 4to dela saga solo vendrá para esa consola :(

En fin, si tienen juegos que ya terminaron pueden prestarlos para jugarlos y hacer un review. El próximo que se viene es de Beyond: Two Souls, gracias a Kamihacker :)

flattr this!

#TvFriday : Halt and Catch Fire

Tatica - Vie, 07/04/2014 - 10:21

Si, como la instrucción. Esta es una serie nueva de AMC (los mismos de The Walking Dead y Breaking Bad) que explora los primeros pasos de la revolución de las computadoras personales. La historia se ubica en Texas, en 1983; y relata la historia de Joe McMillan, un ex-empleado de IBM que se une a Cardiff luego de algún altercado extraño (que desconozco porque aun estoy viendo la serie), quien se une a Gordon Clark, un especialista en hardware y Cameron Howe, una programadora un poco disfuncional. Este equipo comenzará la carrera tecnológica por intentar crear la primera computadora portatil que pese menos de 10 libras (4.5k).

Para quienes estamos cerca de la tecnología desde hace bastante tiempo, Halt and Catch Fire será un grato recordatorio de cuando todo se tenía que hacer a mano, donde conectar algo era más estresante que quinceañera haciéndose una prueba de embarazo y donde todos tenían sueños de gloria por convertirse en los primeros en hacer una computadora verdaderamente portatil.

hcf

Las actuaciones son fantásticas, así como la maquinaria utilizada. Es volver en el tiempo. Aunque todos están pegados con los tres personajes principales, a mi quien me llama más la atención es Dona Clark, la típica ama de casa… pero con un twist tecnológico; no solo es capaz de hacerse cargo de las niñas y la casa, sino también hacer locuras tecnológicas. En fin, llena de personajes intrigantes, todo un placer para los geeks.

Esperemos que continúe así y no termine convirtiéndose en una serie abandonada por falta de trama. Como dice su slogan “la batalla por el Ctrl ha comenzado”

flattr this!

Problemas, soluciones, y la insoportable levedad del ego

Jose Salgado - Jue, 07/03/2014 - 17:05
Nos damos demasiada importancia

Cuando ves la cantidad de empresas que existen, hay una afirmación que me ronda siempre la cabeza: es más difícil encontrar una solución a problemas que nadie se había planteado que encontrar una solución a un problema complicado.

Es fácil entender el razonamiento, mientras que con un problema complicado todos somos conscientes de su existencia, de los parámetros y de cualquier dato que no ayuda a delimitar su tamaño y como medir la eficacia de la solución, para problemas que no existen, nadie se había planteado ni siquiera diseñar una solución.

Está claro que cuando alguien aparece dando una solución a un problema del cual no éramos conscientes, todos nos volvemos locos y definimos al autor como visionario, gurú, experto, y cualquier adjetivo que sirva para elevar al interfecto a un pebetero rebosante de perfumes, flores y alguna que otra virgen vestal. Y digo pebetero porque estas mismas personas acaban por encender la mecha con la que en vez de convertirse en un aviso para navegantes, se convierte en el faro que guía la siguientes generaciones.

Son perfiles que inglés tienen el nombre de one hit wonder. Una vez plantearon una solución, y presos de su propio ego, se lanzaron a buscar la fama en vez de volcar su capacidad en facilitar la vida al resto de sus conciudadanos.

El ego es muy mal consejero, y si a esto le sumamos el ansia de los medios por tener profetas a los que recurrir, esta mezcla se convierte en una cocktel explosivo donde se sirve la misma medicin para un apendicitis que para un linfoma de células de mantos. Estos antiguos héroes se dedican a exponer de forma persistente su falta de coherencia de forma constante con el único fin de alimentar su ego y la vergüenza ajena de todo aquel que sea capaz de tener un pensamiento crítico.

Quizás tengan la voz de la experiencia, y como tal deberían de ser consultados, no como nuevos líderes del mañana, no como representantes de la sociedad, y por supuesto, nunca como garantes de la verdad y últimos profetas de nuestro señor todopoderoso -ya sea un señor metafísico, político o mediático-

Como es poco probable que ellos, sedientos de viejas glorias y los propios medios, escasos de profetas con el que vender el pan que les faltará mañana, accedan a poner un poco de cordura en esta insensatez en la que nos quieren arrastrar, somos nosotros los que hemos de realizar un esfuerzo adicional. Hemos de seguir usando nuestra capacidad crítica para poder diferenciar antiguos dioses de los nuevos, verdades de creencias, y medios de panfletos.

Película: Much Ado About Nothing

Esto es un resumen del artículo Problemas, soluciones, y la insoportable levedad del ego escrito para Exelisis. Visita la web para más información y compártelo si crees que es interesante.

Por qué es importante la neutralidad de la red

eliasbrasa - Jue, 07/03/2014 - 10:58

Me he encontrado con un artículo muy interesante (y corto) ;)  sobre la neutralidad de la red en Bitelia. Os recomiendo que le echéis un ojo. También podéis echar un ojo al artículo sobre Neutralidad de la Red en Wikipedia, que no es muy largo tampoco y os pone al día de qué es todo esto.

¡¡Espero que os gusten!! ;) ;)

 


Los podcast vuelven!!! (pero necesitan tu ayuda)

Tatica - Jue, 07/03/2014 - 07:51

¿Te gustaban los podcast y ya no sabes donde encontrarlos? Es hora de que hablemospodcasts

Los Gimp100Podcast nacieron como un diario donde colocaba las cosas que iba aprendiendo. El primer podcast salió en Mayo del 2010 y me tomó 3 años hacer solo 36 podcast. Realizar video-tutoriales requiere planificación, edición y luego, publicarlos.

Los podcast pararon ya el hosting utilizado decidió que el contenido no era comercial, así que lo borró, dejando a los podcasts sin hogar. Este servicio daba una comisión por las visitas, con lo que se pagaba el hosting, se mantenía la web y el café para que mi cerebro siguiese activo.

Luego de un año de recolectar todos los videos perdidos y de tomar mucha más experiencia editando he decidido retomar los Podcast, pero más amplios y con su ayuda,así que dejenme hacerles una propuesta… ¿Que tal si me ayudan a hacer los podcast?

He colocado un formulario en la web donde pueden escribir sus ideas para los podcast. Pueden ser de GIMP, Inkscape, darktable o cualquier cosa, la idea será liberar un podcast semanal con su ayuda, que les parece? Solo hay un detalle… y como pagamos el café?

Con el servicio anterior no tenía que molestarlos con donaciones ya que las visitas se monetizaban … No eran millones, pero era lo suficiente para pagar el hosting y el dominio. Así que, tomando las ideas del crowfunding les propongo lo siguiente:

  • Patreon: Este es un servicio de suscripciones donde uds deciden que donar por video. Es a modo de propina, por lo que a diferencia de kickstarter, no hay que alcanzar una meta, solo colaborar. La url es la siguiente: patreon.com/tatica.
  • Hangouts: A veces queremos que nos expliquen algo mas detalladamente, y que mejor forma que una reunión virtual en vivo? Para quienes donen 35USD / 350Bsf se planificará un hangout privado de 2 horas.
  • Impresiones: Y porque hay fotos que merecen estar colgadas en una pared… para quienes hagan donaciones mayores a 100usd / 1000Bsf les enviaré una foto enmarcada! Pueden escoger cualquiera de mi galería o incluso enviarme una idea para tomar una foto inédita
  • Paypal y Flattr: En todos mis posts verán los iconos de Paypal y de Flattr, que son dos servicios de micro-donaciones. Solo den click y listo!

Lo importante es crear contenido y ayudar a quien crea dicho contenido. No con cantidades grandes, pero si lo suficiente para que el creador no tenga que preocuparse por menudeces y pueda dedicarse a crear contenido de calidad. Entonces… que opinan?! Les gusta la idea?

Si les gustó, hagan click en la sección de “Yo quiero un podcast” Y envienme un mensaje!

Los videos saldrán, tal como hoy todos los miércoles… porque es el día más atravesado de la semana y hay que animarlo con algo.

Es momento de crear, compartir y disfrutar. Es hora de que los podcast vuelvan! Ve el video!

flattr this!

Páginas

Suscribirse a Fedora-es sindicador