从 URL 流式传输和下载音频
Posted
技术标签:
【中文标题】从 URL 流式传输和下载音频【英文标题】:Stream and download audio from URL 【发布时间】:2013-09-21 06:04:45 【问题描述】:我正在开发搜索歌曲并能够播放和下载音乐/歌曲的应用程序。我使用了这个网址 http://tinysong.com/Phdj ,这是重定向到音乐网页并在那里播放歌曲。我用下面的代码来播放歌曲。
//play music
MediaPlayer mMediaPlayer = new MediaPlayer();
mMediaPlayer.setAudiostreamType(AudioManager.STREAM_MUSIC);
try
mMediaPlayer.setDataSource("http://tinysong.com/Phdj");
mMediaPlayer.prepareAsync();
catch(IOException e)
e.printStackTrace();
catch (IllegalArgumentException e)
e.printStackTrace();
catch (IllegalStateException e)
e.printStackTrace();
mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
@Override
public void onPrepared(MediaPlayer mp)
mp.start();
);
错误: 09-21 11:26:49.674: I/MediaPlayer(6735): setLPAflag() in 09-21 11:26:49.674: I/MediaPlayer(6735): mContext 为空,无法获取MirrorDisplayStatus!!! 09-21 11:26:49.674: I/MediaPlayer(6735): setLPAflag() out 09-21 11:26:58.693: E/MediaPlayer(6735): 错误 (1, -2147483648) 09-21 11:26:58.693: E/MediaPlayer(6735): 错误 (1,-2147483648)
androidMedia Library 是否只能播放 .mp3 格式?我可以从上面的 Url 播放音乐吗?我该怎么做?
【问题讨论】:
【参考方案1】:你还没有通过setDataSource()
中的上下文
试试这个
String path="http://tinysong.com/Phdj";
Uri myUri = Uri.parse(path);
MediaPlayer mp = new MediaPlayer();
try
mp.setDataSource(this, myUri);
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.setOnPreparedListener(new OnPreparedListener()
@Override
public void onPrepared(MediaPlayer mp)
mp.start();
// TODO Auto-generated method stub
);
mp.prepareAsync();
catch (IllegalArgumentException e)
// TODO Auto-generated catch block
e.printStackTrace();
catch (SecurityException e)
// TODO Auto-generated catch block
e.printStackTrace();
catch (IllegalStateException e)
// TODO Auto-generated catch block
e.printStackTrace();
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();
【讨论】:
收到此错误:09-21 17:35:50.315: E/MediaPlayer(30342): java.io.FileNotFoundException: 没有内容提供者: tinysong.com/Phdj 09-21 17:35:58.293: E/MediaPlayer(30342): 错误 (1, -2147483648) 09-21 17:35:58.333: E/MediaPlayer(30342): 错误 (1,-2147483648) 您是否创建了对 MediaPlayer 的引用? 抱歉,我是媒体播放器的新手...媒体播放器的引用是什么? 09-21 17:35:50.315: E/MediaPlayer(30342): java.io.FileNotFoundException: 没有内容提供者: tinysong.com/Phdj 09-21 17:35:58.293: E/ MediaPlayer(30342): 错误 (1, -2147483648) 09-21 17:35:58.333: E/MediaPlayer(30342): 错误 (1,-2147483648) 媒体播放器是否只支持.mp3文件?你能检查那个网址并确认我这个网址适合媒体播放器吗?以上是关于从 URL 流式传输和下载音频的主要内容,如果未能解决你的问题,请参考以下文章
使用url从python流传输youtube音频而无需下载python
从 Java Swing App 中的 URL 流式传输音频
如何在具有单独位置 url 和资源 url 的 swift 中从服务器实时流式传输音频?