如何从资产文件夹加载video? (使用VideoView播放它们)

我需要从assets文件夹中打开一个mp4video,然后用VideoView播放它。

我尝试了这两个选项,但没有一个可行。

mVideoView.setVideoPath("file:///android_asset/videos.mp4"); mVideoView.requestFocus(); mVideoView.start(); 

和…

 String uriPath = "file:///android_asset/videos.mp4"; Uri uri = Uri.parse(uriPath); mVideoView.setVideoURI(uri); mVideoView.requestFocus(); mVideoView.start(); 

这些选项不起作用,但如果我试图从SDCARD打开video,它完美的作品,那么,问题是当我试图从资产文件夹中加载video。

我做错了什么?

谢谢

Solutions Collecting From Web of "如何从资产文件夹加载video? (使用VideoView播放它们)"

我不知道如何从资源文件夹加载video。 但是我知道如何从/ res / raw /文件夹加载它们:

 String uriPath = "android.resource://yourapplicationpackage/raw/videofilenamewithoutextension"; Uri uri = Uri.parse(uriPath); video.setVideoURI(uri); 

\assets播放.mp4文件是不可能的,您必须从\raw文件夹加载它。

例:

如果在/raw文件夹中有一个名为video.mp4的文件:

 String fileName = "android.resource://"+ getPackageName() + "/raw/video"; VideoView vv = (VideoView) this.findViewById(R.id.surface); vv.setVideoURI(Uri.parse(fileName)); vv.start(); 

EDITED

尝试:

 this.setContentView(R.layout.videoview); mVideoView = (VideoView) this.findViewById(R.id.surface_view); SurfaceHolder holder = mVideoView.getHolder(); holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); MediaPlayer player = new MediaPlayer(); player.setDisplay(holder); AssetFileDescriptor afd; try { afd = getAssets().openFd("v.mp4"); player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(), afd.getLength()); player.prepareAsync(); player.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mp.start(); } }); } catch (Exception e) { e.printStackTrace();}