如何做.PLS文件的android流? [英] How to do streaming with .pls files in android?

查看:128
本文介绍了如何做.PLS文件的android流?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要玩一个.PLS文件,我使用这个网址Android应用程序 http://playerservices.streamtheworld.com/pls/VIRGINRADIO_DUBAIAAC.pls  我知道这是不可能的使用MediaPlayer的directly.So我解析使用PLS解析这个文件,并设置每个url到媒体player.But是行不通的。也展示了误差错误(1,-2147483648)。

I want to play a .pls file for my android application using this url http://playerservices.streamtheworld.com/pls/VIRGINRADIO_DUBAIAAC.pls I know that it is not possible to play .pls files using MediaPlayer directly.So I parsed this file using a Pls parser and set each url to a media player.But it won't work .Also shows the error error (1, -2147483648).

public class PlayListParser {

    private BufferedReader reader;

    public PlayListParser(String url) {
        try {
            URL plsFileUrl = new URL(url.trim());
            URLConnection urlConnection = plsFileUrl.openConnection();
           // InputStream input = new BufferedInputStream(urlConnection.openStream());
            InputStream iStream = urlConnection.getInputStream();
            this.reader = new BufferedReader(new InputStreamReader(iStream));
            // this.reader = new BufferedReader(new FileReader(file), 1024);
        } catch (MalformedURLException e) {
            Log.e("PlayListParser", "Got MalformedURLException  = " + e.getMessage());
        } catch (IOException e) {
            Log.e("PlayListParser", "Got  IOException = " + e.getMessage());
        }
    }

    public List<String> getUrls() {
        LinkedList<String> urls = new LinkedList<String>();
        while (true) {
            try {
                String line = reader.readLine();
                if (line == null) {
                    break;
                }
                String url = parseLine(line);
                if (url != null && !url.equals("")) {
                    urls.add(url);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return urls;
    }

    private String parseLine(String line) {
        if (line == null) {
            return null;
        }
        String trimmed = line.trim();
        if (trimmed.indexOf("http") >= 0) {
            return trimmed.substring(trimmed.indexOf("http"));
        }
        return "";
    }
}


PlayListParser playListParser = new PlayListParser(URL_PLS_STREAMING);
List<String > playList = playListParser.getUrls();
if(playList != null && ! playList.isEmpty()){
    for(String url : playList){
        MediaPlayer mediaPlayer = new MediaPlayer();
        try {
        mediaPlayer.setDataSource(playList.get(0));//"http://stream2.streamq.net:8020/");
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mediaPlayer.prepareAsync();
        mediaPlayer.setOnPreparedListener(new OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mp) {
                mp.start();

            }
        });
        //mediaPlayer.prepare();
        } catch (IllegalArgumentException e) {
        Log.e("MainActivity","Got IllegalArgumentException = " + e.getMessage());

        } catch (IllegalStateException e) {
        Log.e("MainActivity","Got IllegalStateException = " + e.getMessage());

        } catch (IOException e) {
        Log.e("MainActivity","Got IOException = " + e.getMessage());

        }
    }
}

我怎么可以玩这个.PLS文件?我无法找到有关it.Also一个很好的参考,我想播放,暂停和倒带这些文件。

How can i play this .pls file? I could not find a good reference about it.Also i want to play,pause,and rewind these files.

在此先感谢

推荐答案

这将返回URL如 http://stream2.streamq.net:8020

package com.direct.radio.global;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.LinkedList;
import android.content.Context;
import android.util.Log;

public class GetStreamingUrl {

private static String LOGTAG = "GetStreamingUrl";
private Context mContext;

public GetStreamingUrl(Context context) {
    Log.i(LOGTAG, "call to constructor");
    this.mContext = context;

}

public LinkedList<String> getStreamingUrl(String url) {

    Log.i(LOGTAG, "get streaming url");
    final BufferedReader br;
    String murl = null;
    LinkedList<String> murls = null;
    try {
        URLConnection mUrl = new URL(url).openConnection();
        br = new BufferedReader(
                new InputStreamReader(mUrl.getInputStream()));
        murls = new LinkedList<String>();
        while (true) {
            try {
                String line = br.readLine();

                if (line == null) {
                    break;
                }
                murl = parseLine(line);
                if (murl != null && !murl.equals("")) {
                    murls.add(murl);

                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    Log.i(LOGTAG, "url to stream :" + murl);
    return murls;
}

private String parseLine(String line) {
    if (line == null) {
        return null;
    }
    String trimmed = line.trim();
    if (trimmed.indexOf("http") >= 0) {
        return trimmed.substring(trimmed.indexOf("http"));
    }
    return "";
        }
  } 

Activity_Player.java或Service_Player.java

您可以这样写code根据您的需要,定义这个方法

Activity_Player.java or Service_Player.java

you can write this code as per your need , Define this method

LinkedList<String> urls;

private LinkedList<String> fGetPlayableUrl(String mPls) {
    GetStreamingUrl oGetStreamingUrl = new GetStreamingUrl(Activity_Splash.this);
    urls = oGetStreamingUrl.getStreamingUrl(mPls);
    return urls;
}

下面, fGetPlayableUrl(字符串MPLS)通过 .PLS URL。现在你已经流媒体URL。

Here, fGetPlayableUrl(String mPls) pass .pls URL. Now you have streaming URL.

MediaPlayer  mMediaPlayer = new MediaPlayer();

现在,通过网址

mMediaPlayer.setDataSource(urls.toString());
mMediaPlayer.prepareAsync();
mMediaPlayer.start();

这篇关于如何做.PLS文件的android流?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆