Play from Shoutcast Url in android
Asked Answered
F

2

6

I am developing an Application that needs to play Radio from Shout cast. For API I have followed this URL

I am successful in getting a station ID with my developer ID.Now in the section " How To Tune Into A Station " they have guided how to tune to a particular station. I have followed that section and used this URL in my android media player. But my media player plays nothing.

Please note my target SDK is 16 and Min SDK is 13. So I hope android version is not a problem. Media player works fine if am using other URLs like:

So I guess there is no issue with my media player. I have already gone through the post that are available in SO. Please help.

public class MainActivity extends Activity {

        Button play,pause,stop;
        private MediaPlayer mediaPlayer;
        private String out;
//      private String url = "http://yp.shoutcast.com/sbin/tunein-station.pls?id=175821";
//      private String url = "http://www.hrupin.com/wp-content/uploads/mp3/testsong_20_sec.mp3";

        private String url1 = "http://streamplus8.leonex.de:14910";
        private String url2 ="http://s2.voscast.com:7016/";
        private String url3 ="http://s8.voscast.com:7024/";
        private String url4 ="http://s8.voscast.com:7020/";
        private String url5 ="http://s5.voscast.com:8216/";

        private boolean pauseState = false;
        ProgressDialog pd;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);

                pd = new ProgressDialog(this);
                pd.setMessage("Loading your song....");
                play = (Button)findViewById(R.id.btn_play);
                pause = (Button)findViewById(R.id.btn_pause);
                stop = (Button)findViewById(R.id.btn_stop);

                mediaPlayer = new MediaPlayer();
                this.setVolumeControlStream(AudioManager.STREAM_MUSIC);  
            try {
                mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                mediaPlayer.setDataSource(url2);
                mediaPlayer.prepareAsync();
            } catch (Exception e) {
                Toast.makeText(getApplicationContext(), "Please check your connection!", Toast.LENGTH_LONG).show();
                e.printStackTrace();
            }

            play.setOnClickListener(new OnClickListener() {                    
                        @Override
                        public void onClick(View arg0) {

                                if(pauseState == true) {
                    mediaPlayer.start();
                } else {
                        pd.show();
                    mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
                        @Override
                        public void onPrepared(MediaPlayer mp) {
                            mediaPlayer.start();
                            if(mediaPlayer.isPlaying()){
                                pd.dismiss();
                            }
                        }
                    });
                }
                                pauseState = false;                            
                        }
                });
            pause.setOnClickListener(new OnClickListener() {                   
                        @Override
                        public void onClick(View arg0) {
                                mediaPlayer.pause();
                                pauseState = true;                             
                        }
                });
            stop.setOnClickListener(new OnClickListener() {                    
                        @Override
                        public void onClick(View arg0) {
                                mediaPlayer.stop();
//                              mediaPlayer.release();
                        }
                });


        }

}
Fiveandten answered 6/9, 2013 at 7:50 Comment(0)
F
4

Ok. fine I finally figured out myself. Actually when I hit this Url one .pls file is getting downloaded. The content of .pls file is something like this

[playlist]
numberofentries=1
File1=http://203.150.225.71:8000
Title1=(#1 - 10866/10000) COOLfahrenheit 93
Length1=-1
Version=2

I have to read this file and then parse this file to get the actual URL.Here it is

http://203.150.225.71:8000

Android media player is able to play this URL.

Fiveandten answered 6/9, 2013 at 11:8 Comment(5)
hi, i want to implement shoutcast api in my android and i use this link wiki.winamp.com/wiki/SHOUTcast_Radio_Directory_API but i not know how to get k=[Your Dev ID] for use this api in my app.Windproof
you have to register yourself to get the device idFiveandten
I got this in file not the url '[playlist] numberofentries=0 Version=2' How should I get it?Deutero
@SyamantakBasu try this repository github.com/sandeeprana011/shoutcast_androidEthiopia
Can you please let us know how did you parse this .pls file?Blau
E
1

I don't want to download .pls file so that i find other solution. Finally, i got simple shoutcast streaming app. Try this. Just change streaming url in StreamService.java.

Ephrem answered 22/1, 2016 at 10:17 Comment(7)
You have used the same url inside file there too :ODeutero
What do you mean? In StreamService.java, you just change your url to String url = "176.31.115.196:8214"; you need to set url to mediaplayer datasource. That sample project will run with your stream url.Ephrem
176.31.115.196:8214 Isn't this the url we get after downloading the file and read from it?Deutero
no. my solution is not read the file. Just play shoutcast server public url. you need to know your shoutcast steam server public url.Ephrem
hello @BM, I have two stream url at server so it is not working , but i tried with ur url then it is working.. please help me!!Alrich
@BM how to get the shoutcast stream server public url?Blau
@Harry.Naeem I got public url from streaming server hosting.Ephrem

© 2022 - 2024 — McMap. All rights reserved.