草庐IT

AudioTrack

全部标签

Android AudioRecord 和 AudioTrack 编解码器选项?

我目前在Android中使用AudioTrack和AudioRecord类。我使用纯PCM数据,但我想知道其他编解码器有哪些选择?来自thispage好像只能用AMR窄带编解码?我目前按如下方式设置音频类:arec=newAudioRecord(MediaRecorder.AudioSource.MIC,11025,AudioFormat.CHANNEL_CONFIGURATION_MONO,AudioFormat.ENCODING_PCM_16BIT,buffersize);atrack=newAudioTrack(AudioManager.STREAM_VOICE_CALL,110

Android - 将多个静态波形混合到一个 AudioTrack 中

我正在创建一个类,该类采用一组频率值(即440Hz、880Hz、1760Hz)并播放它们将如何组合到单个AudioTrack中。我不是一个声音程序员,所以这对我自己来说很难写,我相信这对一个有经验的声音程序员来说是一个相对容易的问题。以下是play方法中的一些代码:publicvoidplay(){//Getarrayoffrequencieswiththeirrelativestrengthsdouble[][]soundData=getData();//TODO//Performacalculationtofillanarraywiththemixedsound-thenplayi

android - 无法检索 write() 的 AudioTrack 指针

我正在尝试实现AudioTrack以在我的android设备中检索来自IAX的来电的音频,但一段时间后遇到异常。privatevoidwriteBuff(short[]buf){try{if(this.track==null){Log.w("IAX2Audio","write()withoutanAudioTrack");return;}intwritten=0;while(written异常在这里04-2718:26:15.865:W/System.err(12681):java.lang.IllegalStateException:UnabletoretrieveAudioTrac

android - AudioTrack 的内存泄漏

我在AudioTrack和MediaSync一起使用时遇到严重的内存泄漏问题。在我看来,问题是AudioTrack没有释放一些原生资源。因此,该应用程序只能运行几次,之后,由于不再有可用的轨道,因此无法创建AudioTrack。下面是一个导致内存泄漏的简短示例。可以下载完整的项目here在GitHub上。APK文件可以下载here.finalMediaSyncmediaSync=newMediaSync();mediaSync.setSurface(mSurface);finalSurfaceinputSurface=mediaSync.createInputSurface();//T

java - 从 ByteStream 可视化 Android AudioTrack

我目前正在使用AudioTrack播放录制的音乐。这涉及将轨道数据写入音频缓冲区。我将如何使用音频数据流在屏幕上绘制代表正在实时播放的音频的波形?在不确定如何开始之前,我没有在android上使用过任何高级图形。我必须使用openGL还是可以实现View?以及如何将数据转换为对绘图有用的东西。 最佳答案 第一步是调用setPositionNotificationPeriod(periodInFrames)。这决定了您的应用程序接收onPeriodicNotification调用的频率。因此,如果您正在进行示波器类型的可视化,并且希望

Android 音频流 - 在 AudioTrack 上获取静态噪声

我有一个在本地主机上运行的流媒体服务器。当我尝试从我的Android应用程序流式传输音频时。大多数时候我都会收到静电噪声(radio里听到的那种)。有时完整的音频是静态噪声,有时是其中的一部分,有时音频播放得很好,所以我不确定出了什么问题。这是来self的android应用程序的流代码:newThread(newRunnable(){@Overridepublicvoidrun(){try{URIuri=URI.create("http://192.168.1.6:5000/api/tts");HttpURLConnectionurlConnection=(HttpURLConnect

android - 音轨发布

我想知道是否需要在音轨上调用释放?例如,在我的以下代码中,我在一个方法中实例化了一个AudioTrack实例,并且不对其调用release(因为那样会停止播放)。这有什么影响?publicvoidplayTone(){float[]output=createTone();AudioTracktrack=newAudioTrack(AudioManager.STREAM_RING,44100,AudioFormat.CHANNEL_OUT_MONO,AudioFormat.ENCODING_PCM_16BIT,(output.length*4),AudioTrack.MODE_STATI

java - 通过解码 Base64 播放音频

我的数据库有很多base64格式的短音频。我想在单击按钮时播放音频。基本上,我写了这段代码,但它不起作用。(如果可能,文件最好不要写入存储,因为这个过程有延迟)playButton.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){try{Stringurl="data:audio/mp3;base64,"+base64FormattedString;MediaPlayermediaPlayer=newMediaPlayer();mediaPlayer.setDataSource

android - AudioTrack Android 播放原始文件夹中的声音

是否可以使用资源文件夹raw中的AudioTrack播放wav文件?它尝试了很多方法来引用我的Android项目中的原始文件,但我遇到了很多异常。这就是我现在拥有的,但是当我按下按钮时,没有声音播放。publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);ButtonbuttonPlayAudioTrack=(Button)findViewById(R.id.buttonPlayAudioTrack);buttonPlayAudioTrack.setOnClickListener(t

android - 通过耳机播放音乐时通过扬声器播放声音

我有一个通过耳机播放的AudioTrack。我必须仅将SoundPool发送到内置扬声器,而不会中断通过耳机播放的AudioTrack。有黑客黑帮吗? 最佳答案 许多Android设备在AudioFlinger/音频HAL中使用单个输出线程进行所有本地播放(听筒、扬声器、有线耳麦/耳机),使得两个音轨的不同路由不可能同时进行(这就是为什么在许多设备上媒体流如果播放通知并且您连接了有线耳机,则强制静音;否则您会在播放通知时听到扬声器中的音乐)。在某些设备上,如果您设法执行setForceUse(FOR_MEDIA,FORCE_SPEA