diff --git a/server/src/main/java/com/genymobile/scrcpy/AudioEncoder.java b/server/src/main/java/com/genymobile/scrcpy/AudioEncoder.java index 108bbaa1..460017d4 100644 --- a/server/src/main/java/com/genymobile/scrcpy/AudioEncoder.java +++ b/server/src/main/java/com/genymobile/scrcpy/AudioEncoder.java @@ -105,8 +105,17 @@ public final class AudioEncoder implements AsyncProcessor { private void outputThread(MediaCodec mediaCodec) throws IOException, InterruptedException { streamer.writeAudioHeader(); + long lastPts = 0; while (!Thread.currentThread().isInterrupted()) { OutputTask task = outputTasks.take(); + + if (task.bufferInfo.presentationTimeUs <= lastPts) { + // Fix PTS if not strictly monotonically increasing + task.bufferInfo.presentationTimeUs = ++lastPts; + } else { + lastPts = task.bufferInfo.presentationTimeUs; + } + ByteBuffer buffer = mediaCodec.getOutputBuffer(task.index); try { streamer.writePacket(buffer, task.bufferInfo);