Fix choppy audio sounds when opus is used with HomeKit as a consumer #843
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
HomeKit cameras have choppy sounds (#667) in Wi-Fi and no sound in cellular network. This is due to incorrect timestamp increment and mismatched frame sizes.
It looks like iOS devices only request either 20ms (Wi-Fi) or 60ms (Cellular) opus frame sizes, and because I don't know how to dynamically modify ffmpeg args after SelectedStreamConfig is retrieved from iOS devices, merging three 20ms frames into one rtp packet is implemented to deal with mismatched frame sizes. For the timestamp increment, it will be frame size(provided by client) * sampling rate(16k with
opus/16000
). It looks like defaultopus
also works.I put these in
pkg/srtp
and I'm not a golang expert. Please let me know if there's better approaches.