小编ale*_*rfb的帖子

难以将原始PCM输出代码从Java移植到Android AudioTrack API

我正在尝试将从Java SE播放chiptunes(NSF,SPC等)音乐文件的应用程序移植到Android.Android API似乎缺少此应用程序用于输出原始PCM音频的javax多媒体类.我在API中找到的最接近的模拟是AudioTrack,所以我一直在努力解决这个问题.

但是,当我尝试通过正在进行的端口运行我的一个示例音乐文件时,我得到的所有内容都是静态的.我怀疑是我设置的AudioTrack有问题.我尝试了各种不同的构造函数,但最后只输出静态.

原始代码中的DataLine设置类似于:

AudioFormat audioFormat = new AudioFormat( AudioFormat.Encoding.PCM_SIGNED,
                44100, 16, 2, 4, 44100, true );
DataLine.Info lineInfo = new DataLine.Info( SourceDataLine.class, audioFormat );
DataLine line = (SourceDataLine)AudioSystem.getLine( lineInfo );
Run Code Online (Sandbox Code Playgroud)

我现在使用的构造函数是:

AudioTrack = new AudioTrack( AudioManager.STREAM_MUSIC,
        44100,
        AudioFormat.CHANNEL_CONFIGURATION_STEREO,
        AudioFormat.ENCODING_PCM_16BIT,
        AudioTrack.getMinBufferSize( 44100,
                AudioFormat.CHANNEL_CONFIGURATION_STEREO,
                AudioFormat.ENCODING_PCM_16BIT ),
        AudioTrack.MODE_STREAM );
Run Code Online (Sandbox Code Playgroud)

我已经更新了常量和变量,因此它们尽可能简洁有意义,但我的基本问题是,当我从一种格式转换到另一种格式时,我做出的假设是否存在任何明显的问题.

java audio android pcm

8
推荐指数
1
解决办法
4172
查看次数

标签 统计

android ×1

audio ×1

java ×1

pcm ×1