在安卓定制ROM中修改通话中的语音播放
我想修改Android OS(来自AOSP的官方图像),以将预处理添加到普通的电话播放声音中. 我已经实现了应用App Audio播放的过滤(通过修改 hal 和 audioflinger ). 我只能针对特定设备(Nexus 5x).另外,我只需要过滤播放 - 我不在乎录制(上行链路). 更新#1: 要清楚 - 我可以修改特定于Qualcomm的驱动程序,或者在Nexus 5X上运行的任何部分,可以帮助我修改呼叫播放. 更新#2: 我正在尝试创建一个Java层应用程序,该应用程序可以实时将手机播放到音乐流. 我已经成功地将其安装为系统应用程序,并使用AudioSource.VOICE_DOWNLINK获得了初始化AudioRecord的权限.但是,录音提供了空白样本;它不会记录语音调用. 这是我的工作人员线程中的代码: // Start recording int recBufferSize = AudioRecord.getMin
0 2024-02-18
编程技术问答社区
是否可以动态链接到libcsd-client.so,以便在Galaxy S4 I9505上实现通话语音录制?
i9505在APQ8064T上运行,与上一代MSM8960相比,芯片组上的HAL层在芯片组上设置音频录制音频路径的方式发生了变化.现在,除了在内核中设置正确的搅拌机控件外,它还需要通过libcs​​d-client.so(Qualcomm专有,关闭源)库来发送某种"魔术"命令到基本调制解调器. . Google由dlsym libcs​​d-client.so在HAL层的Nexus 4(运行APQ8064)执行此操作(请参阅 csd_start_record 函数). However, using the AudioRecord API with MediaRecorder.AudioSource.VOICE_DOWNLINK at App level won't work because audiopolicymanagerbase.cpp 已被硬编码用于使用" audio_channel_in_in_ino"或" audio_channel_in_stereo"的频道掩码,只有在
0 2024-02-17
编程技术问答社区
安卓OpenAL?
是否有人为Android建立了开放式的,还是在系统上找到了共享库?这似乎是对任何一种游戏的需求,但是没有资源.看来Android Java声音库无法与我所能说的那样进行音调变化,因此似乎需要开放.我知道可以在ALSA的顶部建造开放式柔软,但是我不确定是否有人这样做,我敢肯定这会花一个月的时间. 如果在没有开放式的Android上进行声音操纵的某个地方,那也很好.只是开放式是游戏制造商的标准,很高兴将我的数千条线移到这个系统上,我认为这是NDK的重点,然后我发现几乎没有它系统上共享库访问. 谢谢..我希望我能在不成为Java专家的情况下进行端口.到目前为止,真的不喜欢NDK! 解决方案 现在有几个选项可用于NDK音频: 这不是开放的,但是OpenSL ES 1.0.1是API 9级(2.3)的NDK的官方部分.更多信息在这里. openal soft 在其git master中具有OpenSL ES后端(从版本1.13开始未发布).但是,此时在Android
0 2024-02-17
编程技术问答社区
使用Mediaplayer时出现错误-19,0?
E/MediaPlayer(20473): error (-19, 0) I/MyApp (20473): Decoding lala.mp3 I/StagefrightPlayer( 68): setDataSource('mypath') E/AudioFlinger( 68): no more track names available E/AudioTrack( 68): AudioFlinger could not create track, status: -12 E/AudioSink( 68): Unable to create audio track 任何1知道我为什么得到这个吗?这通常是在使用MediaPlayer播放大约100多个SO音频文件之后发生的.我像这样玩 public RenderResultFormat DoIt() { if(mp!=null){ mp.release();
0 2024-02-17
编程技术问答社区
安卓:如何配置 "tinymix",用 "tinycap "录制系统音频
在Android中,目前不可能使用Android-SDK记录System-Adio. 因此,我和Tinyalsa一起玩了一点(自Android 4以来),希望我可以重新安排音频,以便我可以记录下来. 当我在设备上调用" tinymix"时,我会得到以下配置: ctl type num name value 0 ENUM 1 DL1 Equalizer Flat response 1 ENUM 1 DL2 Left Equalizer 450Hz High-pass 2 ENUM 1 DL2 Right Equalizer 450Hz High-pass
2 2024-02-04
编程技术问答社区
通话录音--让它在Nexus 5X上工作(可以用root或自定义ROM)。
我正在尝试在Nexus 5x上使用AudioRecord AudioRecord Android 7.1(我自己的AOSP构建). 我已经超过了权限阶段 - 将我的APK移至特权应用程序,对Android源中的AudioRecord进行了调整,以停止对此源进行例外. 现在,我在打电话期间得到空录制缓冲区. 我知道有很多呼叫录制应用程序,并且它们在其他设备上使用. 我还看到了某些可以在扎根的N5上执行一些黑客攻击并使其正常工作的应用程序. 我希望在Nexus 5X上实现同样的功能 - 对我来说,任何调整都可以,包括更改Android版本,修改Qualcomm驱动程序,设备配置文件等.-基本上是在自定义ROM中可以实现的任何事情. 我尝试使用平台代码 - 硬件/qcom/audio/hal/voice.c,尤其是函数voice_check_and_set_incall_rec_usecase,但到目前为止却没有意义. 还检查了设备/lge/bullhead
2 2024-02-02
编程技术问答社区
Android-x86中没有音频
我已经设置了一个我已经遇到了一些我遇到的麻烦(没有为设备提供ISO),但是我无法使声音正常工作. Android-X86 VirtualBox教程和其他在线资源指示我使用Soundblaster 16的ALSA驱动程序,但这尚未起作用. this 问题使我看到了一些Alsa命令看看我能找到的东西,但我没有到任何地方. 使用ALSA驱动程序和Soundblaster控制器,我从alsa_ctl init 中获得以下内容 Unknown hardware: "Dummy" "Dummy Mixer" Hardware is initialized using a guess method 这对我来说看起来很错,所以像另一个问题一样切换到英特尔高清音频. 使用ALSA驱动程序和Intel HD音频控制器,我从alsa_ctl init 中获得以下内容 Unknown hardware: "HDA-Intel" "SigmaTel ID 7680" ... Hard
2 2024-01-31
编程技术问答社区
安卓音频记录-不能第二次初始化
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.
20 2024-01-31
编程技术问答社区
Android > 4.0 : 如何录制/捕捉内部音频(如STREAM_MUSIC)的想法?
几个月前,使用Android IC(4.0),我开发了一个Android内核模块,该模块拦截了" PCMC0D0P" - 模块以获取所有系统音频. 我的目标是通过Airplay将所有音频(或至少是播放的音乐)流式传输到远程扬声器. 内核模块有效,但是在那里有几个问题(内核 - 反面,根特你等),所以我停止了工作. 现在,我们有Android 4.1和4.2,我有新的希望! 谁有一个想法在Android中捕获音频? 我有以下想法: 通过蓝牙连接同一部手机,将路由设置为BT并在"另一端"上抓住音频:这不应该工作 与以前完成的内核模块拦截音频:硬核,使它起作用,但不适用 使用pulseaudio作为Audioflinger的替代品,但这也不适用 编辑(忘记他们): 我从 我测试了 我刚刚找到 支持实时音频路由的设备将允许媒体音频 流将路由到支持目的地.这可以包括 设备本身上的内部扬声器或音频插孔,A2DP设备, 以及更多.
0 2024-01-30
编程技术问答社区
安卓版OpenSL ES的教程
我一直在尝试使用可用于使用Android 2.3进行本机音频的OpenSL ES库,但是看来标题文件和规格的600页PDF是唯一可用的文档. 我应该在哪里寻找示例,教程或功能的简要概述? 解决方案 有一个示例应用程序随附NDK,称为> Nativeaudio .它具有几乎所有您想要实现的示例:效果,流媒体,合成等.如果您查看其代码,您将获得一个很好的开始. 其他解决方案 您还可以检查Victor Lazzarini的音频编程博客,它具有一个Android部分: .com/category/android/ 在那里您会找到有效的示例,它们对我开始使用OpenSL非常有用,可以用作使用NDK开发音频应用的基础. ,而且,请不要忽略规格文档,毕竟不久,第一部分不超过五十页,并为您提供了了解所有内容的工作方式所需的观点,其余的就是参考使用.请注意,Android OpenSL实现中的某些内容与规格不同:有关此此信息的更多信息,请参见您的ndk-directory/d
4 2024-01-30
编程技术问答社区
使用Snapdragon MSM8960 SoC在通话中注入上行链路音频
我一直在调查MSM8960的特定于此主题.我查看了从手机上的ALSA配置文件中,似乎在呼叫语音播放中是通过/dev/snd/pcmC0D0p完成的,或者至少符合ALSA范式.是否可以使用其中一个文件描述符来实现目的?我确实在libalsa-intf中看到了一些有趣的use_case定义. 解决方案 MSM8960提供了一个名为Incall_Music Audio Mixer的ALSA控件,您可以将CPU DAIS MultiMedia1和MultiMedia2连接到该控件(分别对应于ALSA设备pcmC0D0p和pcmC0D1p). (请参阅因此,如果您的语音通话正在运行,并且想通过pcmC0D0p在上行链路上播放一些音频,则可以通过adb shell进行此操作(假设您已经访问了root访问): amix 'Incall_Music Audio Mixer MultiMedia1' 1 aplay -Dhw:0,0 mono_8khz_audio.wav 更优雅的方法是
0 2024-01-27
编程技术问答社区
在安卓系统中重定向音频/创建备用的声音路径
有没有人可以通过重定向音频或在Android中创建新的声音路径的经验(使用OpenSL ES,ALSA等)?最终目标是创建一个虚拟麦克风来替换外部麦克风,在那里可以播放音频文件,就好像他们在麦克风中说话一样.使用AudioSource.MIC访问麦克风的应用程序应使用此替代流.它没有必要与语音通话一起工作,我相信实现这种功能更难,因为它在广播中都完成了. 关于从哪里开始的任何想法?我已经对OpenSL和ALSA进行了一些研究,但是看来我需要打包新的固件(ROM)才能定义自定义音频路径.如果可以避免,我想创建一个应用程序级解决方案.手机是"扎根"的(有二进制文件).此目标设备是三星Galaxy S4 Google Edition(GT-I9505G).具体来说,我正在寻找音频驱动程序配置/源代码或I9505G的任何引用. 预先感谢! 编辑 - 我已经检查了Cyanogenmod 10.2源树,以及JFLTEXX驱动程序和内核.这是内核/三星/JF/声音的内容: http:
10 2024-01-27
编程技术问答社区
yocto中的Pulseaudio构建问题
我正在使用Raspberry Pi 3模型B.我在构建BitBake Pulseaudio时面临构建问题.请找到我的配置详细信息: Yocto:jethro分支 pulseaudio.inc rdepends_pulseaudio-server += " alsa-plugins pulseaudio-conf" 我们正在使用alsa-plugins_1.0.29.bb bitbake pulseaudio 错误:没有任何rprovides'Alsa-plugins-pulseaudio-conf'(但是/home/guest/guest/openembedded-core/meta/meta/recipes-multimedia/pulseaudio/pulseaudio/pulseaudio_6.6.6.0.bb > 注意:运行时目标'alsa-plugins pulseaudio-conf'是无法塑造的,可以删除... 缺失或无法建造的依赖链是:['alsa-p
2 2023-12-25
编程技术问答社区
升级(覆盖)自定义层中的整个配方
我在项目中有一个自定义层.这与同事共享. 我的发行版(poky)它使用了旧版本的Alsa.这将在构建区域的初始设置上下载.我想用以后的版本"替换"该版本的ALSA,然后在我的自定义层中执行此操作,以便他们不必在Poky中编辑/替换食谱. 最好的方法是什么?如果我只下载了较新的食谱并将其包含在我的层中(与文件系统名称匹配),它将自动使用以后的版本,还是我需要做其他事情? 解决方案 您进行的方式是正确的方法,您应该在自己的图层上添加新的配方/bbappend文件,默认情况下,您不应修改Yocto的基础层或第三方层.但是,由于您想添加一个新版本的现有食谱,因此请记住: 您必须检查自己层的优先级以及包含原始食谱的图层的优先级. Yocto将选择较高优先级层的食谱,无论它是否是较新版本(忽略PV).有关更多信息,请在YOCTO项目参考手册中搜索BBFILE_PRIORITY. (您还可以通过命令bitbake-layers show-layers查看所有配置层的列表及其优
2 2023-12-25
编程技术问答社区
我不能用Python播放音频
我尝试了所有库,现在我正在尝试使用Pygame的混音器,我在ALSA驱动程序中有很多问题: ALSA lib confmisc.c:767:(parse_card) cannot find card '0' ALSA lib conf.c:4693:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings ALSA lib conf.c:4693:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory ALSA lib confmisc.c:1246:(snd_func_refer) error
6 2023-12-06
编程技术问答社区
如何使用ALSA在缓冲区内录制声音
我开始学习Linux和ALSA,我想知道是否有一种方法可以将我从麦克风直接录制的声音直接录制到缓冲区.我在这里阅读 http://wwwww.linuxjournal.com/article.com/article/article/6735?page=page=page=page=page = 0,2 如何制作我的录制程序.但是我需要的是更复杂的.我需要录制声音,直到我击中钥匙.我之所以需要这是因为我弄乱了Raspberrypi(Debian),并查看是否可以将其转换为声音监视/检测设备. 我的主要问题是,当我尝试使用它来记录(./rec> name.raw)时,它无能为力.它只是输出一个空的.raw文件. #define ALSA_PCM_NEW_HW_PARAMS_API #include #include struct termios stdin_orig; // Structure to save pa
8 2023-12-03
编程技术问答社区
录制成WAV文件
自从我发布这个问题,我一直在尝试写作我自己从RAW PCM数据中自己一个有效的WAV文件.我设法编写了FLAC转换器(已测试和工作),但它没有编码我一直在写的WAV文件. 我不确定我在做什么错.我一直在搜寻互联网,浏览这是降低的源代码(对不起,它仍然有点长,需要一些代码才能单独记录到.wav): // Compile with "g++ test.ccp -o test -lasound" // Use the newer ALSA API #define ALSA_PCM_NEW_HW_PARAMS_API #include #include #include #include #include struct WaveHeader { char RIFF_marker[4]; uint32_t file_size;
0 2023-11-27
编程技术问答社区
ALSA lib pcm_hw.c:1667:(_snd_pcm_hw_open) 卡arecord的无效值: main:722: 音频打开错误。没有这样的文件或目录
我正在致力于语音识别.为此,我正在使用" alsa-utils",但是当我尝试使用此脚本 时 #!/bin/bash echo “Recording… Press Ctrl+C to Stop.” arecord -D plughw:1,0 -q -f cd -t wav | ffmpeg -loglevel panic -y -i – -ar 16000 -acodec flac file.flac > /dev/null 2>&1 echo “Processing…” wget -q -U “Mozilla/5.0” –post-file file.flac –header “Content-Type: audio/x-flac; rate=16000” -O – “http://www.google.com/speech-api/v1/recognize?lang=en-us&client=chromium” | cut -d” -f12 >stt.txt ech
26 2023-11-25
编程技术问答社区
模拟话筒(虚拟话筒)
我有一个问题,需要"模拟"麦克风输出. 数据将越过网络,被解码为PCM,并且基本上需要写入麦克风 - 然后其他程序可以读取/记录/ersect/whting. 我一直在阅读ALSA,但信息非常稀少.文件插件似乎很有希望 - 我正在考虑将命名的管道作为" ifile",然后可以从应用程序中将数据传递到我的应用程序中.但是,我无法正常工作(VLC/Audacity Just Segfault). pcm.testing { type file slave { pcm { type hw card 0 device 0 } } infile "/dev/urandom" format "raw" } 有什么更好的方法吗?关于ALSA插件的任何建议(尤其是文件插件)? 解决方案 您的声音将越过网络,直到想阅读东西才能缓存它?还是数据会被丢弃? 通常,像以下内容(仅几乎没有测试)应该用作虚拟麦克风
26 2023-11-19
编程技术问答社区
将void*转换为memcpy,以获得一个浮动的值
这是我要解决的问题的一个示例,我从麦克风中获得了一个缓冲区,并尝试处理IT内容.从这个问题中友善地指导 im试图将char*转换为float* 我声明了一个向量保存所需的浮点的逻辑,然后将其调整到arbuffer()的逻辑大小,然后复制到向量. arbuffer()是否必须将其施放给memcpy? #include "Lib_api.h" #include #include #include "audiorecorder.h" #include "Globals.h" #include #include #include #include #include #include using namespace std; //Declare Creation void* mCore;
4 2023-11-17
编程技术问答社区