You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用ExoPlayer播放网络视频?Google Drive视频播放失败的技术求助

解决Android ExoPlayer播放网络视频失败的问题

从你的报错日志和代码来看,核心问题是你使用的Google Drive链接是网页预览地址,不是视频文件的直接可播放流地址,导致ExoPlayer无法识别输入格式(UnrecognizedInputFormatException)。下面一步步帮你解决:

一、修复Google Drive视频链接

你当前的链接是网页视图地址:

https://drive.google.com/file/d/1CRJ8tL-DyjD0Nwd7ezkboGm6570zMf4C/view?usp=sharing

这个链接返回的是HTML网页,不是视频文件。对于公开分享的Drive文件,你需要把链接改成直接文件访问地址,格式为:

https://drive.google.com/uc?export=download&id=你的文件ID

替换后你的链接应该是:

String url = "https://drive.google.com/uc?export=download&id=1CRJ8tL-DyjD0Nwd7ezkboGm6570zMf4C";

二、确认ExoPlayer依赖配置

确保你的build.gradle(Module level)里添加了ExoPlayer的核心和UI依赖(替换2.X.X为当前最新版本即可):

implementation "com.google.android.exoplayer:exoplayer-core:2.X.X"
implementation "com.google.android.exoplayer:exoplayer-ui:2.X.X"

三、优化代码(可选但推荐)

添加错误监听可以帮你更直观地排查后续问题,同时给用户友好提示:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_starter_yoga);
    findViewById(R.id.backY).setOnClickListener(v -> onBackPressed());

    SimpleExoPlayer simpleExoPlayer = new SimpleExoPlayer.Builder(this).build();
    PlayerView playerView = findViewById(R.id.SY);
    playerView.setPlayer(simpleExoPlayer);

    // 替换为修正后的链接
    String url = "https://drive.google.com/uc?export=download&id=1CRJ8tL-DyjD0Nwd7ezkboGm6570zMf4C";
    MediaItem mediaItem = MediaItem.fromUri(url);
    simpleExoPlayer.addMediaItem(mediaItem);

    // 添加错误监听
    simpleExoPlayer.addListener(new Player.Listener() {
        @Override
        public void onPlayerError(PlaybackException error) {
            super.onPlayerError(error);
            Log.e("ExoPlayer", "播放失败: " + error.getMessage());
            // 这里可以弹出Toast提示用户播放失败
            Toast.makeText(Yoga.this, "视频播放失败,请检查网络或链接", Toast.LENGTH_SHORT).show();
        }
    });

    simpleExoPlayer.prepare();
    simpleExoPlayer.play();
}

四、确认Manifest配置没问题

你当前的Manifest配置是正确的,已经包含了必要的网络权限和明文流量支持,不需要修改:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
android:usesCleartextTraffic="true"

额外说明

如果你的视频是非公开分享的,上面的直接链接会失效,这时需要通过Google Drive API获取授权后的媒体链接,但如果是公开视频,上面的方案完全可以解决问题。

内容的提问来源于stack exchange,提问作者Diligent PD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 07:52:29