web-dev-qa-db-ja.com

アセットフォルダーから動画を読み込む方法は? (VideoViewで再生するため)

アセットフォルダーからmp4ビデオを開いて、VideoViewで再生する必要があります。

私はこれら2つのオプションを試してみましたが、どれも機能しません。

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からビデオを開こうとすると、完全に機能します。問題は、アセットフォルダーからビデオを読み込もうとしたときです。

私は何を間違っていますか?

ありがとう

22

アセットフォルダーから動画を読み込む方法がわかりません。しかし、私は/ res/raw /フォルダーからそれらをロードする方法を知っています:

String uriPath = "Android.resource://yourapplicationpackage/raw/videofilenamewithoutextension";
Uri uri = Uri.parse(uriPath);
video.setVideoURI(uri);
33
js-

\assetsから.mp4ファイルを再生することはできません。\rawフォルダからロードする必要があります。

例:

video.mp4フォルダ内に/rawというファイルがある場合:

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

[〜#〜]編集済み[〜#〜]

試してください:

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();}   
5
Caner