Android VideoView无法播放

时间:2014-03-10 05:49:20

标签: android video

所以我正在尝试在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视频?

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

实施这个:

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) {

    }
});

}

由于