- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要创建一个 VOIP 应用程序并且我正在使用 OpenSL ES。我需要为所有 Android 设备以 8KHz 采样率捕获和播放 pcm 音频数据。但是,当我以 8KHz 的采样率捕获音频并同时播放(语音通信)时,它会产生噪音并且某些设备(如三星 Galaxy S3、S4 等)的音频会失真。我知道,有一个特定的首选采样率对于每个设备,我想知道是否有任何解决方法或任何方法可以仅使用 8KHz 采样率而不会出现任何失真?
我尝试增加缓冲区大小和许多其他东西,但未能找到最佳和通用的解决方案。我的编码器和解码器需要以 8KHz 采样的音频数据。我的第二个想法是在将音频数据传递到我的编码器或解码器之前对其进行重新采样,但这不是我正在寻找的解决方案。
我发现 CSipSimple 使用 OpenSL,我也浏览了他们的一些代码。但是,我仍然找不到解决方案,可能是我不知道该把注意力集中在哪里。我被困在这里了!
最佳答案
这是我解决问题的方法:
我正在使用 OpenSL ES 和 this 为 Android 开发音频流教程对我帮助很大。我按照此处的说明进行操作并使它正常工作。然后我发现使用这种方法的音频流对于某些设备(主要是三星设备)效果不佳。我尝试了很多事情,比如增加缓冲区大小、禁用环境混响等。我发现 this回答对于提高流媒体性能非常有用。
最后,我发现音频失真是因为我必须使用死锁来同步缓冲区开关。建议使用无锁结构以获得更好的音频性能。然后我采用了 Victor Lazzarini 的另一种方法,即无锁音频 IO。本文Lock-free audio IO with OpenSL ES on Android有助于实现无锁结构以及更好的音频性能。
关于android - 使用 OpenSL 的所有安卓设备以 8KHz 采样率进行语音通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22342040/
我想做fly应用喜欢this ,我知道我必须进行编码,使其产生超声波,使苍蝇远离一定距离。而且是人耳听不到的声音。 我对 iPhone 中的超声波一无所知。谁能指导我。 提前致谢。 最佳答案 下载超声
我正在学习实现 Goertzel 的算法来从录制的波形文件中检测 DTMF 音调。我从 here 中用 python 实现了一个.它支持以 8 kHz 和 16 kHz 采样的音频。我想扩展它以支持以
我正在用C编写一个小型应用程序,该应用程序从基于云的语音引擎接收mp3音频数据,并以16 khz采样率将其转换为pcm数据(wav格式)。我正在使用libmad解码mp3数据,但没有找到将其从24 k
我想用我的iPhone检测视频中的音频频率。该音调的频率应在17 kHz到20 kHz之间,我发现了一个sample,但是当我在Mac上的模拟器上尝试使用它时,它可以工作,当我将其放在iPhone上以
我尝试将 PCM 音频从 16kHz 转换为 8kHz,只是采样率,没有格式变化,流程看起来很简单,但我一直通过调用 AudioConverterFillComplexBuffermBuffers[0
我有一个 48 kHz PCM 流,并希望将其流式传输到 44.1 kHz 兼容播放器(Apple 的 AirPlay)。 有人知道这是否“有效,因为一些字节会丢失”,或者我是否必须在之前进行转换/下
我最近使用了jRecorder jQuery,但发现它以44 khz记录。我需要将创建的.wav文件转换为8或11 khz,或者找到一个要以44 khz录制的新插件。 有谁知道一个好的插件,或者知道如
我有一个wav文件,每个音频编辑器都告诉我这是一个48kHz,16位的wav文件。 但是,当我右键单击wav文件并打开Windows文件属性对话框时,看到“位速率:1152 kBit / s”。 “位
我刚刚连接了 electret microphone到 Arduino,我想在 1 kHz 的范围内进行采样和 4kHz。 我知道这仅限于机器代码和 ADC ,所以我试图保留 sketch简单。 是
我正在尝试使用 MPU-6000 加速度计和 Raspberry Pi Zero W 来记录挡风玻璃中的振动数据。我对 Python 还很陌生,所以请耐心等待。 我编写了一个 python2 脚本,用
我正在开发一个以 48 kHz 采样率运行的 VoIP 应用程序。由于它使用内部使用 48 kHz 的 Opus 作为其编解码器,并且大多数当前的 Android 硬件本身以 48 kHz 运行,因此
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 2 年前。 Improve this qu
我需要使用 Python 3 为一些生物声学实验捕获 192 kHz 音频。我有硬件、Sound Devices USBPre 2 声卡、具有高达 100 kHz 良好频率响应曲线的麦克风,并且我已启
开始之前:是的,我知道答案是 architecture dependent - 我只对大致数字感兴趣,就数量级而言。 linux内核对中断频率有上限吗? 背景:我想在 Linux 中连接相机模块。该模
我有这个脚本,用于将目录中的所有 wav 文件转换为 44100 hz 的 16 位。但是,它也会转换已经具有这些属性的文件。如何过滤文件以便只转换需要转换的文件? 我正在使用 ubuntu 开发 W
我正在使用带有 microSD 卡的 STM32F4 微 Controller 。我正在通过 DMA 捕获模拟数据。 我使用双缓冲区,一次获取 1280 (10*128 - 10 FFT) 个样本。当
我正在使用 RecorderJS 来录制来自用户的麦克风流。默认导出为 44.1 kHz、16 位的 WAV 文件。无论如何我可以将其降采样到 11kHz 或 16kHz 而不会听起来很奇怪吗? 无论
我尝试在 FFmpeg 中捕获 48 kHz 的音频,代码如下: AVInputFormat* ifmt = av_find_input_format("dshow"); CHECK_POI
我想将音频文件解码为原始 PCM 数据,以将其流式传输到本地网络中的播放设备。我使用新的 MediaExtractor和 MediaCodec API 级别 16 引入的类。该设备要求 PCM 数据为
最近新买了一个USB示波器,想测avr timer0的频率。有一个 12 MHz 晶体振荡器连接到 atmega,timer0 设置为没有预分频器的快速 PWM 模式。这是代码: #include
我是一名优秀的程序员,十分优秀!