【发布时间】:2011-03-03 00:07:45
【问题描述】:
我正在尝试在 android 模拟器中播放视频 我的资产文件夹和原始文件夹中有视频 但是在做了一些研究之后,我仍然无法在我的模拟器中播放视频 我正在开发 android 2.1 我的视频格式是 mp4,所以我认为这不是问题 谁能给我一个示例代码,以便我能理解更多?
问题是我需要显示视频的 VideoView 将只需要一个 URI 或文件路径来指向视频。
如果我将视频保存在 raw 或 assets 文件夹中,我只能获取输入流或文件描述符,而且似乎没有任何内容可用于初始化 VideoView。
更新
我仔细查看了 MediaPlayer 示例,并尝试使用 FileDescriptor 启动 MediaPlayer 到资产文件,如下面的代码所示:
SurfaceView videoView = (SurfaceView) findViewById(gettingStarted)
SurfaceHolder holder = videoView.getHolder();
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
final MediaPlayer player = new MediaPlayer();
player.setDisplay(holder);
player.setDataSource(getAssets().openFd(fileName).getFileDescriptor());
player.prepareAsync();
player.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
现在我得到以下异常:
java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed
似乎没有其他方法可以在启动时将文件复制到 sdcard,这似乎是在浪费时间和内存。
【问题讨论】:
-
我认为问题在于 mp4 是一种压缩格式。详情查看我的回答
-
这里解释'原始' floder stackoverflow.com/questions/11356601/…
-
那年是2020年,虽然我用的是android studio 3.6,Android 10操作系统,但是下面的videoview有音频,但是图片是黑色的。最后,这位朋友的代码奏效了,我无法解释我有多高兴。写成以下解决方案的那些都不是第一次在我身上起作用。幸运的是,我很高兴终于解决了我的问题。谢谢:D