jjzjj

audioTracks

全部标签

java - Android 音频编程噩梦 - soundpool,audiotrack arrghh?

我构建了一个简单的音乐音序器Android应用程序,可以播放多个音频文件。最初我使用SoundPool播放mp3文件,它在2.3.4上与旧的HTCDroidIncredible完美配合。然后我在运行4.3的GalaxyNexus上对其进行了测试,性能非常糟糕。到处都是音频时序,并且出现故障/咔哒声/砰砰声。所以我花了几天时间制作了一个使用AudioTrack的播放器,包括一个mp3解码器,并让它在Galaxy和HTC上都能完美运行。现在,我刚刚在Nexus4(运行4.3)上对其进行了测试,性能非常糟糕——时间安排无处不在。SoundPool甚至可以在此设备上提供更好的性能。我真的很沮丧

java - 您如何确定 Android 上的音频延迟 (AudioTrack)?

我有一个应用程序,我在其中以流模式使用AudioTrack来播放动态生成的音频。该应用程序不必立即响应输入,因此延迟问题不会困扰我。问题是我有一个动画需要尽可能精确地与音频“同步”,而且似乎不同的设备在AudioTrack停止之间有不同的时间量阻止write()调用并请求更多数据,以及何时从扬声器播放该音频。我目前的解决方案让我完成了大部分工作——我计算了到目前为止我传递给AudioTrack的帧数,并将其与getPlaybackHeadPosition()。它看起来基本上是这样的:longcurrentTimeInFrames=0;while(playingAudio){curren

android - AudioTrack 的全局死亡

我有一个应用程序,其中有多个线程,每个线程都注入(inject)一个单独的AudioTrack设置为MODE_STREAM。在应用程序之间切换工作正常,当应用程序正常关闭时,它似乎正确关闭了所有内容。但是,如果应用程序在外部终止,例如从调试器终止,或者因为我刚刚在旧版本运行时安装了新版本,似乎全局AudioMixer中的某些状态变得困惑,我得到logcat输出如下:09-1614:50:38.9652987150WAudioTrack:obtainBuffertimedout(istheCPUpegged?)0x83c2348user=00000eb3,server=000000000

高通平台开发系列讲解(Android篇)AudioTrack音频流数据传输

文章目录一、音频流数据传输通道创建1.1、流程描述1.2、流程图解二、音频数据传输2.1、流程描述2.2、流程图解沉淀、分享、成长,让自己和他人都能有所收获!??本篇章主要图解AudioTrack音频流数据传输。一、音频流数据传输通道创建1.1、流程描述AudioTrack在set函数中通过IAudioFlinger(binder机制)调用AudioFlinger的createTrack接口进行设备选择(设备选择详细流程参考AudioTrack创建流程、输出设备选择),音频数据共享内存创建;在PlayBackThread中创建Track,Track继承TrackBase,在TrackBase中

高通平台开发系列讲解(Android篇)AudioTrack音频流数据传输

文章目录一、音频流数据传输通道创建1.1、流程描述1.2、流程图解二、音频数据传输2.1、流程描述2.2、流程图解沉淀、分享、成长,让自己和他人都能有所收获!??本篇章主要图解AudioTrack音频流数据传输。一、音频流数据传输通道创建1.1、流程描述AudioTrack在set函数中通过IAudioFlinger(binder机制)调用AudioFlinger的createTrack接口进行设备选择(设备选择详细流程参考AudioTrack创建流程、输出设备选择),音频数据共享内存创建;在PlayBackThread中创建Track,Track继承TrackBase,在TrackBase中

安卓音视频开发(3)—— AudioTrack两种方式播放pcm音频

前言之前学习了AudioRecord录制pcm音频,与之对应的就是AudioTrack播放pcm音频(MediaPlayer、SoundPool有其他应用场景),它有两种数据加载模式(MODE_STATIC、MODE_STREAM)。模式MODE_STATIC:这种模式下,一次将所有的数据放入一个固定的buffer,然后写入到AudioTrack中,后续就不用继续write了。这种模式占用的内存较小,适用于短小的音频,例如手机铃声和系统提示音等。MODE_STREAM:这种模式会持续的把音频数据写入AudioTrack中,write动作将堵塞直到数据流从java层传输到native层,适用于大

安卓音视频开发(3)—— AudioTrack两种方式播放pcm音频

前言之前学习了AudioRecord录制pcm音频,与之对应的就是AudioTrack播放pcm音频(MediaPlayer、SoundPool有其他应用场景),它有两种数据加载模式(MODE_STATIC、MODE_STREAM)。模式MODE_STATIC:这种模式下,一次将所有的数据放入一个固定的buffer,然后写入到AudioTrack中,后续就不用继续write了。这种模式占用的内存较小,适用于短小的音频,例如手机铃声和系统提示音等。MODE_STREAM:这种模式会持续的把音频数据写入AudioTrack中,write动作将堵塞直到数据流从java层传输到native层,适用于大

android - AudioTrack 即使在停止后也会重新启动

我创建了一个简单的应用程序,它生成一个给定频率的方波,并使用AudioTrack在STREAM模式(STREAM_MUSIC)下播放它。一切似乎都工作正常,声音播放也不错,但是当流完成时,我会在日志中收到消息:W/AudioTrack(7579):obtainBuffer()轨道0x14c228已禁用,正在重新启动...即使在调用stop()函数后,我仍然会得到这些。我相信我根据AudioTrack所需的最小大小(在我的情况下为6x1024)正确设置了AudioTrack缓冲区大小。我用1024条短裤的较小缓冲区喂它。我得到这些可以吗?我应该这样吗? 最佳答

android - AudioTrack 即使在停止后也会重新启动

我创建了一个简单的应用程序,它生成一个给定频率的方波,并使用AudioTrack在STREAM模式(STREAM_MUSIC)下播放它。一切似乎都工作正常,声音播放也不错,但是当流完成时,我会在日志中收到消息:W/AudioTrack(7579):obtainBuffer()轨道0x14c228已禁用,正在重新启动...即使在调用stop()函数后,我仍然会得到这些。我相信我根据AudioTrack所需的最小大小(在我的情况下为6x1024)正确设置了AudioTrack缓冲区大小。我用1024条短裤的较小缓冲区喂它。我得到这些可以吗?我应该这样吗? 最佳答

android - AudioTrack、SoundPool 或 MediaPlayer,我应该使用哪个?

如果我需要能够使用AudioTrack、SoundPool或MediaPlayer:播放多个持续时间不同的音频文件,例如5到30秒。独立设置右/左声道的音量。应用音效,例如混响/失真。那么,我应该使用哪个API?另外,我在AudioTrackAPI上找不到太多文档。有谁知道我在哪里可以找到示例? 最佳答案 SoundPool实际上是一个混音器。它只能播放短片,无论它们是编码为“ogg”还是“mp3”还是未压缩。SoundPool始终将它们存储在未压缩的内存中,并注意限制为1MB。如果您的剪辑在内存中太大,SoundPool将静音,您