- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在两台设备之间传输麦克风音频,一切正常,但回声很差。
这是我在做什么
阅读线程
int sampleFreq = 22050;
int channelConfig = AudioFormat.CHANNEL_CONFIGURATION_MONO;
int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
int minBuffer = 2*AudioTrack.getMinBufferSize(sampleFreq, channelConfig, audioFormat);
AudioTrack atrack = new AudioTrack(AudioManager.STREAM_MUSIC,
sampleFreq,
channelConfig,
audioFormat,
minBuffer,
AudioTrack.MODE_STREAM);
atrack.play();
byte[] buffer = new byte[minBuffer];
while (true) {
try {
// Read from the InputStream
bytes = mmInStream.read(buffer);
atrack.write(buffer, 0, buffer.length);
atrack.flush();
} catch (IOException e) {
Log.e(TAG, "disconnected", e);
break;
}
}
这里是录音线程
int sampleRate = 22050;
int channelMode = AudioFormat.CHANNEL_CONFIGURATION_MONO;
int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
int buffersize = 2*AudioTrack.getMinBufferSize(sampleRate, channelMode, audioFormat);
AudioRecord arec = new AudioRecord(MediaRecorder.AudioSource.MIC,
sampleRate, channelMode,
AudioFormat.ENCODING_PCM_16BIT, buffersize);
buffer = new byte[buffersize];
arec.startRecording();
while (true) {
arec.read(buffer, 0, buffersize);
new Thread( new Runnable(){
@Override
public void run() {
try {
mOutputStream.write(buffer);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
我做错了什么吗?
最佳答案
您需要回音消除逻辑。这是我在我的 Arm5 (WM8650) 处理器 (Android 2.2) 上为消除回声所做的。
在将 PCM 帧发送到编码器之前,我用 JNI 封装了 Speex 并调用了回显处理例程。无论我尝试了何种 Speex 设置,都没有回音被取消。
因为 Speex 对播放和回声帧之间的延迟非常敏感,所以我实现了一个队列并将所有发送到 AudioTrack 的数据包排队。队列的大小应大致等于内部 AudioTrack 缓冲区的大小。这样,当 AudioTrack 将数据包从其内部缓冲区发送到声卡时,数据包就会大致发送到 echo_playback。使用这种方法消除了延迟,但仍然没有取消回声
我用 JNI 包装了 WebRtc 回声消除部分,并在将数据包发送到编码器之前调用了它的方法。回声仍然存在,但图书馆显然试图取消它。
我应用了 P2 中描述的缓冲技术,它终于开始起作用了。但是,需要针对每个设备调整延迟。另请注意,WebRtc 具有回声消除的移动版和完整版。完整版会大大降低处理器速度,可能只能在 ARM7 上运行。手机版可以,但画质较差
我希望这会对某人有所帮助。
关于android - AudioRecord 和 AudioTrack 回声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6738155/
当我输入echo $ JAVA_HOME时,我得到的是$ JAVA_HOME而不是jdk的位置。 我正确设置了环境变量的路径: 变量名称:JAVA_HOME 变量值:C:\ Program Files
所以我今天了解到可以通过以下命令设置换行符: set nl=^&echo. 例如: set nl=^&echo. echo Hello%nl%world 产量 Hello world 但是为什么这行
我正在尝试为我在 android 中的音频播放器项目设置音效高音和回声,但我不知道如何去做。 我已经在谷歌上搜索了很多,并问了一个也与之相关的问题,但那东西现在不起作用。 任何帮助将不胜感激.....
还有其他问题and answers在这个站点上建议,要创建回声或延迟效果,您只需添加一个音频样本以及过去存储的音频样本。因此,我有以下 Java 类: public class DelayAMod e
首先感谢您的阅读。让我解释一下我面临的问题。所以我成功安装了 Pusher 和 Laravel Echo 并尝试在我的 dash.blade.php 中使用它,这就是我导入 app.js 的方式文件:
你好,我正在尝试从我的其他脚本调用的外部 python 脚本中获取结果(我知道是 1)。什么时候回显$?从命令行我得到 1 但是当我尝试调用 echo $?从 python 获取 python 脚本的
我已经使用 webRTC 和 tomcat 7 创建了一个应用程序。我能够连接两个客户端进行视频聊天。一个客户端在索尼笔记本电脑中,另一个在 HP 台式电脑(带有罗技网络摄像头)中。视频工作正常,但音
在 CAKEPHP 中,函数 $this->element('sql_dump') 在屏幕上打印执行的 sql 查询。$this->element('sql_dump') 仅适用于 debug mod
所以 - 我正在使用图像捕获工具 (snagit)。默认情况下,图像本身会保存到剪贴板(捕获后)。我希望将图像的路径存储在剪贴板中。 该应用程序允许我(而不是)保存文件,并将图像作为参数传递给外部应用
您能给我推荐一些简单、免费的库来修改输入 wav 文件吗?我发现并尝试使用irrKlang,但它缺少自定义效果(它没有任何级别的自定义。您可以只使用效果失真,但不能设置任何内容) 如果有类似的库,那就
我正在两台设备之间传输麦克风音频,一切正常,但回声很差。 这是我在做什么 阅读线程 int sampleFreq = 22050; int channelConfig = AudioF
我有一个在本地运行 Redis 的 Laravel-echo-server。 我创建了一个测试 API 端点,它发出可广播的事件。 在 http://localhost:8000/api/web-so
所以我现在面临着一个问题。任何建议都会很好。首先,我使用我的代码从 arduino 接收数据,然后我使用 bluetoothChat 并更改了 uuid,我可以配对,一切都很好,但是如果我将整个字符串
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭
这个问题在这里已经有了答案: What is the $? (dollar question mark) variable in shell scripting? [duplicate] (9 个回
我正在尝试使用 pusher 来处理 laravel echo,我正在 windows localhost (wamp/laravel 5.8) 上工作 所以我已经安装了所需的库 我的包.json {
我正在使用 electron-vue 和 laravel 后端构建一个桌面应用程序。我在项目中设置 Laravel Echo 并使用 Echo.channel()工作得很好。现在我尝试使用带有 Ech
我可以使用 HTTPS 设置在本地环境中运行 laravel-echo-server 就好了。但是,我的生产服务器(基于 Forge)似乎存在问题: Client cannot be authenti
这是负责向 string 添加新行的命令 echo "string" | xclip -selection clipboard 最佳答案 echo -n "string" | xclip -selec
我是一名优秀的程序员,十分优秀!