移动端网络下YouTubePlayerView播放视频报错VIDEO_NOT_PLAYABLE_IN_EMBEDDED_PLAYER
解决YouTubePlayerView移动网络下VIDEO_NOT_PLAYABLE_IN_EMBEDDED_PLAYER错误
嘿,我来帮你搞定这个头疼的播放错误问题!这个VIDEO_NOT_PLAYABLE_IN_EMBEDDED_PLAYER错误通常是这几个原因导致的,咱们逐个排查解决:
1. 视频被创作者禁用了嵌入权限
很多YouTube作者会设置自己的视频不允许在第三方嵌入播放器里播放,尤其是移动网络环境下更容易触发这个限制。你可以先在浏览器打开这个视频,看看页面底部有没有“嵌入”选项——要是没有,那就是作者关了嵌入权限,这种情况要么换个允许嵌入的视频,要么引导用户跳转到YouTube App去看。
2. 移动网络的专属限制
有些地区的移动运营商会限制YouTube的嵌入播放,或者YouTube本身对移动网络的嵌入策略更严格。你可以先切到WiFi环境试试,如果WiFi下能正常播,那肯定是移动网络的锅。这时候可以这么处理:
- 弹窗提示用户切换到WiFi网络
- 给个跳转按钮,直接打开YouTube App播放视频,代码示例是这样的:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.youtube.com/watch?v=" + YOUTUBE_VIDEO_CODE)); intent.setPackage("com.google.android.youtube"); startActivity(intent);
3. 试试换个播放方法
你现在用的是loadVideo直接加载播放,不如换成cueVideo预加载视频,有时候能绕过一些限制:
@Override public void onReady(@NonNull YouTubePlayer youTubePlayer) { String videoId = YOUTUBE_VIDEO_CODE; // 用cueVideo替代loadVideo youTubePlayer.cueVideo(videoId, 0); }
cueVideo只会预加载视频资源,不会直接触发播放,可能避开移动网络下的播放限制。
4. 给用户友好的错误提示
别忘了在监听里加上错误回调,捕获到这个错误时给用户明确的提示,比如弹个Toast或者显示跳转按钮:
@Override public void onError(@NonNull YouTubePlayer youTubePlayer, @NonNull YouTubePlayer.Error error) { super.onError(youTubePlayer, error); if(error == YouTubePlayer.Error.VIDEO_NOT_PLAYABLE_IN_EMBEDDED_PLAYER) { Toast.makeText(getContext(), "这个视频没法在当前播放器播放,要不咱去YouTube App看?", Toast.LENGTH_LONG).show(); } }
内容的提问来源于stack exchange,提问作者Areyen
相关产品推荐
相关产品推荐

