我无法使用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卡文件夹,同时更改相应的路径。但它不适用于资产。 任何帮助将不胜感激。谢谢。
答案 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