Fork me on GitHub

Posts in tag `Video'

Filmstrip - html5 video preview

November 3, 2013

En OpCode estamos haciendo Filmstrip, un widget para previsualizar videos en html5. Para mejor performance se utilizan videos convertidos a 320x180px, a 1 frame/s y sin audio. Esto se logra con ffmpeg:

ffmpeg -i original_video.mkv -s 320x180 \
       -vcodec libx264 -an -r 1 filmstrip_video.mp4

El siguiente video deja ver el funcionamiento principal de filmstrip: mostrar frames de un video para tener una panomámica del mismo.

El ejemplo del video podés probarlo online acá.

En este otro puede verse otra de las funciones de filmstrip: capturar un frame a un segundo determinado y devolver una imagen al tamaño real del video.

Aquí puede verse un ejemplo básico de uso

#html
<canvas id="filmstrip"></canvas>

#script
var model = {src: 'sita.ogv'};

var fs = new Filmstrip(model, {
    width: 120,
    height: 600,
    bgColor: '#333',
    drawBackground: true,
    drawHoles: true,
    holesColor: '#222',
    holesDispersion: .7,
    bandsPadding: 20,
    autoOrientation: true,
    strechOnResize: true,
});

fs.on('draw:finished', function() {
    this.drawCanvas($('#filmstrip'));
 });

Este proyecto es parte del proyecto Malbec Broadcast desarrollado por la Cooperativa OpCode y como todos sus proyectos tiene licencia AGPL v3.

El código en github: https://github.com/inaes-tic/filmstrip

Javascript Software Libre Trabajos Video html5 opcode

Lector de RSS con Arduino y Raspberry Pi

July 30, 2013

Luego de un par de meses de darle vueltas finalmente llegué a una versión usable de este lector de RSS. El display del lector está hecho con un Arduino UNO y una matriz de LEDs A-5570E que está soldada sobre un proto shield. Los mensajes los recibe por serial. Esto se hace desde la Raspberry Pi, que tiene un servidor hecho con Tornado y el cual tiene una interfaz web desde la que cualquier usuario puede encolar sus propios mensajes y ver los mensajes del resto mediante WebSockets. Esto es, mientras no haya mensajes de usuarios se lee algún feed. Así que el display siempre está mostrando algo.

Arduino and Raspberry Pi

El servidor está permanentemente leyendo el serial. Si el display le envía un 1 significa que está listo para recibir un nuevo mensaje. El servidor revisa la cola de mensajes de usuario primero y la cola de RSS después así que es posible intercalar un mensaje en cualquier momento.

Aquí los programas que se ejecutan de uno y otro lado: sketch.ino y server.py. Aquí la interfaz web con WebSockets: publisher.html

El display

La matriz de LEDs usa una técnica llamada clarlieplexing de la cual ya escribí algo acá y acá. El diagrama de conexiones es el siguiente

Read more »

Arduino Python Raspberry Trabajos Video

Mi primer robot con Arduino

July 23, 2013

Continuando el post anterior acá van mis avances con el robotito. Finalmente pude terminar la primera versión que simplemente hace lo siguiente:

  • Toma la distancia al objeto delante
  • Si la distancia es > 40 cm se mueve hacia adelante
  • Sino
    • Al azar puede retroceder o no una distancia corta también al azar
    • Gira hacia algún lado al azar
Arduino simple robot

Acá se lo puede ver funcionando.

Me divertí bastante con el sensor de proximidad porque devuelve el tiempo en microsegundos que tarda en regresar el sonido emitido, entonces para averiguar la distancia a la que está el objeto que produjo el rebote tenés que tener en cuenta la velocidad del sonido. Algo así:

La velocidad del sonido (en el aire y a 20°C) es aprox 343,5 m/s. Si convertimos esto en cm/ųs tenemos:

c = 343.5 * 100 / 1000000 = 0.03435 cm/ųs

Ahora calcular la distancia es fácil. Supongamos que el sensor devuelve 750ų:

d = (750ųs / 2) * 0.03435 cm/ųs = 12.8 cm

La función que lee el sensor quedaría así

long get_distance()
{
    long duration, distance;
    digitalWrite(TRIG_PIN, HIGH);
    delayMicroseconds(2000);
    digitalWrite(TRIG_PIN, LOW);
    duration = pulseIn(ECHO_PIN, HIGH);
    distance = (duration/2) * 0.03435;
    return distance;
}

El código completo está acá.

Read more »

Arduino Trabajos Video

Relé por control remoto con Arduino

July 22, 2013

Me compré un relé (acá) porque hacía tiempo que tenía ganas de probar prender algo a 220 desde la compu. Es muy fácil de usar y el programa en Arduino es muy sencillo, basta con poner un pin en HIGH o LOW. Para hacerlo más divertido le agregué un control remoto que compré en dealextreme.

Arduino relay IR controller

El código es simple, lo principal es

if (results.value == 0xffa25d) { // On/Off button
    actual_state = (actual_state == LOW) ? HIGH : LOW;
    digitalWrite(relay_pin, actual_state);
}

Arduino Trabajos Video

Mi versión del Simon

February 27, 2013

Lo hice con Arduino UNO, montando los componentes sobre un proto shield. Es uno de mis primeros proyectos con Arduino :)

Simon hecho con Arduino

El código está en Github. Debajo hay un video que lo muestra funcionando.

Read more »

Arduino Juegos Trabajos Video

Charlieplexing 2

February 3, 2013

Siguiendo con la técnica del Charlieplexing, soldé un par de leds y acá está una mini matriz de leds de 3x3 que se maneja con sólo 6 pines.

Led matrix 3x3 charlieplexing

Para dibujar la matriz completa tenés que recorrer una a una las filas y por cada columna poner en LOW los leds que quieras prender y en HIGH los que quieras apagar. Finalmente ponés unos microsegundos en HIGH la fila y luego la apagás para dejar todo listo para el próximo barrido.

const int rows[3] = {10, 9, 8};
const int cols[3] = {7, 6, 5};

void draw(byte *c) {
    int pos = 0;
    for (int row = 0; row < 3; row++) {
        for (int col = 0; col < 3; col++) {
            digitalWrite(cols[col], (c[pos++] == 1 ? LOW: HIGH));
        }
        digitalWrite(rows[row], HIGH);
        delayMicroseconds(500);
        digitalWrite(rows[row], LOW);
    }
}

byte matrix[9] = {1, 0, 1, 0, 1, 0, 1, 0, 1};
draw(matrix);

El código completo aquí.

Arduino Trabajos Video

Multiplexor con Arduino

January 18, 2013

Este es otro circuito que armé para aprender Arduino y sirve para controlar leds mediante un multiplexor. Un multiplexor te permite manejar varios leds con pocos pines. Con el 4051 manejás 8 leds con sólo 3 pines (pensá en binario). El circuito que ves en la foto usa 5 pines del Arduino: 3 (directos al 4051) para seleccionar el led, 1 (cable rojo) para darle corriente al led seleccionado y 1 (cable azul) para tierra. Los cables verdes son las 8 salidas hacia cada led.

Multiplexor con Arduino

Es bastante divertido programarlo porque sólo podés prender un led a la vez, entonces para simular que encendés varios al mismo tiempo tenés que hacer barridos rápidos. Acá dejo el código. Más abajo está el video.

Read more »

Arduino Trabajos Video

← Older | Newer