【问题标题】:Playing .M3U links using Media Player使用媒体播放器播放 .M3U 链接
【发布时间】:2019-01-02 01:06:49
【问题描述】:

我需要使用媒体播放器播放 .M3U 网址,但它不起作用: 这是我的代码:

final MediaPlayer mediaPlayer = new MediaPlayer();
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    try {
        mediaPlayer.setDataSource("http://xxxxxxxxx/1.m3u");
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        mediaPlayer.prepare(); // might take long! (for buffering, etc)
    } catch (IOException e) {
        e.printStackTrace();
    }
    mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

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

我已阅读有关 stackoverflow 的所有相关问题,但这对我没有帮助,

我也尝试使用这种方法提取 .M3U:

    public ArrayList<String> readURLs(String url) {
    if (url == null) return null;
    ArrayList<String> allURls = new ArrayList<String>();
    try {

        URL urls = new URL(url);
        BufferedReader in = new BufferedReader(new InputStreamReader(urls
                .openStream()));
        String str;
        while ((str = in.readLine()) != null) {
            allURls.add(str);

        }
        Toast.makeText(this, allURls + "", Toast.LENGTH_SHORT).show();
        Log.d("URL", String.valueOf(allURls));
        in.close();
        return allURls;
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

但是当我调用它时它也不起作用

readURLs ("http://xxxxxxx.m3u");

所以请帮帮我。

提前致谢!

【问题讨论】:

  • 堆栈跟踪是什么?
  • @TiagoOrnelas 感谢您的关心,请在下面找到logcat错误:E/MediaPlayer: error (1, -2147483648) 07-25 12:18:26.474 11277-11833/com.app.app E/MediaPlayer-JNI: QCMediaPlayer mediaplayer NOT present 07-25 12:18:26.513 11277-11833/com.app.app E/MediaPlayer: Should have subtitle controller already set
  • 您之前是否测试过 .m3u 链接,例如:http://109.94.2.96:8888/1.m3usince 以上帖子无法解决我的问题

标签: java android m3u


【解决方案1】:

我会尝试以不同的方式初始化MediaPlayer:

MediaPlayer player = MediaPlayer.create(this, Uri.parse("http://xxxxxxxxx/1.m3u"));

参考:

Why MediaPlayer throws NOT present error when creating instance of it?

完成后不要忘记释放MediaPlayer。

player.release();

编辑:

我探索了.m3u,但这些包含其他.m3u8播放列表。我建议您改用 Google 的 ExoPlayer,它几乎可以播放所有内容。 https://github.com/google/ExoPlayer

【讨论】:

  • 感谢您的回答,我刚刚尝试过,但它会引发以下错误,java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaPlayer.start()' 您能否使用实际的 M3U url 测试代码,例如:http://109.94.2.96:8888/1.m3u
  • 不幸的是,Google 的 ExoPlayer 不支持 .m3u,正如他们在 Github 中提到的那样
  • Exoplayer 支持 HLS (m3u8),在你的 m3u 中我看到的大多是 m3u8 :)
  • 感谢您一直以来的支持,我可以仅将 ExoPlayer 播放为声音流吗?
  • 我相信 ExoPlayer 也支持视频
猜你喜欢
  • 2012-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多