Estoy trabajando en un proyecto donde los datos de audio se transmiten a un dispositivo. Los datos de audio se codifican a través de opus y se transmiten a 20 ms cargas útiles a la vez. La transmisión se realiza a través de TCP para evitar la pérdida de paquetes por completo. El objetivo de la transmisión es tener la transmisión de audio en vivo lo más cerca posible, sin pérdida de audio o fluctuaciones.
Actualmente, lo que sucede en conexiones de Internet más lentas, el audio puede fluctuar un poco. Actualmente no estoy usando ningún búfer, pero el objetivo es poder tener lo más cerca posible de la "transmisión en vivo" pero al mismo tiempo eliminar el jitter.
He examinado los buffers de jitter, y parece que también se supone que los buffers de jitter manejan los retrasos en ambos extremos para que ambos extremos estén lo más sincronizados posible, lo que parece una exageración para mi situación. Me temo que si hago un tamaño de búfer estático, se eliminará del aspecto de transmisión en vivo si esto no es necesario.
Entonces esto me deja con algunas preguntas, que de alguna manera están relacionadas.
- ¿Cuál es un buen método o algoritmo para detectar la longitud del búfer?
- ¿Cuál es la mejor manera de comenzar a alimentar datos al decodificador en el extremo del receptor? ¿Es cuando el búfer alcanza una cierta cantidad de milisegundos lleno que comenzará a alimentar datos en cargas útiles de 20 ms?
- ¿Retrasaré la reproducción si el búfer no se llena?
- ¿El búfer estará en bytes o en tiempo?
¡Muchas gracias!