Why you can’t hear the audio on some non Apple devices

LocalTV+ supports Airplay and it is an option to send the to your other devices. This works very well when working with Apple devices. Over the past year I have seen reports that it would randomly work on certain Roku devices. Alternatively when it does work people would report that there was no audio. Eventually I discovered that not all Roku devices support the codec we use (more on this later). To add more confusion some Roku devices while not supporting the codec directly do pass it through to your audio hardware, so if you have a receiver that does support it, it would work.

This bring us to Android, where I have discovered that the first party video player ExoPlayer does not directly support AC3 Audio (there is a way to build ffmpeg and pass it through). In fact, it seems stock Android itself does not support AC3 audio. To add more confusion here, some Android devices do have AC3 support that’s been added by the manufacturer. So while I do have a basic Android client that can play the video, there is no audio at the moment.

So what is AC3 and why do we use it? AC3 is a Dolby Digital 5.1 audio format. The ATSC signal we receive uses AC3 for audio and we pass it along unmodified. We could convert it to another format such as AAC however, converting from one lossy format to another will result in worse audio quality. The actual conversion process will also increase the load on out current encoders.

Why does Apple support it but not Google? I am not sure. My hunch is that it requires a license form Dolby who owns the format and Apple has baked it into the cost of every device.