Articles of audiotrack

如何判断AudioTrack对象何时播放?

我正在尝试使用AudioTrack类在Android中播放PCM文件。 我可以让文件播放得很好,但是我无法可靠地判断播放完成的时间。 AudioTrack.getPlayState表示播放未完成播放时已停止播放。 我对AudioTrack.setNotificationMarkerPosition有同样的问题,我很确定我的标记设置在文件的末尾(虽然我不完全确定我做得对)。 同样,当getPlaybackHeadPosition位于文件末尾并且已停止递增时,播放将继续。 有人可以帮忙吗?

SoundPool错误:没有更多可用的曲目名称

我在使用soundpool课程时遇到了麻烦。 它来了: 在我的游戏应用程序(音乐应用程序顺便说一句)我需要同时重现至少32个短音,所以我声明我的音池: private SoundPool sp; sp = new SoundPool(128, AudioManager.STREAM_MUSIC, 0); 之后我加载了所需的所有MP3声音,大约80个声音,每个55KB。 我没有加载所有声音的麻烦,但它很慢! 嗯,这不是问题。 真正的麻烦是当我同时播放大约20个声音时,我的日志中出现错误: ERROR/AudioFlinger(59): no more track names available ERROR/AudioTrack(26349): AudioFlinger could not create track, status: -12 ERROR/SoundPool(26349): Error creating AudioTrack 之后,我尝试播放的每个声音都会抛出相同的错误,并且无法播放声音。 甚至没有另一个Activity / soundpool的声音。 我不知道发生了什么或如何解决它! 我应该改变声音文件的格式吗? 播放声音后我应该释放内存吗? (我正在测试三星Galaxy S I9000,2.3.3操作系统。该应用程序是2.1)

android中的帧到毫秒转换

在Android中, AudioTrack类的getPlaybackHeadPosition ()方法返回以帧表示的回放头位置,以毫秒为单位的等值值是多少?

使用AudioTrack播放循环音频

我有一个function,我想过渡到使用Androids AudioTrack而不是MediaPlayer ,因为MediaPlayer有一些众所周知的错误,例如循环轨道之间出现的小间隙。 我被推荐使用AudioTrack但没有find很多使用它的例子。 我确实在SO上find了一个关于AudioTrack的问题,并使用了一些代码来解决一些问题: public class TestActivity extends Activity implements Runnable { Button playButton; byte[] byteData = null; int bufSize; AudioTrack myAT = null; Thread playThread = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); playButton = (Button) findViewById(R.id.testButton); InputStream inputStream = getResources().openRawResource(R.raw.whitenoise_wav); try { byteData = new byte[ inputStream.available()]; } catch (IOException […]

Android:如何使用OpenSL ES更改音乐的播放速率

我正在制作一个音乐播放器,我需要在不改变音高的情况下改变速度(音乐的播放速度)。 我无法find任何本机安卓类。 我试过SoundPool,但它不适用于大型音乐文件,它似乎也不适用于许多设备。 我也试过AudioTrack,但又没有运气。 现在我正在尝试使用OpenSL ES处理音乐的android NDK音频示例。 现在我只想在此示例中添加设置播放速率function。 任何人都可以告诉我如何在其中添加更改播放率function?

即时音频输入和输出Android

在我的Android应用程序中,我想从智能手机的麦克风中获取一些音频并立即播放,像麦克风一样直播,没有延迟。 我目前正在考虑使用AudioRecord和AudioTrack类(从我读过的内容),但我不太清楚如何继续。 我查看了Stack Overflow上的其他一些问题,但是他们并没有完全回答我想做的事情。 大多数是2012年。 那么如何使用这些类同时输入和输出音频呢? 另外:我看过MediaRecorder API ,但是根据我的阅读,这需要你将音频保存到文件中,我不想这样做。 可以通过tweek来满足我的要求吗? 或者我最好只使用AudioRecord ? 谢谢 编辑: 以下是我在@Pradip Pramanick建议的更新代码: final Thread record = new Thread(new Runnable() { @Override public void run() { while (!Thread.interrupted()) { MediaRecorder microphone = new MediaRecorder(); microphone.setAudioSource(MediaRecorder.AudioSource.MIC); microphone.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); microphone.setOutputFile(filename); microphone.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); try { microphone.prepare(); } catch (IOException e) { e.printStackTrace(); } microphone.start(); } } }); […]

PCM Raw Bytes 到Android上的音频

我目前有一个字节数组forms的PCM音频。 格式是16位小端的签名。 我想将它转换为Android上的一些可播放格式,最好是版本3.2或更高版本。 有人有关于如何做到这一点的建议吗? 我做了一些研究并尝试了下面的内容,但都没有成功。 如果有人能提出更好的方法或指出我出错的地方,我们将不胜感激。 我尝试使用正确的音频设置创建AudioFormat,但Android不支持javax.sound.sampled库。 我也尝试将PCM数据写入wave文件,但是我遇到了所有必要的wav头信息。 我也尝试使用Android提供的AudioTrack类来播放PCM数据。 但是,我似乎听不到任何声音。 这是我的方法: public void playback(){ try{ AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL, 8000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, 500000, AudioTrack.MODE_STATIC); audioTrack.write(audio, 0, 500000); } catch(Throwable t){ Log.d(“Audio”,”Playback Failed”); } } 任何建议,将不胜感激。

我应该使用AudioTrack,SoundPool还是MediaPlayer?

我需要播放多个音频文件,持续时间不同,比如5到30秒。 我想为右/左声道独立设置音量,也可以应用效果,如Reverb或Distortion。 那么,我应该使用哪种API? 另外,我在AudioTrack API上找不到太多的文档。 你知道我在哪里可以find例子吗? 谢谢。

客户拒绝了AUDIO_OUTPUT_FLAG_FAST

我收到了这个AudioTrack警告 AUDIO_OUTPUT_FLAG_FAST denied by client 在我的Android应用程序中的按钮我是子类。 点击按钮时我可以听到咔嗒声,这有什么值得担心的吗? 注意:我没有得到如此问题中的不匹配采样率消息:由于采样率不匹配,AudioTrack:AUDIO_OUTPUT_FLAG_FAST被客户拒绝

ExoPlayer AudioTrack Stuttering

我有自己的TrackRenderer实现,用于我集成的mp3解码器。 当棒棒糖设备进入待机状态并返回时,它并不总是可重复但音频开始断断续续,直到我强制停止应用程序。 一开始,我认为这是我实现的解码器,所以我尝试将口吃轨道与正常轨道之间的文件输出进行比较。 这些文件是相同的,然后我认为它可能需要很长时间来解码,所以我增加了缓冲区大小并调用了setPlayReady false,以便数据缓冲。 它像我没有停顿一样口吃。 我目前认为问题在于我的音轨实现或操作系统错误。 该错误仅发生在Lollipop设备上。 谢谢。 我的TrackRenderer使用与AudioTrackRenderer相同的工作流程,我自己的原生实现为mp3解码器而不是opus。