我正在尝试使用 opensl 从 uri 流式传输音频文件。我想立即播放它,但也可以在播放器播放完文件后访问流数据。
我知道数据在内存中的某个地方,因为我可以在流式音频播放期间使用搜索。此外,当播放器完成播放流式音频文件时,我会停止播放器,这会将播放器位置设置回“0”,在那里我可以再次开始播放音频。
我需要访问这些数据,但它在哪里?我能以某种方式获得指向它的指针吗?
我正在尝试使用 opensl 从 uri 流式传输音频文件。我想立即播放它,但也可以在播放器播放完文件后访问流数据。
我知道数据在内存中的某个地方,因为我可以在流式音频播放期间使用搜索。此外,当播放器完成播放流式音频文件时,我会停止播放器,这会将播放器位置设置回“0”,在那里我可以再次开始播放音频。
我需要访问这些数据,但它在哪里?我能以某种方式获得指向它的指针吗?
如果您通过网络流式传输内容,我不确定您尝试做的事情是否可行。
但是,从 Android API 14 开始,可以使用音频播放器设备将内容解码为 PCM 格式的缓冲区队列数据源。
有关这方面的更多信息,请查看 NDK 文档 /docs/opensles/index.html
将音频解码为 PCM 注意:此功能在 API 级别 14 及更高级别可用。标准音频播放器播放到音频设备,数据接收器被指定为输出混合。但是,作为 Android 扩展,如果数据源指定为具有 MIME 数据格式的 URI 或 Android 文件描述符数据定位器,并且数据接收器是具有 PCM 数据的 Android 简单缓冲区队列数据定位器,则音频播放器将充当解码器格式。