问题描述
我正在使用图书馆 org.gagravarr:vorbis-java-core:0.8
(https://github.com/Gagravarr/VorbisJava)。
我想从 OGG 文件中获取 PCM 数据并使用 AudioTrack 播放它。使用 AudioTrack 对我来说是必需的,因为我稍后需要在播放时连接多个 PCM 数据以获得最流畅的播放。
如下所示,我尝试使用与文件匹配的数据设置AudioTrack,使用库读取文件内容,并将其直接写入AudioTrack,但结果播放时没有音频。
我检查了循环,我确定数据被正确读取。
AudioTrack track = new AudioTrack.Builder()
.setAudioAttributes(new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.setUsage(AudioAttributes.USAGE_MEDIA)
.build()
)
.setAudioFormat(new AudioFormat.Builder()
.setEncoding(AudioFormat.ENCODING_PCM_16BIT)
.setSampleRate(44100)
.setChannelMask(AudioFormat.CHANNEL_OUT_STEREO)
.build()
)
.setPerformanceMode(AudioTrack.PERFORMANCE_MODE_LOW_LATENCY)
.build();
FileInputStream fileInputStream = new FileInputStream(
this.currentSong.getTrackFile("03")
);
OggFile oggFile = new OggFile(fileInputStream);
OggPacketReader oggPacketReader = oggFile.getPacketReader();
int written = 0;
while (true) {
OggPacket oggPacket = oggPacketReader.getNextPacket();
if (oggPacket == null) break;
byte[] data = oggPacket.getData();
track.write(data,written,data.length);
written += data.length;
}
track.play();
这里是关于我正在尝试阅读的文件的一些信息:
我是否为此使用了适当的库?我最近看到了一个叫做 MediaCodec 的东西来使用低级编解码器,但我不知道从哪里开始......
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)