Ich arbeite an einem Projekt, bei dem Audiodaten auf ein Gerät gestreamt werden. Die Audiodaten werden über ein Opus codiert und mit jeweils 20 ms Nutzlast gestreamt. Das Streaming erfolgt über TCP, um Paketverluste vollständig zu vermeiden. Das Ziel des Streamings ist es, dem Live-Audio-Streaming so nahe wie möglich zu kommen, ohne Audioverlust oder Jitter.
Derzeit, was bei langsameren Internetverbindungen passiert, kann das Audio ein wenig zittern. Ich verwende derzeit keine Puffer, aber das Ziel ist es, so nah wie möglich am "Live-Streaming" zu sein und gleichzeitig den Jitter zu beseitigen.
Ich habe mich mit Jitterpuffern befasst, und es scheint, dass Jitterpuffer auch Verzögerungen an beiden Enden verarbeiten sollen, damit beide Enden so synchron wie möglich sind, was für meine Situation wie ein Overkill klingt. Ich befürchte, dass eine statische Puffergröße den Live-Streaming-Aspekt beeinträchtigt, wenn dies nicht erforderlich ist.
Das lässt mich also mit ein paar Fragen zurück, die alle irgendwie miteinander zusammenhängen.
- Was ist eine gute Methode oder ein guter Algorithmus zum Erkennen der Pufferlänge?
- Wie kann der Decoder auf der Empfängerseite am besten mit Daten versorgt werden? Wenn der Puffer eine bestimmte Anzahl von Millisekunden voll erreicht, werden Daten in 20-ms-Nutzdaten eingespeist?
- Verzögere ich das Spielen, wenn der Puffer unterfüllt ist?
- Wird der Puffer in Bytes oder Zeitlänge sein?
Vielen Dank!