如何使用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
相关产品推荐
相关产品推荐

