Android ExoPlayer无法播放HLSHTTP实时流

问题描述

我想使用ExoPlayer播放HLS(HTTP实时流)。 但是我遇到了以下错误:

E / ExoPlayerImplInternal:源错误。 com.google.android.exoplayer2.upstream.HttpDataSource $ HttpDataSourceException:无法连接到https://my_url/file.m3u8

下面是我的设置代码:

private fun playTest() {
        player = ExoPlayerFactory.newSimpleInstance(
            DefaultRenderersFactory(this.requireContext()),DefaultTrackSelector(),DefaultLoadControl())
        val uri = Uri.parse("https://my_url/file.m3u8")

        ep_video_view.player = player

        val dataSourceFactory = DefaultDataSourceFactory(this.requireContext(),"user-agent")
        val mediaSource = HlsMediaSource(uri,dataSourceFactory,handler,null)

        player?.prepare(mediaSource)
        player?.playWhenReady = true
    }

谢谢。

解决方法

在Java

   TrackSelection.Factory adaptiveTrackSelection = new AdaptiveTrackSelection.Factory(new DefaultBandwidthMeter());
    player = ExoPlayerFactory.newSimpleInstance(
            new DefaultRenderersFactory(mContext),new DefaultTrackSelector(adaptiveTrackSelection),new DefaultLoadControl());

    playerView.setPlayer(player);
    DefaultBandwidthMeter defaultBandwidthMeter = new DefaultBandwidthMeter();
    DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(mContext,Util.getUserAgent(mContext,"Exo2"),defaultBandwidthMeter);

    String hls_url = "YOUR STREAMING URL HERE";
    Uri uri = Uri.parse(hls_url);
    Handler mainHandler = new Handler();
    MediaSource mediaSource = new HlsMediaSource(uri,dataSourceFactory,mainHandler,null);
    player.prepare(mediaSource);
    player.setPlayWhenReady(true);

https://medium.com/@haxzie/adaptive-hls-streaming-on-android-with-googles-exoplayer-64820017edf0

,

这里的新手,但希望它会有所帮助。我一直在做和你一样的事情,我注意到未加密的 hls 流有效。尝试使用带有 http 的链接。只是为了检查。我无法让 Exoplayer 播放 https hls 流。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...