Contenido del curso
Soporte de cámaras en Traccar: cómo funciona el sistema de media
Traccar sí guarda fotos, video y audio enviados por los rastreadores. Te explico cómo funciona el sistema de media por dentro, qué protocolos lo implementan de verdad y dónde terminan los archivos.
Emmanuel Díaz Leal Hernández
IMPORTANT
Configurar video para Traccar. El servidor le dice a la cámara a dónde conectarse leyendo web.url y los puertos jt1078 / jimiphoto de tu traccar.xml. Si eso falta, no hay video en vivo ni fotos de alarma — y no aparece ningún error en el log. deja el XML listo aquí.
Orden de lectura de la serie: 1. cómo funciona el soporte de cámaras → 2. configurar el servidor → 3. qué cámara comprar
Una de las preguntas que más se repite en el foro y en los grupos de Traccar es si la plataforma "soporta cámaras". La respuesta corta es sí, pero no como te imaginas: Traccar no es un MDVR ni un servidor de video, es un servidor de rastreo que además sabe recibir y almacenar archivos multimedia que le envían ciertos dispositivos.
En este artículo te explico el mecanismo real, tal y como está implementado en el código del servidor, para que sepas exactamente qué esperar antes de comprar hardware.
Si lo que buscas es directamente la lista de qué modelos funcionan, está en cámaras compatibles con Traccar.
El sistema de media, en tres piezas
Traccar tiene un subsistema de multimedia genérico, independiente del protocolo. Son básicamente tres piezas:
1. El buffer del decodificador
Cuando un rastreador envía una foto, casi nunca lo hace en un solo paquete: la parte en fragmentos. Por eso la clase base de todos los decodificadores (BaseProtocolDecoder) expone métodos comunes:
newMediaBuffer(...)— crea un buffer para la conexión actualgetMediaBuffer()— recupera el buffer en curso para seguir acumulando fragmentoswriteMediaFile(...)— vuelca el buffer completo a disco
Importante: solo se mantiene un buffer de media por conexión. Si el dispositivo intenta dos transferencias simultáneas en la misma conexión, no va a terminar bien.
2. El gestor de archivos
MediaManager es quien escribe realmente en el disco. La estructura que genera es predecible:
{media.path}/{uniqueId}/{timestamp}.{extension}
Es decir, una subcarpeta por dispositivo, nombrada con su identificador único (el mismo IMEI o ID que registraste en Traccar), y dentro los archivos nombrados por marca de tiempo. La ruta se valida para evitar que un identificador malicioso escape de la carpeta base.
3. El atributo en la posición
Cuando el archivo se guarda, el decodificador escribe el nombre del archivo como un atributo de la posición. Los tres atributos que existen son:
| Atributo | Constante en el código | Contenido típico |
|---|---|---|
image | Position.KEY_IMAGE | foto JPG |
video | Position.KEY_VIDEO | clip de video |
audio | Position.KEY_AUDIO | grabación (por ejemplo AMR en relojes) |
Ojo con este detalle, porque confunde a mucha gente: el atributo guarda el nombre del archivo, no la URL completa. La ruta la reconstruye el cliente combinando el uniqueId del dispositivo con ese nombre.
Cómo se sirven los archivos
Traccar registra un servlet estático en /api/media/* apuntando a la carpeta configurada en media.path. La URL final tiene esta forma:
/api/media/{uniqueId}/{nombreDeArchivo}
No es una carpeta pública: delante hay un filtro (MediaFilter) que exige sesión válida y que además comprueba que el usuario tenga permiso sobre ese dispositivo concreto. Un usuario no puede ver las fotos de un dispositivo que no le pertenece simplemente adivinando el IMEI.
Un matiz de configuración que casi nadie menciona: no existe una clave media.enable. He visto reportes de usuarios poniendo media.enable=true en traccar.xml y preguntándose por qué no pasa nada. El servlet se registra si media.path tiene valor, y punto.
Qué protocolos lo implementan de verdad
Aquí es donde conviene ser honesto, porque el catálogo de Traccar tiene más de 270 protocolos y la inmensa mayoría no toca multimedia.
Revisando qué decodificadores usan realmente el sistema de media, la lista es corta:
- Teltonika — foto vía comando de cámara (Codec12)
- GT06 / Concox — solicitud de foto
- Jimi IoT (decodificador HTTP dedicado) — imagen y video, distinguidos por tipo MIME
- Dualcam — imagen JPG y video H.265
- Watch (relojes) — imagen y audio (AMR)
- Atrack, Fifotrack, Galileo, GPS103, Meiligao, Meitrack, PT502, Ruptela — imagen
El caso aparte: JT808 / JT1078
El protocolo JT/T808 (lo que muchos vendedores llaman "Huabao", el que hablan la mayoría de MDVR chinos) funciona por una vía completamente distinta, y conviene entenderla porque es la que genera más malentendidos:
- El decodificador JT808 no guarda archivos con el sistema de media que acabamos de describir. Tiene definidas las constantes de foto (
0x8888) y de video (0x9101solicitud,0x9102control), pero no escribe nada enmedia.path. - En cambio, sí hace video en vivo: al pedir streaming, Traccar emite el mensaje
0x9101indicándole a la cámara a quéhostyportconectarse, con quéchannel,dataTypeystreamType. La cámara abre entonces una sesión JT1078 contra el servidor, y Traccar actúa como relay transparente en vivo.
La consecuencia práctica es contundente: con un MDVR JT808 vas a poder ver video en directo, pero en el servidor no queda ningún archivo. El histórico sigue viviendo en la SD del equipo dentro del vehículo. Si abres media.path en un servidor con MDVR JT808, vas a encontrar solo imágenes estáticas de dispositivo, ni un .mp4 ni un .h264.
Matiz importante: eso es una carencia del decodificador, no del diseño. El sistema de media es genérico y cualquier protocolo puede usarlo; JT808 simplemente no lo invoca. Es perfectamente implementable con una modificación acotada del decodificador.
Esto lo desarrollo en detalle, con logs reales de producción, en video en vivo JT1078 en Traccar.
Para marcas de MDVR como Howen o Streamax no encontré decodificadores propios en Traccar: si te venden una cámara "compatible con Traccar", pregunta qué protocolo habla exactamente y pide una demo real antes de firmar nada.
Novedades recientes
El soporte de cámaras es de las áreas más activas del proyecto ahora mismo:
- El decodificador Jimi IoT para fotos es nuevo — se añadió en junio de 2026, con un arreglo posterior en la decodificación de atributos.
- En junio de 2026 se endurecieron los buffers de media en el decodificador de Teltonika: había una reserva de memoria sin límite superior en la ruta de fotos Codec12 que un paquete malformado podía explotar. Motivo suficiente para mantener el servidor actualizado.
- El arreglo de Dualcam llegó en mayo de 2026.
En resumen: dos mundos que no se mezclan
Esta es la idea que conviene llevarse:
| Sistema de media | JT808 / JT1078 | |
|---|---|---|
| Qué hace | recibe y almacena archivos | relay de video en vivo |
| Dónde queda el archivo | en media.path del servidor | en la SD del equipo, no en el servidor |
| Protocolos | Teltonika, GT06, Jimi, Dualcam, Watch, Meitrack… | MDVR JT808 |
| Video en vivo | no | sí |
Traccar hace las dos cosas, pero por caminos separados y con dispositivos distintos. Decidir qué hardware comprar empieza por decidir cuál de las dos columnas necesitas.
Si quieres la parte práctica, sigue con la guía de configuración de media.path, con cómo pedir una foto remota con requestPhoto y con el video en vivo JT1078.
NOTE
Todo lo descrito aquí está tomado del código fuente del servidor Traccar a fecha de agosto de 2026 (rama estable en torno a la 6.14.x). No existe una página oficial de documentación dedicada a cámaras, así que si trabajas con una versión más nueva, verifica los decodificadores antes de dar por hecho el soporte.