所以我正在尝试在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视频?
答案 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) {
}
});
}
由于