Latencia y rendimiento
Unos 60 ms de la cámara a OBS por USB, a 1080p o 4K; por Wi-Fi es más alta y más variable. La cifra se mide de forma continua, no se estima, y se muestra en el campo Estado, en la barra de estado y en el registro.
De dónde viene el retraso#
| Fase | Aproximadamente | Notas |
|---|---|---|
| Captura y exposición | Un fotograma | Las escenas más luminosas se exponen más rápido, y se nota aquí. |
| Codificación por hardware | Unos pocos ms | VideoToolbox. No hay nada que ajustar. |
| El enlace | USB: pequeño y estable. Wi-Fi: variable | La fase que separa una buena configuración de una frustrante. |
| Decodificación | Unos pocos ms | En la GPU de forma predeterminada, con paso automático a software. |
| Hasta tu escena | Menos de un milisegundo con el pipeline en GPU | Si no, una copia fuera de la memoria de la GPU y de vuelta. |
Cómo reducirlo#
- Usa USB. Es lo más constante, no le afecta la congestión del Wi-Fi y carga el teléfono.
- Ilumina la escena. Una habitación oscura alarga la exposición, y eso se suma directamente a la latencia.
- Deja activados los valores predeterminados. El modo de baja latencia y la decodificación por hardware vienen activados.
- No pidas más de lo necesario. Si la toma es una persona hablando que ocupa 1000 px de ancho en tu escena, 1080p no es ningún sacrificio.
- Usa el teleobjetivo en lugar de mucho zoom digital. El video ampliado y con ruido se comprime mal, y eso se traduce en picos de tasa de bits y de latencia.
La congestión se descarta, no se acumula. Cuando el enlace se atasca, LensLink descarta fotogramas y baja la calidad un momento en lugar de acumular retraso, así que la latencia se mantiene estable en vez de ir subiendo a lo largo de la transmisión.
Seguir las cifras#
- Barra de estado de OBS:
LensLink: iPhone 60 fps · 11.9 Mb/s · 43 ms, una entrada por cada fuente en vivo. - El panel de LensLink (Vista → Paneles): una fila por fuente.
- En el teléfono: Estadísticas, en el menú de estado de la pantalla En vivo, muestra la misma línea. Con Imagen limpia como vista en reposo, sigue visible a propósito cuando los controles se ocultan.
- El campo Estado incluye, mientras hay conexión, la latencia medida de la captura a la decodificación.
La cifra es real: una vez por segundo se hace un intercambio de desfase de reloj al estilo NTP, que también es lo que hace posible la sincronía labial automática.
El pipeline de decodificación en GPU (beta)#
Normalmente, cada fotograma decodificado se descarga de la GPU a la memoria del sistema, se entrega a OBS y se vuelve a subir enseguida para la composición: unos 2 GB/s de píxeles a 4K60, para nada. El pipeline beta entrega el fotograma a OBS como textura y se ahorra ese viaje de ida y vuelta.
Herramientas → Ajustes de LensLink. Todas las fuentes cambian a la vez, tras reiniciar OBS.
Resultados medidos#
Doce configuraciones, unos 25 s de video en vivo cada una, con el mismo PC y el mismo teléfono por Wi-Fi. Las copias de píxeles marcaron 0,00 MB/s en todas las pruebas con el pipeline en GPU.
| Configuración | Coste por fotograma (ms) | Copias de píxeles (MB/s) | CPU de OBS |
|---|---|---|---|
| 720p 60 HEVC | 0,81 → 0,09 | 163 → 0 | 2,2 % → 1,4 % |
| 1080p 60 H.264 | 2,11 → 0,10 | 370 → 0 | 2,3 % → 1,6 % |
| 1080p 60 HEVC | 1,42 → 0,09 | 373 → 0 | 2,6 % → 1,4 % |
| 4K 30 HEVC | 4,96 → 0,14 | 721 → 0 | 2,9 % → 1,5 % |
| 4K 60 H.264 | 7,54 → 0,10 | 1221 → 0 | 4,1 % → 1,8 % |
| 4K 60 HEVC | 4,75 → 0,10 | 1439 → 0 | 4,1 % → 1,6 % |
El coste por fotograma baja entre un 89 y un 99 %, y la ganancia crece con la resolución: a 4K60 HEVC, el pipeline estándar movía unos 1,4 GB/s por la memoria del sistema, que esto elimina por completo, y el uso de CPU del proceso de OBS se reduce aproximadamente a la mitad. La latencia y la velocidad de fotogramas no mostraron ninguna diferencia sistemática: las determinan la red y el codificador del teléfono, no la vía de renderizado.
Notas por plataforma#
| Windows | Cualquier sistema compatible con OBS 32 (Windows 10 1909 o posterior), con texturas D3D11 compartidas. |
| macOS | Cualquier sistema compatible con OBS 32 (macOS 13 o posterior), mediante IOSurface. Las transmisiones de 10 bits son la excepción: VideoToolbox las convierte a 8 bits por su cuenta, así que HDR y Apple Log se renderizan por el pipeline estándar y no por este. |
| Linux | Requiere OBS sobre EGL (la opción predeterminada en Wayland y en las versiones actuales para X11) y un controlador VAAPI: viene integrado en Mesa para Intel y AMD; NVIDIA necesita nvidia-vaapi-driver. |
| Varias GPU | Si la decodificación y el renderizado se hacen en GPU distintas, no se pueden compartir texturas; la fuente vuelve automáticamente al método estándar. |
La vuelta al método estándar es automática y por fuente: en el peor caso tienes exactamente el pipeline estándar, con una línea en el registro que explica por qué.
¿Importa la marca de la GPU?#
Menos que el sistema operativo. La decodificación es un bloque de función fija en todas las GPU modernas, y el plugin la solicita a la API propia de la plataforma, no a nada específico de un fabricante.
| Windows | Independiente del fabricante. D3D11VA en cualquier GPU actual, con DXVA2 como alternativa. |
| macOS | VideoToolbox, tanto en Mac con Apple silicon como con Intel. |
| Linux, Intel o AMD | VAAPI ya viene en Mesa: no hay nada que instalar. |
| Linux, NVIDIA | Requiere nvidia-vaapi-driver; VDPAU es la alternativa. Es el único caso en que la marca decide si el pipeline en GPU llega a activarse. |
| Portátiles con dos GPU | Si la decodificación se hace en una y OBS renderiza en la otra, no se pueden compartir texturas y la fuente vuelve por sí sola al método estándar. |
| GPU antiguas | Una GPU sin decodificador HEVC Main10 pasa a software para las transmisiones de 10 bits; las de 8 bits no se ven afectadas. |
Varios teléfonos a la vez es una carga de decodificación, no de codificación. El límite de NVIDIA de sesiones NVENC simultáneas no se aplica: aquí no se codifica nada en la computadora. Lo que te limita es el rendimiento de decodificación y el ancho de banda de memoria, que es justamente lo que ahorra el pipeline en GPU.
Las mediciones anteriores proceden de un único equipo Windows con una tarjeta
NVIDIA. El pipeline está en beta en parte porque las demás combinaciones
(IOSurface en macOS, VAAPI de Mesa, nvidia-vaapi-driver y la vuelta
al método estándar con varias GPU) necesitan más informes de uso real que más
código.
Medirlo tú mismo#
Herramientas → Ajustes de LensLink → Registrar métricas de rendimiento del pipeline escribe una fila CSV por segundo en la carpeta de configuración del plugin (la ruta aparece en el registro), además de un resumen cada cinco segundos. Transmite diez segundos con cada configuración y luego compara una pareja:
python3 tools/bench-report.py BEFORE.csv AFTER.csv
Se espera que cualquier cambio de rendimiento que se proponga para LensLink cite una de estas comparaciones.