dh1tw / remoteAudio

Audio streaming application for Amateur Radio purposes
MIT License
165 stars 24 forks source link

I can't figure out how is implemented Opus codec? #11

Closed Daparrag closed 7 years ago

Daparrag commented 7 years ago

Dear Tobias:

Could you describe me how did you integrated opus in remote audio implementation?

dh1tw commented 7 years ago

Hi @Daparrag,

I'm using for Opus the Go binding written by @hraban. It's just a thin layer on top of the Opus C lib and the function signatures, arguments and constants have been held close to the ones from the C library. This means that you should definitely have a look into the documentation of the OPUS codec and it's API. It's crucial to understand how it works and how to use the API.

The implementation is amazingly straight forward. You will find the implementation details in audio/player_async.go and audio/recorder_async.go.

You basically initialise the Opus codec and get in return either an encoder or a decoder. from then on, you just need to feed it with audio frames. Just make sure that the audio frames have the supported length (2.5, 5, 10, 20, 40 or 60 ms).

I hope this helps!