1

I am trying to integrate ExoPlayer for streaming music online. I got stuck while implementing ExoPlayer. Please help me with this sample URL.

My code and my URL are:

private void initialiseExoplayer() {
    // 1. Create a default TrackSelector
    Handler mainHandler = new Handler();
    BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
    TrackSelection.Factory videoTrackSelectionFactory =
        new AdaptiveTrackSelection.Factory(bandwidthMeter);
    TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);

    // 2. Create the player
    exoPlayer = ExoPlayerFactory.newSimpleInstance(getApplicationContext(), trackSelector);
}

private void playMusicFromUrl(String mediaUrl) {
    Uri uri = null;

    if (exoPlayer != null) {
        if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {
            URL.setURLStreamHandlerFactory(new java.net.URLStreamHandlerFactory() {
                public URLStreamHandler createURLStreamHandler(String protocol) {
                    Log.e("SongService", "Asking for stream handler for protocol: '" + protocol + "'");
                    return null;
                }
            });
        }

        mediaUrl = mediaUrl.replace("http", "icy");
        URL url = null;

        try {
            url = new URL(mediaUrl);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

        try {
            uri = Uri.parse(url.toURI().toString());
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
    }else {
        uri = Uri.parse(mediaUrl);
    }
}
krlzlx
  • 5,752
  • 14
  • 47
  • 55
Kumar Raj
  • 124
  • 1
  • 10

2 Answers2

0

I have already written a short demo code on how to play videos in Exo Player. You can find it here

Mayur_Thakur
  • 651
  • 8
  • 15
0

First:

file -> other settings -> default settings -> uncheck Offilne work

Second add these dependecies:

compile 'com.google.android.exoplayer:exoplayer:2.6.0'
compile 'com.google.android.exoplayer:exoplayer-core:2.6.0'
compile 'com.google.android.exoplayer:exoplayer-dash:2.6.0'
compile 'com.google.android.exoplayer:exoplayer-hls:2.6.0'
compile 'com.google.android.exoplayer:exoplayer-smoothstreaming:2.6.0'
compile 'com.google.android.exoplayer:exoplayer-ui:2.6.0'
private SimpleExoPlayer exoPlayer;

void playChannelUsingExoPlayer(String uri) {
    DefaultRenderersFactory defaultRenderersFactory = new DefaultRenderersFactory(getContext(), null, DefaultRenderersFactory.EXTENSION_RENDERER_MODE_OFF);
    DefaultTrackSelector trackSelector = new DefaultTrackSelector();
    exoPlayer = ExoPlayerFactory.newSimpleInstance(defaultRenderersFactory, trackSelector);
    String useragent = Util.getUserAgent(getContext(), /*Application_name*/);
    //ExtractorMediaSource mediaSource = new ExtractorMediaSource(uri, new DefaultDataSourceFactory(getContext(), useragent), new DefaultExtractorsFactory(), null, null);
    MediaSource mediaSource = new ExtractorMediaSource(Uri.parse(uri), new DefaultDataSourceFactory(getContext(), useragent), new DefaultExtractorsFactory(), null, null);
    exoPlayer.prepare(mediaSource);
    exoPlayer.setPlayWhenReady(true);
}

Release it:

void ReleaseExoplayer()
{
    if (exoPlayer != null)
        exoPlayer.stop();
}

In onCreate() add:

playChannelUsingExoPlayer(radiosItem.getURL());
m02ph3u5
  • 3,022
  • 7
  • 38
  • 51