【问题标题】:Android VideoView won't PlayAndroid VideoView 无法播放
【发布时间】:2014-03-10 14:24:45
【问题描述】:

所以我正在尝试在 android 中播放基本的 avi 视频,它似乎在 Windows Media Player、VLC 等上运行良好,所以它看起来不需要任何复杂的编解码器。我的应用中有一个视频视图,仅此而已,我的资源目录中有我的视频:

res/raw/my_video.avi

这是我用来加载视频的代码:

setContentView(R.layout.activity_main);
VideoView videoView = (VideoView) findViewById(R.id.videoView1);
Uri video = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.my_video);
videoView.setVideoURI(video);
videoView.start();

而且它不起作用。我收到一个弹出窗口,上面写着“无法播放此视频”以及一条 logcat 消息:

03-10 01:42:12.102: E/(185): Failed to open file 'android.resource://com.securespaces.android.bootstrap/2130968576'. (No such file or directory)
03-10 01:42:12.102: E/MediaPlayer(9737): error (1, -2147483648)
03-10 01:42:12.142: E/MediaPlayer(9737): Error (1,-2147483648)

顺便说一句,我在运行 4.4.2 股票的 Nexus 5 上运行它。我正在按照我在此处的其他堆栈溢出问题中找到的说明进行操作:How to play videos in android from assets folder or raw folder? 进行了一些小调整,以便我使用从布局文件中获取的 VideoView。

我真的很困惑为什么这不起作用。我浏览了关于这个主题的几个问题,但这感觉应该是重复的。顺便说一句,我在运行 4.4.2 股票的 Nexus 5 上运行它。

为了澄清这个问题,我想知道我做错了什么,或者是否有其他方法可以播放简单的 AVI 视频?

【问题讨论】:

  • 试试Uri video = Uri.parse("android.resource://com.securespaces.android.bootstrap/" + R.raw.my_video);

标签: android video


【解决方案1】:

静态写下你的包名,检查视频是否播放。

尝试如下:

VideoView videoView = (VideoView) findViewById(R.id.videoView1);
Uri video = Uri.parse("android.resource://com.securespaces.android.bootstrap/" + R.raw.my_video);
videoView.setVideoURI(video);
videoView.setMediaController(new MediaController(this));
videoView.requestFocus();

【讨论】:

    【解决方案2】:

    实现这个:

    public static void getVideoFromRaw(String rawPath) {
    
    try {
        // Start the MediaController
        MediaController mediacontroller = new MediaController(mContext);
        mediacontroller.setAnchorView(mVideoview);
        // Get the URL from String VideoURL
        Uri mVideo = Uri.parse(rawPath);
        mVideoview.setMediaController(mediacontroller);
        mVideoview.setVideoURI(mVideo);
    
    } catch (Exception e) {
        Log.e("Error", e.getMessage());
        e.printStackTrace();
    
    }
    
    mVideoview.requestFocus();
    mVideoview.setOnPreparedListener(new OnPreparedListener() {
        // Close the progress bar and play the video
        public void onPrepared(MediaPlayer mp) {
            mVideoview.start();
    
        }
    });
    
    mVideoview.setOnCompletionListener(new OnCompletionListener() {
    
        public void onCompletion(MediaPlayer mp) {
    
        }
    });
    
    }
    

    谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-24
      • 2012-11-07
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      相关资源
      最近更新 更多