无法使用VideoView播放资源文件夹中的视频

时间:2013-11-11 10:03:57

标签: android android-videoview android-video-player android-assets mediacontroller

我无法使用VideoView中的MediaController播放资源文件夹中的视频。 我查看了许多堆栈溢出答案,但没有一个工作。 当我使用Raw文件夹或SD卡文件夹路径时,它可以正常工作。

以下是我的代码:

    private void getVideoFromAssets() {

    try {
        // Start the MediaController
        MediaController mediacontroller = new MediaController(
                VideoViewActivity.this);
        mediacontroller.setAnchorView(videoview);
        // Get the URL from String VideoURL
        Uri video = Uri.parse("file:///android_asset/test.mp4");
        videoview.setMediaController(mediacontroller);
        videoview.setVideoURI(video);


    } catch (Exception e) {
        Log.e("Error", e.getMessage());
        e.printStackTrace();

    }

    videoview.requestFocus();
    videoview.setOnPreparedListener(new OnPreparedListener() {
        // Close the progress bar and play the video
        public void onPrepared(MediaPlayer mp) {

            videoview.start();

        }
    });


}

这个相同的代码适用于原始和SD卡文件夹,同时更改相应的路径。但它不适用于资产。 任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:1)

尝试:

   AssetFileDescriptor afd = getAssets().openFd(fileName);
   player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(), afd.getLength());

答案 1 :(得分:1)

“file:/// android_asset / ...”仅适用于WebView,您需要传递一个Uri,就像你需要创建的“content://your.authority/path.to.resource”自定义ContentProvider并覆盖其openAssetFile