[*] 日常优化

This commit is contained in:
acgist
2023-05-08 08:10:08 +08:00
parent 3f355d02b1
commit 484e28f1df
6 changed files with 13 additions and 40 deletions

View File

@@ -117,13 +117,15 @@ public class MixerProcesser extends Thread implements JavaAudioDeviceModule.Samp
if(this.source == Source.NATIVE) {
recordSize = this.audioRecord.read(byteBuffer, byteBuffer.capacity());
if(recordSize != byteBuffer.capacity()) {
Thread.yield();
continue;
}
recordData = Arrays.copyOfRange(byteBuffer.array(), byteBuffer.arrayOffset(), byteBuffer.capacity() + byteBuffer.arrayOffset());
pts += recordData.length * (1_000_000 / this.sampleRate / 2);
this.recordClient.onPcm(pts, recordData);
} else if(this.source == Source.WEBRTC) {
local = this.local.poll(100, TimeUnit.MILLISECONDS);
// 平均10毫秒
local = this.local.poll(64, TimeUnit.MILLISECONDS);
remote = this.remote.poll();
if(local != null && remote != null) {
// Log.d(MixerProcesser.class.getSimpleName(), String.format("""
@@ -161,9 +163,11 @@ public class MixerProcesser extends Thread implements JavaAudioDeviceModule.Samp
pts += remoteData.length * (1_000_000 / remote.getSampleRate() / 2);
this.recordClient.onPcm(pts, remoteData);
} else {
Thread.yield();
continue;
}
} else {
Thread.yield();
}
} catch (Exception e) {
Log.e(MixerProcesser.class.getSimpleName(), "音频处理异常", e);

View File

@@ -233,7 +233,7 @@ public class RecordClient extends Client implements VideoSink {
bufferInfo.presentationTimeUs -= pts;
this.mediaMuxer.writeSampleData(trackIndex, outputBuffer, bufferInfo);
this.audioCodec.releaseOutputBuffer(outputIndex, false);
Log.d(RecordClient.class.getSimpleName(), "录制音频帧(时间戳):" + bufferInfo.flags + " - " + (bufferInfo.presentationTimeUs / 1_000_000F));
// Log.d(RecordClient.class.getSimpleName(), "录制音频帧(时间戳):" + (bufferInfo.presentationTimeUs / 1_000_000F));
// if (bufferInfo.flags & MediaCodec.BUFFER_FLAG_KEY_FRAME == MediaCodec.BUFFER_FLAG_KEY_FRAME) {
// } else if (bufferInfo.flags & MediaCodec.BUFFER_FLAG_CODEC_CONFIG == MediaCodec.BUFFER_FLAG_CODEC_CONFIG) {
// } else if (bufferInfo.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM == MediaCodec.BUFFER_FLAG_END_OF_STREAM) {
@@ -327,7 +327,7 @@ public class RecordClient extends Client implements VideoSink {
bufferInfo.presentationTimeUs -= pts;
this.mediaMuxer.writeSampleData(trackIndex, outputBuffer, bufferInfo);
this.videoCodec.releaseOutputBuffer(outputIndex, false);
Log.d(RecordClient.class.getSimpleName(), "录制视频帧(时间戳):" + (bufferInfo.presentationTimeUs / 1_000_000F));
// Log.d(RecordClient.class.getSimpleName(), "录制视频帧(时间戳):" + (bufferInfo.presentationTimeUs / 1_000_000F));
// if (bufferInfo.flags & MediaCodec.BUFFER_FLAG_KEY_FRAME == MediaCodec.BUFFER_FLAG_KEY_FRAME) {
// } else if (bufferInfo.flags & MediaCodec.BUFFER_FLAG_CODEC_CONFIG == MediaCodec.BUFFER_FLAG_CODEC_CONFIG) {
// } else if (bufferInfo.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM == MediaCodec.BUFFER_FLAG_END_OF_STREAM) {