8000 [WIP] Audio recorder implementation · CodeStrings/flutter-webrtc@2f67335 · GitHub
[go: up one dir, main page]

Skip to content

Commit 2f67335

Browse files
committed
[WIP] Audio recorder implementation
1 parent c6bebbc commit 2f67335

File tree

3 files changed

+154
-311
lines changed

3 files changed

+154
-311
lines changed

android/src/main/java/com/cloudwebrtc/webrtc/record/AudioSamplesInterceptor.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.cloudwebrtc.webrtc.record;
22

33
import android.annotation.SuppressLint;
4+
import android.util.Log;
45

56
import org.webrtc.audio.JavaAudioDeviceModule.SamplesReadyCallback;
67
import org.webrtc.audio.JavaAudioDeviceModule.AudioSamples;
@@ -14,15 +15,9 @@ public class AudioSamplesInterceptor implements SamplesReadyCallback {
1415

1516
@SuppressLint("UseSparseArrays")
1617
private HashMap<Integer, SamplesReadyCallback> callbacks = new HashMap<>();
17-
public int currentAudioFormat = -1;
18-
public int currentChannelCount = -1;
19-
public int currentSampleRate = -1;
2018

2119
@Override
2220
public void onWebRtcAudioRecordSamplesReady(AudioSamples audioSamples) {
23-
currentAudioFormat = audioSamples.getAudioFormat();
24-
currentChannelCount = audioSamples.getChannelCount();
25-
currentSampleRate = audioSamples.getSampleRate();
2621
for (SamplesReadyCallback callback : callbacks.values()) {
2722
callback.onWebRtcAudioRecordSamplesReady(audioSamples);
2823
}

android/src/main/java/com/cloudwebrtc/webrtc/record/MediaRecorderImpl.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public class MediaRecorderImpl {
1616
private final VideoTrack videoTrack;
1717
private final AudioSamplesInterceptor audioInterceptor;
1818
private VideoFileRenderer videoFileRenderer;
19+
private boolean isRunning = false;
1920

2021
public MediaRecorderImpl(Integer id, @Nullable VideoTrack videoTrack, @Nullable AudioSamplesInterceptor audioInterceptor) {
2122
this.id = id;
@@ -24,6 +25,9 @@ public MediaRecorderImpl(Integer id, @Nullable VideoTrack videoTrack, @Nullable
2425
}
2526

2627
public void startRecording(File file) throws IOException {
28+
if (isRunning)
29+
return;
30+
isRunning = true;
2731
//noinspection ResultOfMethodCallIgnored
2832
file.getParentFile().mkdirs();
2933
if (videoTrack != null) {
@@ -40,12 +44,14 @@ public void startRecording(File file) throws IOException {
4044
}
4145

4246
public void stopRecording() {
47+
isRunning = false;
48+
if (audioInterceptor != null)
49+
audioInterceptor.detachCallback(id);
4350
if (videoTrack != null && videoFileRenderer != null) {
4451
videoTrack.removeSink(videoFileRenderer);
4552
videoFileRenderer.release();
53+
videoFileRenderer = null;
4654
}
47-
if (audioInterceptor != null)
48-
audioInterceptor.detachCallback(id);
4955
}
5056

5157
private static final String TAG = "MediaRecorderImpl";

0 commit comments

Comments
 (0)
0