android - 我如何发送带有 url 的 HTTP 标头以在 Android 中流式传输音频
问题描述
有谁知道一个好的音频流库,我可以设置音频文件的 url 并通过请求传递 Http 标头?我尝试了以下方法,但它不稳定,它适用于某些设备而不适用于其他设备
@Override
protected Boolean doInBackground(String... strings) {
boolean prepared = false;
try {
String url = strings[0];
Map<String, String> map = new HashMap<>();
map.put("Accept", "audio/mp3");
map.put("x-api-key", "mykey");
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
Method method = mediaPlayer.getClass().getMethod("setDataSource", new Class[]{String.class, Map.class});
method.invoke(mediaPlayer, new Object[]{url, map});
mediaPlayer.prepare();
prepared = true;
} catch (Exception e) {
prepared = false;
}
return prepared;
}
解决方案
也许你可以试试ExoPlayer
对于标题,当您在其上创建媒体源时,您可以像这样设置标题
private fun buildMediaSource(uri: Uri): MediaSource {
val defaultHttpDataSourceFactory = DefaultHttpDataSourceFactory("exoplayer-kruso")
defaultHttpDataSourceFactory.setDefaultRequestProperty("auth", "token")
return ExtractorMediaSource.Factory(defaultHttpDataSourceFactory).createMediaSource(uri)
}
推荐阅读
- r - 选择数字列名
- python - 使用python获取数据框中某些列(独立)的总数
- c# - 在 Windows 7 上使用带有 NSIS 的 Dotnet 失败
- node.js - 使用 Multer 和 Node 将多个文件上传到 mongoDB
- ssh - SSH Key 提示“ssh -Tv git@gitlab.tubit.tu-berlin.de”的密码
- android - Flutter:使用 InteractiveViewer 双击启用图像放大/缩小
- swift - 快速按顺序查找元素的计数?
- python - 使一个列表成为包含元素的字典
- python - 将正则表达式应用于 urlopen 请求
- python - Numpy:使用掩码为不同的行分配不同的值