【问题标题】:Implementing ExoPlayer in Android在 Android 中实现 ExoPlayer
【发布时间】:2017-12-21 11:40:45
【问题描述】:

我正在尝试集成 ExoPlayer 以在线播放音乐。我在实现 ExoPlayer 时卡住了。请帮我提供这个示例网址。

我的代码和网址是:

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);
    }
}

【问题讨论】:

  • 您能否详细说明您的实际问题是什么?

标签: exoplayer


【解决方案1】:

我已经编写了一个简短的演示代码,介绍如何在 Exo Player 中播放视频。你可以找到它here

【讨论】:

    【解决方案2】:

    第一:

    文件->其他设置->默认设置->取消勾选离线工作

    第二次添加这些依赖:

    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);
    }
    

    释放它:

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

    在 onCreate() 中添加:

    playChannelUsingExoPlayer(radiosItem.getURL());
    

    【讨论】:

      猜你喜欢
      • 2020-04-13
      • 2016-08-20
      • 1970-01-01
      • 1970-01-01
      • 2018-07-12
      • 2022-06-29
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      相关资源
      最近更新 更多