![](/img/trans.png)
[英]Java android Java.io.FileNotFoundException: No content provider: /storage/emulated/0/Android/data
[英]java.io.FileNotFoundException: No content provider: /storage/emulated/0/test_video.mp4
通常从图库中选择视频并使用库进行剪切,问题是我需要将该剪切视频(存储在外部 memory:/storage/emulated/0/test_video.mp4)转换为 base64它失败的地方。 我该如何解决? 我已经将权限放在清单上并以编程方式请求它们。
//Getting video from previous activity
Uri selectedVideo = Uri.parse(intent.getStringExtra("trimmedVideo"));
Log.d(Global.getTag(), "path: "+selectedVideo.toString());
//Converting Selected video to base64
try {
InputStream in = getContentResolver().openInputStream(selectedVideo); <---This line fails
byte[] bytes = Global.getBytes(in);
Log.d(Global.getTag(), "bytes size= "+bytes.length);
video_base64 = Base64.encodeToString(bytes,Base64.DEFAULT);
Log.d(Global.getTag(), "Base64string= "+ video_base64);
} catch (Exception e) {
e.printStackTrace();
}
我在 logcast 中得到的只是:
我在 github 帖子上找到了解决方案:只需要包含以下内容:
//Getting video from previous activity
Uri selectedVideo = Uri.parse(intent.getStringExtra("trimmedVideo"));
Uri selectedVideoFinal = null;
if (selectedVideo.getScheme() == null){
selectedVideoFinal = Uri.fromFile(new File(selectedVideo.getPath()));
}else{
selectedVideoFinal = selectedVideo;
}
Log.d(Global.getTag(), "path: "+selectedVideoFinal);
MediaMetadataRetriever mMMR = new MediaMetadataRetriever(); ...continue code
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.