Audio sync between stream and recorded video

Hi,

We have been streaming without any problems with the following encoder settings:
Codec: H.264
Preset: Hardware Accelerated
Profile: High
Frame Size: 1920x1080
Key frame interval: 2 sec
Limit Frame rate: 30
Bitrate: 3000

Audio format: AAC44kHz
Channel: Mono
Bitrate: 160 kbps

The stream is in sync, however the recorded video is 100 ms off. If I adjust the audio to be delayed 100 ms, the recording is in sync and the stream is off. Any advise?

If the local recording is working correctly this means that the AV sync is not broken at the Pearl level. If the AV sync is broken within a stream this indicates possibly network related issue. It could be a limitation to bandwidth, a firewall throttling the connection or related to your selected encoding settings.

Your video bitrate is less than half of the minimum recommended bitrate for 1920 X 1080 resolution (6500 kbps) which could cause issues at an encoding level. If you have limited bandwidth and cannot increase your video bitrate, I would recommend lowering your frame size to 1280 X 720.

That being said, if you are streaming to a CDN (content delivery network), all platforms have requested/recommended encoding settings.
As an example, Youtube wants to see 8000 kbps minimum for a video bitrate at 1920 X 1080 resolution, and only wants AAC 44 kHz audio at 128 kbps

I changed the encoder settings as you suggested and there is still a difference between the streaming audio/video sync and the recorded audio/video sync. I also don’t think it is a bandwidth issue because we have gig internet with 35 mbps upload speeds. Is there a way to have a different setting for audio delay between the recording and streaming to account for this?

The audio delay happens at the grabber board level, which means it will affect the audio source for every single channel. There are no additional settings for adjust latency. If the AV sync is only happening within the stream on the platform then it is something environmental outside of Pearl: Network, firewall/security restriction, transcoding issues at the platform level or mismatch of encoding settings unfortunately.