首页 > 解决方案 > 如何修复 E/ExoPlayerImplInternal:源错误

问题描述

当我尝试"Response Code:400"在 Android Lolipop 和 Marsmallow 上播放音频形式的服务器 exoplayer 时出现错误,但在 Android 更高版本上播放歌曲的代码相同。

E/ExoPlayerImplInternal: Source error. com.google.android.exoplayer2.upstream.HttpDataSource$InvalidResponseCodeException: Response code: 400 at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:211) at com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:147) at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:848) at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:317) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:818)

标签: androidaudioexoplayer

解决方案


由于您的 Web 客户端在 API ~30 中,您可能会收到此错误

使用下面的代码段来允许 URL

new WebViewClient() {
    @SuppressWarnings("deprecation")
    @Override
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        Toast.makeText(Classname.this, description, Toast.LENGTH_SHORT).show();
    }

    @TargetApi(android.os.Build.VERSION_CODES.M)
    @Override
    public void onReceivedError(WebView view, WebResourceRequest req, WebResourceError rerr) {
        // Redirect to deprecated method, so you can use it in all SDK versions
        onReceivedError(view, rerr.getErrorCode(), rerr.getDescription().toString(), req.getUrl().toString());
    }
};

推荐阅读