Quale tipo di buffer devo implementare per un dispositivo audio streaming unidirezionale?

8

Sto lavorando a un progetto in cui i dati audio vengono trasmessi in streaming su un dispositivo. I dati audio sono codificati tramite opus e trasmessi in streaming a 20 ms di carico utile alla volta. Lo streaming viene effettuato tramite TCP per evitare completamente la perdita di pacchetti. L'obiettivo dello streaming è di avere il più vicino possibile per vivere lo streaming audio, senza perdita audio o jittering.

Attualmente ciò che accade nelle connessioni Internet più lente, l'audio potrebbe tremare un po '. Al momento non utilizzo alcun buffer, ma l'obiettivo è quello di essere il più vicino possibile al "live streaming" ma allo stesso tempo eliminare il jitter.

Ho esaminato i buffer di jitter e sembra che anche i buffer di jitter debbano gestire ritardi su entrambe le estremità in modo che entrambe le estremità siano il più possibile sincronizzate, il che suona come un eccesso per la mia situazione. Ho paura che se faccio una dimensione del buffer statico, questo rimuoverà dall'aspetto di live streaming se questo non è necessario.

Quindi questo mi lascia alcune domande, che sono tutte in qualche modo correlate.

  1. Che cos'è un buon metodo o algoritmo per il rilevamento della lunghezza del buffer?
  2. Qual è il modo migliore per iniziare ad alimentare i dati del decoder sul ricevitore? È quando il buffer raggiunge una certa quantità di millisecondi al massimo inizierà ad alimentare i dati in payload di 20 ms?
  3. Riesco a ritardare la riproduzione se il buffer viene riempito male?
  4. Il buffer sarà in byte o tempo?

Grazie mille!

    
posta Mikey A. Leonetti 14.05.2015 - 00:56
fonte

1 risposta

1

Dipende interamente dal throughput della tua rete - se riesci a mantenere un secondo di dati pieno, allora è tutto ciò di cui hai bisogno! Ovviamente, è necessario determinare il periodo di tempo in cui la rete sta andando a balbettare e perdere il riempimento del buffer. Provalo e vedi.

Altrimenti, potrebbe essere più semplice configurare la dimensione del buffer, le reti veloci possono avere un secondo buffer (nessuno noterà l'audio a 1 secondo dall'acquisizione) e rallentare le reti a latenza elevata o scarsa sarà più efficiente. Potresti essere in grado di ridimensionare il buffer durante la riproduzione se si svuota completamente, ma in questo caso è più probabile che non la riproduzione della balbuzie.

In genere, la riproduzione viene ritardata solo se il buffer si svuota completamente. Non ha senso avere un buffer se non lo usi.

Se il tuo audio è pacchetti da 20 ms, quindi dimensione == tempo.

    
risposta data 27.04.2016 - 00:33
fonte

Leggi altre domande sui tag