有一小段代码可以启动 http 服务器,该服务器依次监听 url 请求的文件名,然后通过标准播放器运行它,这个实现对于
有一小段代码可以启动 http 服务器,该服务器依次监听 url 对文件名的请求,然后通过标准播放器运行它,这个实现对于 VR 的一个有趣的想法来说是必要的。
但是有一个问题!由于某种原因,FileProvider 生成了以下路径: dat=content://com.example.vrtestvr.fileprovider/external_files/VRvideo/1.mp4
,播放器分别表示无法缓冲和启动视频,错误代码为 2005,这是为什么?有趣的是,它似乎可以工作,但后来它就停止了 0_0。我不知道该怎么办,告诉我朋友。
代码主要活动:
'private void playVideo(File videoFile) {
if (!videoFile.exists()) {
Log.e("VideoFileCheck", "File does not exist: " + videoFile.getAbsolutePath());
return;
}
String mimeType;
String extension = videoFile.getName().substring(videoFile.getName().lastIndexOf(".") + 1).toLowerCase();
switch (extension) {
case "mp4":
mimeType = "video/mp4";
break;
case "mkv":
mimeType = "video/x-matroska";
break;
default:
mimeType = "video/*";
break;
}
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri videoUri = FileProvider.getUriForFile(this, getPackageName() + ".fileprovider", videoFile);
Log.d("VideoFileCheck", "Video URI: " + videoUri.toString());
intent.setDataAndType(videoUri, mimeType);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
} else {
Toast.makeText(this, "No application found to play video", Toast.LENGTH_SHORT).show();
}
}'
我试过:
决定:我使用直接 file:/// 进行解析,下面我将展示工作代码:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); //Required for Android 8+
Uri data = Uri.parse(new File("file://" + videoFile).toString());
intent.setDataAndType(data, mimeType);
startActivity(intent);
底线:正常的表演方式( file:/storage/emulated/0/VRvideo/0.mp4
)