Esta transferencia de archivos no usa internet para nada (decimen)

BBetter Stack
Computing/SoftwareConsumer ElectronicsInternet Technology

Transcript

00:00:00Aquí va una pregunta. ¿Cómo se le envía un archivo a alguien sin usar una red y sin usar ningún
00:00:05dispositivo físico como memorias USB? Bueno, la respuesta es la transferencia óptica de archivos. Un desarrollador llamado Evan
00:00:13Crawley acaba de crear una herramienta llamada Deciman, capaz de enviar un archivo de un dispositivo a
00:00:19otro simplemente parpadeando códigos QR y leyéndolos de vuelta. Es una técnica de transferencia de archivos genial
00:00:26y utiliza tácticas de ingeniería bastante ingeniosas. Así que en el video de hoy vamos a echar un vistazo
00:00:31a Deciman, veremos cómo funciona y lo probaremos en diferentes escenarios para comprobar cuán potente es en realidad
00:00:37la transferencia óptica de archivos. Va a ser muy divertido, así que vamos a adentrarnos en ello.
00:00:46Así es como funciona Deciman. Un dispositivo muestra una secuencia de fotogramas parecidos a códigos QR en su pantalla
00:00:53y otro dispositivo apunta con una cámara hacia ella y los decodifica de vuelta en un archivo. Así que no hay ninguna pila de red
00:01:00involucrada. Por lo tanto, si alguna vez necesitas intercambiar un archivo con un dispositivo aislado, esta es la única manera
00:01:06de hacerlo sin conectar físicamente ningún dispositivo externo como unidades USB. Y la idea es que
00:01:12codifiques tu archivo como una secuencia de códigos QR, los muestres en pantalla uno tras otro y hagas que una cámara
00:01:19en el otro extremo capture y decodifique cada fotograma. Ahora bien, eso puede sonar simple, pero la complicación surge
00:01:26del hecho de que las cámaras en realidad no capturan instantáneamente y las pantallas no se actualizan
00:01:32instantáneamente. Así que estás poniendo a competir dos piezas de hardware diferentes, y si se desincronizan,
00:01:38los fotogramas se corrompen o se pierden por completo. Pero la respuesta de Deciman a este problema es un método llamado codificación fountain.
00:01:46En lugar de enviar el fotograma uno, dos y tres, y esperar que todos y cada uno lleguen,
00:01:53genera un flujo prácticamente ilimitado de fotogramas codificados donde cada fotograma es una mezcla matemática
00:02:00de partes del archivo original en lugar de un fragmento específico de este. Eso significa que ningún fotograma es irreemplazable.
00:02:07El receptor no necesita específicamente el fotograma número 47, solo necesita suficientes fotogramas, los que sea que lleguen.
00:02:14Y si te pierdes la mitad de ellos, no importa. Sigue transmitiendo hasta que el receptor haya recopilado
00:02:22suficientes. Pero este enfoque no es ni mucho menos una solución mágica. Con este método, hay un límite máximo para la cantidad de datos
00:02:29que podemos transferir. Por defecto, el emisor de Deciman empuja 2953 bytes por fotograma a 60 fotogramas por segundo.
00:02:37Si haces los cálculos, obtienes un límite teórico de aproximadamente 177 kilobytes por segundo.
00:02:44Ten en cuenta los gastos generales de la codificación fountain, ya que algunos de esos fotogramas mezclados son esencialmente redundantes por diseño.
00:02:51Y con lo que te quedas es con el número que realmente afirma el archivo Léeme de Deciman.
00:02:56Alcanza un pico de alrededor de 128 kilobytes por segundo cuando se mide de teléfono a teléfono.
00:03:02Y la razón por la que usa fragmentos de 2953 bytes específicamente es porque corresponde a la versión 40 de códigos QR,
00:03:11el tamaño de QR estándar más grande, una cuadrícula de 177 por 177 de módulos individuales empaquetados en un solo fotograma.
00:03:20Y ahí es donde aparece el verdadero compromiso. Si metes más datos en un fotograma, necesitas menos fotogramas
00:03:26en total para enviar el mismo archivo, lo que significa que cualquier cámara que lo esté leyendo de vuelta necesita más resolución,
00:03:33un pulso más firme y un enfoque más nítido para distinguir un módulo del siguiente.
00:03:38Así que todo el sistema es en realidad un acto de equilibrio entre tres variables.
00:03:42Cuántos fotogramas por segundo estás enviando, cuán denso es cada uno de esos fotogramas y qué tan buena es la cámara
00:03:49receptora para resolver esa densidad. Y Deciman viene con un equilibrio específico configurado por defecto,
00:03:57y está sintonizado para un escenario específico, el cual, como descubrí, no es el escenario en el que lo probé.
00:04:03Así que esta es mi configuración: la pantalla de una laptop como emisor, colocada a una distancia normal de un brazo,
00:04:09como realmente usarías esto en la práctica. Con esta configuración, mi transferencia selimitó a unos tres kilobytes por segundo.
00:04:16Aproximadamente del uno al dos por ciento de los fotogramas transmitidos se decodifican realmente. El resto se captura y se descarta.
00:04:23Ahora bien, hay tres cosas que juegan en nuestra contra aquí. El primer y mayor obstáculo es la discrepancia en la frecuencia de fotogramas.
00:04:30El emisor emite a 60 fotogramas por segundo, pero la cámara de mi teléfono captura a 30. No puedes muestrear 60 imágenes distintas
00:04:38con un sensor que solo capta 30. Y es peor que simplemente perderse la mitad de ellas, porque la ventana de exposición de cada
00:04:45fotograma capturado abarca dos códigos QR diferentes en la pantalla. Así que la cámara no se pierde un fotograma limpiamente; combina dos de ellos en algo que no se decodifica.
00:04:56Y en el archivo main.ts, incluso hay una nota que dice que iOS entregará silenciosamente 30 fotogramas por segundo, incluso cuando la aplicación le pida explícitamente 60 a la cámara.
00:05:07La cámara simplemente no te da lo que solicitaste, y el código ya aborda eso.
00:05:12Y un poco más abajo en el mismo archivo, hay un comentario que básicamente predice exactamente lo que me pasó en mi primer intento.
00:05:19Los valores predeterminados, que son 2953 bytes por fotograma a 60 fotogramas por segundo, están sintonizados específicamente para una demostración de teléfono a teléfono a corta distancia.
00:05:29Y se espera que esa misma combinación tenga dificultades en un monitor ordinario a la distancia de un brazo.
00:05:35En otras palabras, el proyecto me advirtió que esto pasaría. Simplemente no había bajado lo suficiente en el código para verlo.
00:05:41En el lado del emisor, un panel de laptop de 60 hercios tiene el mismo problema a la inversa. Y los píxeles LCD tardan mucho tiempo en hacer la transición completa de gris a gris.
00:05:51Y ese tiempo de establecimiento significa que el panel no ha llegado completamente a un código antes de que el siguiente comience a pintarse encima.
00:05:58Así que estás obteniendo artefactos de estela o ghosting. Y el segundo problema es la densidad del código frente a la resolución de la cámara.
00:06:042953 bytes es la versión 40 de QR, pero una decodificación confiable necesita aproximadamente de tres a cuatro píxeles de cámara por módulo, lo que da más de 600 píxeles de ancho en enfoque nítido solo para el código en sí.
00:06:20Y la pantalla de la laptop sostenida a la distancia de un brazo rara vez llena tanto el encuadre de la cámara de un teléfono, pero de teléfono a teléfono a corta distancia llena todo el visor fácilmente.
00:06:30Y el tercer problema es el brillo y el contraste. Es un problema secundario, pero ayuda si el binarizador del receptor procesa la imagen limpiamente, aunque aun así no puede solucionar una discrepancia de fotogramas o un código demasiado pequeño.
00:06:44Así que ahora intentemos hacer la misma transferencia, pero esta vez de un teléfono a otro teléfono.
00:06:50Así que lo único que cambia es el emisor. Es una pantalla OLED pequeña y brillante sostenida de cerca, que llena todo el encuadre del teléfono receptor.
00:06:58Ahora la cámara realmente puede alcanzar un valor más cercano a su frecuencia de fotogramas real.
00:07:02El código llena el encuadre en alta resolución y no hay estela de LCD con la que lidiar.
00:07:07Este es el escenario bajo el cual se midió realmente el número de 128 kilobytes por segundo en el archivo Léeme.
00:07:14También hay un detalle pequeño pero verdaderamente útil en el código del receptor.
00:07:18Informa los FPS de captura y los FPS de decodificación por separado. La captura nos dice lo que la cámara está viendo físicamente.
00:07:26La decodificación te dice cuánto de eso es realmente utilizable.
00:07:30Cuando esos dos números se distancian el uno del otro, es decir, la captura se mantiene saludable mientras la decodificación se desploma,
00:07:35estás ante una discrepancia entre cuán densos son los fotogramas y lo que la cámara realmente puede resolver a esa distancia.
00:07:42Así que si tu caso de uso real es de laptop a teléfono, la solución es reequilibrar esas tres variables del lado del emisor.
00:07:50Debes reducir los bytes por fotograma a 1465, lo que corresponde a una versión de QR más gruesa con módulos más grandes y tolerantes.
00:07:59Y luego reducir los FPS de transmisión a 24, deliberadamente por debajo del límite de 30 FPS de la cámara.
00:08:07De modo que los fotogramas se muestren limpiamente uno por uno en lugar de fundirse entre sí.
00:08:12Y como puedes ver, reducir estos números genera un rendimiento mucho mayor.
00:08:16Esto solo te muestra que la transferencia óptica de archivos no es una solución universal.
00:08:21Tienes que ajustarla manualmente para cada caso de uso dependiendo del hardware que estés usando.
00:08:26Así que ahí lo tienen, amigos.
00:08:27Eso es Deciman en pocas palabras.
00:08:29En general, este fue un proyecto verdaderamente divertido para explorar.
00:08:32La transferencia óptica de archivos es una técnica bastante genial.
00:08:36Y ver el concepto de codificación fountain aplicado en un escenario de caso real aquí fue realmente interesante de presenciar.
00:08:44Y mientras exploraba este proyecto, también pensaba, ¿dónde usarías realmente este tipo de herramienta?
00:08:49Supongo que la respuesta obvia serían las transferencias aisladas donde deliberadamente no quieres ninguna conexión de red en absoluto.
00:08:57O quizás dispositivos que ni siquiera tienen Bluetooth o Wi-Fi, como hardware antiguo o sistemas embebidos.
00:09:04Es decir, en cualquier lugar donde una pantalla y una cámara sean las únicas dos cosas con las que puedas contar.
00:09:10¿Pero qué piensas de esta herramienta?
00:09:11¿Has usado herramientas de transferencia óptica antes?
00:09:14¿Ves alguna aplicación en la vida real para esto?
00:09:17Háznoslo saber en la sección de comentarios abajo.
00:09:19Y amigos, si les gustan este tipo de análisis técnicos, por favor háganmelo saber destrozando ese botón de me gusta debajo del video.
00:09:25Y tampoco olviden suscribirse a nuestro canal.
00:09:28Este ha sido Andrus de BetterStack y los veré en los próximos videos.
00:09:34Los veré en el próximo video.

Key Takeaway

Deciman transfiere archivos sin internet ni cables mediante códigos QR ópticos, alcanzando 128 kilobytes por segundo entre teléfonos inteligentes gracias a la codificación fountain.

Highlights

  • Deciman es una herramienta de transferencia óptica de archivos creada por Evan Crawley que transmite datos mediante códigos QR parpadeantes.

  • El límite teórico de transferencia de Deciman alcanza los 177 kilobytes por segundo con una configuración por defecto de 2953 bytes por fotograma a 60 fotogramas por segundo.

  • Las mediciones de teléfono a teléfono registran un pico real de aproximadamente 128 kilobytes por segundo.

  • La codificación fountain genera un flujo ilimitado de fotogramas que combinan partes matemáticas del archivo original, lo que evita pérdidas de datos por fotogramas corruptos.

  • Las transferencias de laptop a teléfono limitan el rendimiento a tres kilobytes por segundo debido a discrepancias en la frecuencia de fotogramas y tiempos de respuesta de los paneles LCD.

  • La solución para optimizar la transferencia desde una laptop consiste en reducir los bytes por fotograma a 1465 y la velocidad a 24 fotogramas por segundo.

Timeline

Funcionamiento y límites teóricos de Deciman

  • Evan Crawley desarrolla Deciman para enviar archivos mediante secuencias de códigos QR ópticos.
  • La codificación fountain elimina la necesidad de recibir fotogramas específicos al enviar mezclas matemáticas del archivo.
  • El sistema alcanza un límite teórico de 177 kilobytes por segundo con fotogramas de 2953 bytes a 60 fotogramas por segundo.

La transferencia óptica opera sin pilas de red ni dispositivos físicos como memorias USB. El uso de la versión 40 de códigos QR permite empaquetar 2953 bytes en una cuadrícula de 177 por 177 módulos. La codificación fountain resuelve la pérdida de paquetes al hacer que cualquier fotograma recibido contribuya a la reconstrucción total del archivo original.

Obstáculos en transferencias de laptop a teléfono

  • Las pruebas de laptop a teléfono reducen la velocidad real a tres kilobytes por segundo.
  • La discrepancia entre los 60 fotogramas por segundo del emisor y los 30 fotogramas por segundo de la cámara genera corrupción de datos.
  • Los píxeles LCD de las laptops provocan efectos de estela o ghosting que dificultan la lectura limpia de los códigos.

La combinación de pantallas de laptop con cámaras de teléfonos expone limitaciones de hardware. Las ventanas de exposición capturan dos códigos QR simultáneamente. Además, el tiempo de transición de los paneles LCD impide que la imagen alcance el contraste necesario antes de pintar el siguiente fotograma.

Optimización y escenarios de uso ideal

  • Las transferencias de teléfono a teléfono alcanzan el rendimiento máximo de 128 kilobytes por segundo.
  • La reducción a 1465 bytes por fotograma y 24 fotogramas por segundo soluciona los problemas de lectura desde pantallas de laptop.
  • La herramienta resulta útil en entornos totalmente aislados de redes, Bluetooth o Wi-Fi.

Las pantallas OLED pequeñas y brillantes de los teléfonos llenan el encuadre de la cámara receptora sin problemas de resolución. Ajustar manualmente las variables del emisor adapta el rendimiento al hardware disponible. El sistema funciona en sistemas embebidos y hardware antiguo donde solo existen una pantalla y una cámara.

Community Posts

View all posts