首页 > 解决方案 > “无法播放此视频”错误使用带有 VideoView 和 Mediacontroller 的 URL

问题描述

所以我正在尝试做我的作业,但是老师给了我0个关于这个的信息。有一个如何从 res/raw 文件夹中的文件播放视频的示例,但没有关于在线 URL 的内容。请帮帮我,我只想要一个简单的播放器。我会附上一张图片,详细说明发生了什么。我还将添加代码,因为它不是那么多,而且我真的不知道可能出了什么问题。错误是这样说的:

W/MediaPlayer:无法打开http://techslides.com/ ...

java.io.FileNotFoundException: No content provider: http://techslides.com/demos/sample-videos/small.mp4

这是代码:

    VideoView video;
    String url = "http://techslides.com/demos/sample-videos/small.mp4";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    video = (VideoView) findViewById(R.id.videoView);
    MediaController mc = new MediaController(this);
    mc.setAnchorView(mc);
    video.setVideoPath(url);
    video.setMediaController(mc);
    video.start();
    }

错误和代码 - 屏幕截图

最后我要补充一点,我已经尝试了几个不同的 URL,包括一些 https 和一些 http。

编辑:所以,我尝试修复它,它最终看起来像这样:

    video = (VideoView) findViewById(R.id.videoView);
    final MediaController mc = new MediaController(this);
    mc.setAnchorView(mc);
    video.setVideoPath(url);
    video.setMediaController(mc);

    video.setOnPreparedListener(new MediaPlayer.OnPreparedListener(){
        @Override
        public void onPrepared(MediaPlayer mp){
            video.start();
        }
    });

但是当emu打开时它仍然给我同样的错误。“无法播放此视频”。另一方面,我得到了一堆新错误:

E/MediaPlayerNative: 错误 (1, -2147483648)
E/MediaPlayer: 错误 (1,-2147483648)
D/VideoView: 错误: 1,-2147483648

我对这项技术并不是很熟悉,老师也没有给我们任何关于代码中应该或不应该在什么地方工作的概念。只是一个在 Android Studio 中使用 VideoView 播放的本地存储视频的示例......当应用于在线 URL 时不起作用。

标签: androidandroid-videoviewmediacontroller

解决方案


所以我最终自己修复了它。问题不在代码中,对于任何想知道我最终使用这种简单格式的人来说:

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    video = (VideoView) findViewById(R.id.video);

    Uri uri = Uri.parse("http://techslides.com/demos/sample-videos/small.mp4");
    video.setMediaController(new MediaController(this));
    video.setVideoURI(uri);
    video.requestFocus();
    video.start();

}

问题出在 AVD 本身。我有一台运行 Android 9 的 Pixel 1,但由于某种原因无法正常工作。我已经用 Oreo 安装了 Nexus 5,它运行完美。


推荐阅读