音频记录:缓冲区溢出?
我的应用程序RECORDING我会得到缓冲溢出.录音以Service进行.我无法弄清楚为什么我从AudioFlinger中收到此消息. 下面我实例化AudioRecord对象并设置其回调. bufferSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat); aRecorder = new AudioRecord(audioSource, sampleRate, channelConfig, audioFormat, bufferSize); aRecorder.setRecordPositionUpdateListener(updateListener); bytesPerSample = bitsPerSample / 8; int bytesPerFrame = nChannels * bytesPerSample; framePeriod = bufferSize /
6 2024-04-04
编程技术问答社区
安卓音频录制成wav
我使用Android上的音频记录器录制了一个音频,并且会产生一个RAW PCM文件.我正在尝试将其转换为可以收听的格式(例如WAV或MP3. 我已经从这个示例开始了,但不知道从这里去哪里: android audiorecord示例 尝试遵循以下内容: 与Android Audiorecorder录制.wav 这是我要录制的代码(请注意,我正在使用倒计时计时器来告诉它何时开始和停止录制. public class AudioRecordService extends Service { Toast toast; private static final int RECORDER_SAMPLERATE = 44100; private static final int RECORDER_CHANNELS = AudioFormat.CHANNEL_IN_MONO; private static final int RECORDER_AUD
2 2024-03-19
编程技术问答社区
在安卓应用程序中从外部来源录制音频
我看到这里有一个类似的问题: 是可能的在Android中录制视频时从外部麦克风中录制? 但是,这个问题从未真正得到回答,Android文档并未清楚地说明这是如何完成的. 此线程中的此人指出,这是可能的,但没有说如何. 来自外部麦克风的实时音频捕获和播放/a> 在" setaudiosource"部分中进行选择是有意义的,但是这些选项都不适用于外部来源. MediaRecorder recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_DOWNLINK); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 我的应用程序已完成99%.任何帮助将不胜
0 2024-03-19
编程技术问答社区
安卓音频记录的设置来记录通话
我使用Audiorecord类在通话过程中记录声音. 我只想记录拥有手机的人的声音(来自麦克风). 在录制过程中,我想进行一些音频处理,但这是现在的. Android具有以下AudioSources选项: Mediarecorder.audiosource.voice_call Mediarecorder.audiosource.mic Mediarecorder.audiosource.voice_uplink mediarecorder.audiosource.voice_downlink 您可以解释它们之间有什么区别.好的麦克风很明显,但是 Voice_call vs voice_uplink vs voice_downlink? 我也应该选择一个样本率(8000Hz,16000Hz,2250Hz,44100Hz).您能告诉我选择什么样本率,为什么? 对于音频格式,我选择了audioformat.encoding_pcm_16bit 但它也
4 2024-03-19
编程技术问答社区
增加录制音频的音量输出
我正在尝试在Android中制作呼叫录制应用程序.我正在使用扬声器来录制上行链路和下行链路音频.我面临的唯一问题是音量太低.我已经使用听音器增加了设备的量,但不能超越它. 我首先使用了Mediarecorder,但是由于它的功能有限,并且提供了压缩音频,因此我尝试使用AudioreCorder.我仍然没有弄清楚如何增加音频.我也在Github上检查了项目,但这没有用.我在Stackoverflow上搜索了过去两个星期,但找不到任何东西. 我很确定这是可能的,因为许多其他应用程序正在这样做.例如自动呼叫记录器这样做. 我知道我必须对音频缓冲区做些事情,但是我不确定在这方面需要做什么.你能指导我吗? 更新: - 很抱歉,我忘了提到我已经在使用增益.我的代码几乎类似于我已经问了一个类似的问题,上面关于SoundDesign SE 解决方案 您显然运行了AudioRecord的东西,所以我跳过了sampleRate和inputSource的决定.要点是,您需要在录音循
10 2024-03-19
编程技术问答社区
在播放音频的同时,也播放音频访问输出播放数据的音频录音
我正在使用语音命令的自定义模型在我的应用程序中乱七八糟 - 我从AudioreCord中可以使用良好的录制和处理输入音频,我通过文本到语音向用户提供了反馈. . 我遇到的一个问题是,即使在播放音频时,我也希望通过我自己的文字进行演讲,或者通过在后台播放的其他内容(例如音乐)来工作.我意识到这将是一个无聊的问题,但是如果我可以以某种方式访问​​音频输出数据(手机正在播放的内容)并将其与我的麦克风输入数据匹配,我想我至少可以调整调整我的模型 +改善了我的结果. 但是,基于 Android-我可以从音频混音器中获取音频数据吗?,听起来好像是不可能的. 两个问题: 1)是否有任何方法可以通过Android API访问预期的音频输出/播放数据,或者Android API提供的任何选项用于处理此问题(音频输出和输入之间的反馈循环)? 2)除了停止所有其他播放或等待其他播放完成之外 - 还有其他方法可以解决此问题吗?我认为,如果用户在扬声器手机上,我只是错过了自己做的方
2 2024-03-19
编程技术问答社区
安卓音频记录滤波器的频率范围
我正在使用Android平台,从以下参考问题中,我知道,使用Audiorecord类,返回原始数据我可以过滤的音频频率范围取决于我的需求,但是我需要算法,有人可以帮助我以找到算法以滤波范围b/w 14,400 bph和16,200 bph. 我尝试了" jtransform",但我不知道我可以使用Jtransform实现这一目标吗?目前,我正在使用" jfftpack"来显示视觉效果,这效果很好,但我无法使用此效果来实现音频过滤器. 参考此处 帮助您提前感谢. 以下是我上面提到的我的代码,我正在使用" jfftpack"库来显示您可能会在代码中找到此库参考,请不要与该库相处 private class RecordAudio extends AsyncTask { @Override protected Void doInBackground(Void... params) { try {
0 2024-03-19
编程技术问答社区
立体声的音频记录,在左、右声道提供相同的数据
我正在尝试根据在左和右通道中记录的差异来记录和处理音频数据.为此,我使用的是音频记录类,并使用麦克风作为输入和立体声模式. recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRate, AudioFormat.CHANNEL_IN_STEREO, AudioFormat.ENCODING_PCM_16BIT, bufferSize); 我的问题是,我在两个渠道中获得了完全相同的数据. (分开替代样品以获取单个通道输入).请帮忙.我不确定为什么会发生这种情况. 解决方案 使用此配置: private int audioSource = MediaRecorder.AudioSource.MIC; private static int sampl
2 2024-03-19
编程技术问答社区
音频记录和音频追踪的延迟
我正在尝试开发诸如irig for android之类的放置,因此第一步是捕获麦克风输入并同时播放. 我有它,但是问题是我得到了一些延迟,使它无法使用,如果我开始处理缓冲区,恐怕它会完全无法使用. 我使用audiorecord和audiotrack: new Thread(new Runnable() { public void run() { while(mRunning){ mRecorder.read(mBuffer, 0, mBufferSize); //Todo: Apply filters here into the buffer and then play it modified mPlayer.write(mBuffer, 0, mBufferSize); //L
2 2024-03-19
编程技术问答社区
安卓音频记录-不能第二次初始化
hej,我目前正在试图让Audiorecord上班.因为我需要在一个更大的项目中.但这似乎很混乱. 我一直在尝试很多事情,所以当我追踪此错误时,我回到了基本. 我将三星Galaxy S作为我的Debugdevice. 我的问题是,在重新启动设备后,我可以初始化我创建的Audiorecord对象而没有问题. 但是第二次运行它,它不会初始化Audiorecord对象. 我尝试了几个频率,仅供参考. 这是我的代码: package android.audiorecordtest; import android.app.Activity; import android.media.AudioFormat; import android.media.AudioRecord; import android.media.MediaRecorder; import android.os.Bundle; import android.view.View; import android.
2 2024-03-19
编程技术问答社区
安卓。音频记录类问题:回调从未被调用
我的Android Java应用程序需要将音频数据记录到RAM中并进行处理. 这就是为什么我使用" AudioreCord"类,而不是" Mediarecorder"(仅记录文件). . 到目前为止,我在音频数据中使用了繁忙的循环轮询和" read()".到目前为止,这已经运行了,但是它使CPU过多. 在两次民意调查之间,我将线程入睡,以避免使用100%的CPU使用. 但是,这并不是一个真正干净的解决方案,因为睡眠时间是 不能保证,您必须减去安全时间才能不放松音频 摘要.这不是CPU最佳.我需要尽可能多的免费CPU周期 并行运行线程. 现在,我使用" OnreCordPositionUpDateListener"实现了录制. 这看起来非常有前途,并且是根据SDK文档进行的正确方法. 一切似乎都起作用(打开音频设备,读取()数据等) 但是名单从未被调用. 有人知道为什么吗? 信息: 我正在使用真实设备,而不是在模拟器下工作.使用繁忙的循环的录制基本上有效(但是不满意)
2 2024-03-19
编程技术问答社区
安卓音频录制支持的采样率
我试图弄清运行Android 2.2及更高的手机支持哪些采样率.我们想以低于44.1kHz的速度进行采样,而不必重新采样. 我知道所有手机都支持44100Hz,但想知道是否有一张桌子可以显示哪些采样率对于特定电话有效.我已经看过Android的文档( http://developer.android.com/reference.com/reference.com/reference/reference/android/android/android/media/media/audiorecord.html.html ),但这无济于事. 有没有人找到这些抽样率的列表? 解决方案 原始海报可能很久以来就继续了,但是如果其他人发现这个问题,我会发布此信息. 不幸的是,根据我的经验,每个设备都可以支持不同的样本速率.知道设备支持的样品率的唯一确定方法是通过检查AudioreCord.getMinbuffersize()的结果来单独测试它们. > public void get
10 2024-03-19
编程技术问答社区
安卓音频记录的例子
我正在设计一个Android应用程序,我需要实现AudioreCord类来记录用户的声音.经过一些研究(没有提供足够的信息)和很少的尝试失败后,我想知道是否有人可以通过发布示例(代码)来帮助我,以了解如何使用AudioreCord捕获高质量的声音.我真的很感激.谢谢你 解决方案 在这里,我向您发布一些代码示例,这些代码示例使用 audiorecord api . 注意:如果您在模拟器中使用声音质量不会很好,因为我们使用的样本率8K仅支持模拟器中.在设备中,使用样品速率为44.1K,以提高质量. public class Audio_Record extends Activity { private static final int RECORDER_SAMPLERATE = 8000; private static final int RECORDER_CHANNELS = AudioFormat.CHANNEL_IN_MONO; private
2 2024-03-19
编程技术问答社区
使用AndroidRecord API录制的音频无法播放
正在开发具有记录用户语音的功能的Android应用程序.为此,我使用了AndroidRecord音频API. 当前PCM文件(记录的音频文件-RecordEdaudio.pcm)在SD卡中成功生成.但是无法播放该文件.我还在PC中尝试了Windows Media Palyer和其他一些玩家.但是没有任何帮助. 以下是我的代码片段. private int minBufSize; private AudioRecord recorder; private int sampleRate = 44100; private int channelConfig = AudioFormat.CHANNEL_IN_MONO; private int audioFormat = AudioFormat.ENCODING_PCM_16BIT; private boolean status; minBufSize = AudioRecord.getMinBufferSize(sample
4 2024-02-17
编程技术问答社区
Soundtouch库的编译问题
我正在尝试使用Android NDK编译SoundTouch库.我成功安装了SoundTouch库所需的Cygwin和Swig.当我尝试运行ndk-build.cmd时,我会遇到错误 jni/soundtouch/wrapper_wrap.cpp:在函数'void java_com_com_talkingyeti_jni2_wrapperjni_soundtouch_1putssamples(jnienv*,_jclass*,jlong​​,jlong​​,jlong​​,_jobject*,jlong​​,jlong​​,jlong​​,jlong​​,jlong​​)': jni/soundtouch/wrapper_wrap.cpp:545:错误:在此范围中未声明'Sampletype' jni/soundtouch/wrapper_wrap.cpp:545:错误:'arg2'在此范围中未声明 jni/soundtouch/wrapper_wrap.cpp:553:错误:预期
访问本地音频记录
我需要访问本机Audiorecord类,但是它不能通过标准API暴露. 当我尝试使用NDK包含AudioreCord.h的代码时,它找不到标题文件.如何修改"制作文件"指向LIB媒体目录并与libmedia..o链接?我已经下载并编译了Android源,我只是在浏览Android Build System时遇到了麻烦. 生成的应用程序将需要扎根设备吗? 有人在本机代码中使用AudioreCord类的示例吗? 解决方案 您必须在android.mk文件中添加媒体/audiorecord.h的目录. 您可以在此处看到一个示例
0 2024-02-17
编程技术问答社区
如何从'onActivityResult()'播放录制的音频文件?
我正在使用 this 库在我的应用中录制音频. 这是我的代码: recordDefectAudio.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (ContextCompat.checkSelfPermission(getBaseContext(), android.Manifest.permission.RECORD_AUDIO) + ContextCompat.checkSelfPermission(getBaseContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.request
4 2024-02-17
编程技术问答社区
安卓系统使我的应用程序文件只能从应用程序内部播放
我创建了一个应用程序,客户端可以记录几次对话并存储在外部存储中.客户必须能够在需要时传输文件.因此,我将记录的文件存储在外部存储中.但是客户不希望在应用程序外部(从SD卡)或音乐播放器外部播放文件.是否可以?请告诉我.使用内部存储是唯一的方法吗? 解决方案 这不是编程问题,而是... 您在这里有2个选项,请根据您的要求决定 1)如果您希望记录不出现在任何播放器中 或多媒体应用程序,您有2个选项: a - 让存储文件夹名称始于. (例如,.myrecords) 或者 b - 在名为.nomedia 的文件夹中添加文件 但这不会保护记录,好像有人安装了SD卡记录可以在任何设备/PC 上复制并播放 2)如果要保护文件,则需要按照Joey Chong的建议进行加密 因此,一旦录制完成后,文件就会加密并存储在外部存储中 用户输入播放屏幕并选择一个文件播放后,该应用将首先在新的(临时文件)中解密它,然后播放它,然后删除temp文件,一旦用户离开播放屏幕. - 用于将
10 2024-02-17
编程技术问答社区