|
|
@ -3,19 +3,22 @@ package net.ossrs.yasea;
|
|
|
|
import android.content.Context;
|
|
|
|
import android.content.Context;
|
|
|
|
import android.media.AudioManager;
|
|
|
|
import android.media.AudioManager;
|
|
|
|
import android.media.AudioRecord;
|
|
|
|
import android.media.AudioRecord;
|
|
|
|
|
|
|
|
import android.media.audiofx.AcousticEchoCanceler;
|
|
|
|
|
|
|
|
import android.media.audiofx.AutomaticGainControl;
|
|
|
|
|
|
|
|
|
|
|
|
import com.github.faucamp.simplertmp.RtmpHandler;
|
|
|
|
import com.github.faucamp.simplertmp.RtmpHandler;
|
|
|
|
import com.seu.magicfilter.utils.MagicFilterType;
|
|
|
|
import com.seu.magicfilter.utils.MagicFilterType;
|
|
|
|
|
|
|
|
|
|
|
|
import java.io.File;
|
|
|
|
import java.io.File;
|
|
|
|
import java.io.IOException;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Created by Leo Ma on 2016/7/25.
|
|
|
|
* Created by Leo Ma on 2016/7/25.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public class SrsPublisher {
|
|
|
|
public class SrsPublisher {
|
|
|
|
|
|
|
|
|
|
|
|
private AudioRecord mic;
|
|
|
|
private static AudioRecord mic;
|
|
|
|
|
|
|
|
private static AcousticEchoCanceler aec;
|
|
|
|
|
|
|
|
private static AutomaticGainControl agc;
|
|
|
|
private boolean aloop = false;
|
|
|
|
private boolean aloop = false;
|
|
|
|
private Thread aworker;
|
|
|
|
private Thread aworker;
|
|
|
|
|
|
|
|
|
|
|
@ -67,6 +70,20 @@ public class SrsPublisher {
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (AcousticEchoCanceler.isAvailable()) {
|
|
|
|
|
|
|
|
aec = AcousticEchoCanceler.create(mic.getAudioSessionId());
|
|
|
|
|
|
|
|
if (aec != null) {
|
|
|
|
|
|
|
|
aec.setEnabled(true);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (AutomaticGainControl.isAvailable()) {
|
|
|
|
|
|
|
|
agc = AutomaticGainControl.create(mic.getAudioSessionId());
|
|
|
|
|
|
|
|
if (agc != null) {
|
|
|
|
|
|
|
|
agc.setEnabled(true);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (!mCameraView.startCamera()) {
|
|
|
|
if (!mCameraView.startCamera()) {
|
|
|
|
mEncoder.stop();
|
|
|
|
mEncoder.stop();
|
|
|
|
return;
|
|
|
|
return;
|
|
|
@ -237,6 +254,18 @@ public class SrsPublisher {
|
|
|
|
mic.release();
|
|
|
|
mic.release();
|
|
|
|
mic = null;
|
|
|
|
mic = null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (aec != null) {
|
|
|
|
|
|
|
|
aec.setEnabled(false);
|
|
|
|
|
|
|
|
aec.release();
|
|
|
|
|
|
|
|
aec = null;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (agc != null) {
|
|
|
|
|
|
|
|
agc.setEnabled(false);
|
|
|
|
|
|
|
|
agc.release();
|
|
|
|
|
|
|
|
agc = null;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void switchMute() {
|
|
|
|
public void switchMute() {
|
|
|
|