【问题标题】:Exoplayer cannot catch error - Input does not start with the #EXTM3U headerExoplayer 无法捕获错误 - 输入不以 #EXTM3U 标头开头
【发布时间】:2020-07-13 16:42:12
【问题描述】:

和上面的标题一样,我无法捕捉到错误Input does not start with the #EXTM3U header.

我试图以这种方式捕捉错误:

exoPlayer.addListener(new ExoPlayer.EventListener() {
            @Override
            public void onPlayerError(ExoPlaybackException error) {
                Toast.makeText(Act_Details.this, "SOURCE ERROR1", Toast.LENGTH_SHORT).show(); //Didn't work or didn't get here 
                Log.e("EXO-ERROR", error.getCause().getMessage()); //Didn't work or didn't get here
                switch (error.type) {
                    case ExoPlaybackException.TYPE_SOURCE:
                        Toast.makeText(Act_Details.this, "SOURCE ERROR1", Toast.LENGTH_SHORT).show(); //Didn't work or didn't get here
                        Log.e("EXO-ERROR-SOURCE", error.getCause().getMessage()); //Didn't work or didn't get here
                        ...
                        ...

并尝试这样:

try {
    PlayerMode = "HLS Mode";
    HlsMediaSource hlsMediaSource = new HlsMediaSource.Factory(dataSourceFactory).createMediaSource(uri);
    exoPlayer = new SimpleExoPlayer.Builder(context).setTrackSelector(trackSelector).build();
    exoPlayer.prepare(hlsMediaSource);
} catch (Exception e) {
    Log.d("Set_Media_Player", e.getMessage()); //Didn't work or didn't get here
    return null;
}

错误:

E/ExoPlayerImplInternal: Source error.
    com.google.android.exoplayer2.source.UnrecognizedInputFormatException: Input does not start with the #EXTM3U header.
        at com.google.android.exoplayer2.source.hls.playlist.HlsPlaylistParser.parse(HlsPlaylistParser.java:199)
        at com.google.android.exoplayer2.source.hls.playlist.HlsPlaylistParser.parse(HlsPlaylistParser.java:62)
        at com.google.android.exoplayer2.upstream.ParsingLoadable.load(ParsingLoadable.java:172)
        at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:391)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)

我尝试播放的url是.m3u8类型的,结果如上,然后我尝试使用渐进模式,它可以工作。

如何捕捉错误,以便尝试下一个模式?

【问题讨论】:

    标签: android exoplayer2.x


    【解决方案1】:

    您需要使用.addAnalyticsListener(...) 而不是.addListener

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多