GNU/Linux >> Tutoriales Linux >  >> Linux

Jack vs Pulseaudio:¿cómo es más rápido?

Veo un montón de afirmaciones de que Jack es más rápido que Pulse y tiene menos latencia. ¿Cómo es eso? ¿Por qué Pulse se llama a sí mismo ligero y los chicos de Jack lo llaman gordo? ¿Alguien podría desglosar las partes internas de estos dos demonios a un profano?

Respuesta aceptada:

Jack requiere que usted, el usuario experto, configure el servidor para determinar la latencia de procesamiento más baja posible. para su máquina. (La latencia de procesamiento es el tiempo que le toma al servidor mover datos hacia/desde las aplicaciones cliente y luego enviar/recibir el siguiente "fragmento" de muestras de audio fuera del sistema). Jack entregará esos fragmentos de datos de audio a tiempo, o fallará y le dará una insuficiencia de datos en el búfer (a veces llamada "desconexión", o pops y clics ). Si Jack constantemente se queda corto, es su trabajo reiniciar el servidor con una configuración diferente o cambiar algo en las aplicaciones del cliente para que sean más eficientes y pueda cumplir con los plazos de audio. Dado que la configuración de su servidor se aplica uniformemente a todos los clientes, Jack es bastante útil para enrutar audio entre múltiples aplicaciones de audio y volverse predecible. resultados. (Es decir, es como conectar "conectores" a varios componentes de audio).

Pulse está diseñado para minimizar la cantidad de veces que el audio se pierde debido a que el servidor no cumple con la fecha límite para enviar/recibir audio fuera del sistema. Aparentemente intenta hacer esto eligiendo un gran búfer para las aplicaciones cliente que no solicitan una baja latencia de procesamiento. , luego "inyectando" muestras en ese búfer para aplicaciones de clientes que tienen una fecha límite antes. Si intenta inyectar muestras tan pronto que no cumple con la fecha límite y provoca una insuficiencia de datos, Pulse aumentará automáticamente la menor cantidad de tiempo que le permitirá a un cliente enviar una actualización de audio al servidor. Los documentos de Pulse establecen explícitamente que ultra baja latencia:digamos, menos de 10 ms de latencia de procesamiento — no es un objetivo de diseño. Dado que Linux en sí mismo (y probablemente su hardware) no fue diseñado para la programación de audio en tiempo real, estaría dispuesto a creerles.

En términos de configuración de usuario, Pulse es "ligero". (Se podría decir que Pulse tiene una latencia de configuración baja , algo que, lamentablemente, muchas aplicaciones de audio de Linux aparentemente ignoran). En términos de su complejidad subyacente en comparación con Jack, Pulse es "gordo".

Para obtener una respuesta definitiva sobre cuál es más rápido, solo tendrá que obtener un dispositivo de bucle invertido y medir la latencia de ida y vuelta en su propio sistema para saber la verdad. Latencia de ida y vuelta es el tiempo que le toma a su sistema procesar el audio y recibir lo que procesó nuevamente en el sistema. Hay tutoriales en línea que explican cómo hacer esto en Linux. Eso le dará una idea de lo que realmente está buscando, que es la percepción de latencia — el tiempo que transcurre desde el momento en que desencadena un evento (p. ej., rasguear las cuerdas de una guitarra) hasta el momento en que escucha por primera vez el sonido resultante (p. ej., escuchar el acorde de la guitarra).

Relacionado:¿Es generalmente más rápido seleccionar en una tabla temporal que seleccionar en una tabla real?

Finalmente, tenga en cuenta que tanto Pulse como Jack se encuentran por encima de ALSA en la mayoría de las distribuciones de GNU/Linux. Sé que solo estás preguntando sobre Jack vs. Pulse. Pero si está utilizando una sola aplicación de audio que se puede conectar directamente a ALSA, no hay forma concebible de que agregar Pulse o Jack reduzca la percepción de latencia. que ALSA sola. En ese sentido, tanto Pulse como Jack son "gordos".

tldr; ALSA solo es más rápido, Jack es útil para encadenar varias aplicaciones de audio y Pulse es probablemente más fácil para usar cuando no te importa la latencia ultrabaja. Ignore cualquier documentación o discusión que use el término latencia sin explicar a qué tipo de latencia se refiere. (Desafortunadamente, tanto los documentos oficiales de Jack como las entradas del blog de Lennart sobre Pulse entran en esta categoría).

Nota :Podría haber casos extremos en los que desee usar una sola aplicación de audio y tenga una interfaz ALSA horrible y una interfaz Jack decente. En ese caso, usar Jack puede reducir la latencia. Pero si hablamos de aplicaciones diseñadas para minimizar la latencia, esos casos deberían ser raros. ¡Pero conecta un dispositivo loopback y prueba mi hipótesis!


Linux
  1. ¿La toma de auriculares de la computadora portátil no produce sonido?

  2. ¿Cómo precargar un programa para un inicio más rápido?

  3. Cómo hacer que mi sitio web cargue más rápido

  4. ¿Cómo hacer que este script sed sea más rápido?

  5. ¿Cómo comienza PulseAudio?

Cómo hacer que el sistema Linux funcione más rápido en CPU Intel

Cómo navegar directorios más rápido en Linux

Cómo hacer que Debian Linux sea más rápido

Cómo Gzip archivos grandes (100GB+) más rápido en Linux

Cómo instalar Pigz para comprimir archivos más rápido en Linux

Cómo instalar y usar Pigz para comprimir archivos más rápido en Linux