I'm writing an Android AirPlay receiver. I use java-airplay-server from GitHub, But when I try to stream PCM Byte audio with Android AudioTrack ,Works fine on mobile but doesn't stream properly on Android TV and it's all noise How to solve
private final AirPlayConsumer airPlayConsumer =
new AirPlayConsumer() {
@Override
public void onVideoFormat(VideoStreamInfo videoStreamInfo) {
videoDecoder = new VideoDecoder(airPlayConfig);
visibilityCallback.showSurface();
}
@Override
public void onVideo(byte[] packet) {
if (videoDecoder != null) videoDecoder.addToBuffer(new DataPacket(packet));
}
@Override
public void onVideoSrcDisconnect() {
visibilityCallback.hideSurface();
if (videoDecoder != null) {
videoDecoder.releaseDecoder();
videoDecoder = null;
}
}
@Override
public void onAudioFormat(AudioStreamInfo audioStreamInfo) {
int bufSize = AudioTrack.getMinBufferSize(44100,
AudioFormat.CHANNEL_OUT_STEREO,
AudioFormat.ENCODING_PCM_16BIT);
audio = new AudioTrack(AudioManager.STREAM_MUSIC,
44100, //sample rate
AudioFormat.CHANNEL_OUT_STEREO, //2 channel
AudioFormat.ENCODING_PCM_16BIT, // 16-bit
bufSize,
AudioTrack.MODE_STREAM );
new Thread(new Runnable() {
public void run(){
audio.play();
}
}).start();
}
@Override
public void onAudio(byte[] bytes) {
byte[] audioDecoded = new byte[480 * 4];
FdkAacLib.decodeFrame(bytes, audioDecoded);
audio.write(audioDecoded,0,480*4);
}
@Override
public void onAudioSrcDisconnect() {
audio.stop();
audio.release();
audio.flush();
}
};