【问题标题】:Play mp3 online在线播放 mp3
【发布时间】:2014-06-23 09:05:33
【问题描述】:

我有一个网址:"http://my_server/song.mp3"

我的代码:

String url_song="http://my_server/song.mp3";
MediaPlayer mMediaPlayer=new MediaPlayer();
mMediaPlayer.setDataSource(url_song);
mMediaPlayer.prepare();
mMediaPlayer.start();

但它有错误(100 0),无法播放,我尝试下载这个文件并在本地播放,没关系。 那么,MediaPlayer 在线播放有错误?

有人可以帮我吗?

谢谢大家!

【问题讨论】:

  • 虚拟机是否抛出异常?哪个?
  • 这是异常:E/MediaPlayer(20915): error (100, 0) W/AudioSystem(542): AudioPolicyService 服务器死了! W/System.err(20915): java.io.IOException: Prepare failed.: status=0x64 W/AudioSystem(542): AudioFlinger 服务器死了! W/System.err(20915):在 android.media.MediaPlayer.prepare(Native Method)
  • Sang Nguyen,我也遇到了同样的问题。您是否能够修复它或找到解决方法?谢谢!

标签: android android-mediaplayer audio-streaming


【解决方案1】:

网络流量永远不能在 Android 的 UI 线程中。使用AsyncTask

new AsyncTask<Void,Void,Void>(){
    public Void doInBackground(Void... v) {
        String url_song="http://my_server/song.mp3";
        MediaPlayer mMediaPlayer=new MediaPlayer();
        mMediaPlayer.setDataSource(url_song);
        mMediaPlayer.prepare();
        mMediaPlayer.start();
    }
}.execute();

另外,请确保您的清单中有 Internet 权限。

【讨论】:

  • 感谢 Mark Buikema,我使用了 AsyncTask,但它显示了同样的错误。我确定,我添加了互联网权限
【解决方案2】:

您的错误日志显示 IOException,因此请检查确切的文件是否确实存在。还有对网络流使用prepareAsync,因为它在后台准备流尝试这段代码。还要在你的类中实现 OnPreparedListener 并在那里的 onPrepared 方法中开始播放。

String url_song="http://my_server/song.mp3";
    MediaPlayer mMediaPlayer=new MediaPlayer();
    try{
    mMediaPlayer.setDataSource(url_song);
    mMediaPlayer.prepareAsync();
    }catch(IllegalArgumentException | SecurityException
                | IllegalStateException | IOException e){
     Log.e(TAG, e.toString());
     }

    public void onPrepared(MediaPlayer mp) { mMediaPlayer.start();}

【讨论】:

  • 感谢 Eno,我使用了您的代码,这是日志:W/AudioSystem(353): AudioPolicyService 服务器死了! W/AudioSystem(27985):AudioFlinger 服务器死了! W/IMediaDeathNotifier(27985):媒体服务器死机 E/MediaPlayer(27985):错误 (100, 0) W/AudioSystem(353):AudioFlinger 服务器死机! E/MediaPlayer(27985): 错误 (100,0) 没有错误日志: W/System.err(20915): at android.media.MediaPlayer.prepare(Native Method)
  • 这只是意味着您的媒体服务器已经死机,即不可用确保您的媒体服务器或主机或您尝试播放的文件已启动并运行。
  • 我播放了一些其他网址,但没有相同的错误,它播放正常,只是一些网址错误,我不知道它们有什么问题:(
  • 检查此链接以确保 mp3 符合 android 批准的媒体格式developer.android.com/guide/appendix/media-formats.html
【解决方案3】:

使用 Intent.ACTION_VEW

String url_song="http://my_server/song.mp3";
Intent intent = new Intent(Intent.ACTION_VIEW);                                                                          
intent.setDataAndType(Uri.parse(url_song), "audio/*");
startActivity(intent);

这将让用户选择他们想要播放远程 mp3 的第三方应用程序。类似于打开图像并显示一个对话框,让您选择要使用哪个应用打开图像。

【讨论】:

  • 但我想在我的应用程序上播放它,我曾尝试在 android 上使用默认播放器播放它,但同样的问题,我下载了这个文件并正常播放
  • 您能否至少发布您的代码以便我们检查一下?
猜你喜欢
  • 2012-02-01
  • 2013-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多