我试图在安卓模拟器中播放视频,我在我的assets文件夹以及raw文件夹中都有视频,但在做了一些研究后,我仍然无法在我的模拟器中播放视频,我在Android2.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
除了在启动时将文件复制到SD卡之外,似乎没有其他方法,这似乎是浪费时间和内存。
发布于 2011-12-23 20:40:10
## Perfectly Working since Android 1.6 ##
getWindow().setFormat(PixelFormat.TRANSLUCENT);
VideoView videoHolder = new VideoView(this);
//if you want the controls to appear
videoHolder.setMediaController(new MediaController(this));
Uri video = getUriFromRawFile(context, R.raw.your_raw_file);
//if your file is named sherif.mp4 and placed in /raw
//use R.raw.sherif
videoHolder.setVideoURI(video);
setContentView(videoHolder);
videoHolder.start();
然后
public static Uri getUriFromRawFile(Context context, @ResRaw int rawResourceId) {
return Uri.Builder()
.scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
.authority(context.getPackageName())
.path(String.valueOf(rawResourceId))
.build();
}
发布于 2013-03-05 22:11:43
String UrlPath="android.resource://"+getPackageName()+"/"+R.raw.ur file name;
videocontainer.setVideoURI(Uri.parse(UrlPath));
videocontainer.start();
其中videoview类型的videocontainer。
发布于 2011-08-26 02:54:28
尝试:
AssetFileDescriptor afd = getAssets().openFd(fileName);
player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(), afd.getLength());
https://stackoverflow.com/questions/3028717
复制相似问题