我想创建ACTION_VIEW
意向来播放带有SRT字幕的视频文件并使用FileProvider
。
//mCtx is a Context
Intent i = new Intent(Intent.ACTION_VIEW);
Uri uri = FileProvider.getUriForFile(mCtx, mCtx.getApplicationContext().getPackageName() + ".provider", fd); //file descriptor to video file
i.setDataAndType(uri, "video/*");
Uri uriSrt = FileProvider.getUriForFile(mCtx, mCtx.getApplicationContext().getPackageName() + ".provider", fdSrt); //file descriptor to srt file
i.putExtra("subtitles_location", uriSrt);//for MX Player is String: "subs"
VLC播放视频没有SRT 。
但是,当我替换此行时:
i.setDataAndType(uri, "video/*");
//VLC can not browse a folder and show: content://<app package name>/...
在此行
i.setDataAndType(Uri.parse(fd.getPath()), "video/*");
//VLC can browse a folder, and show: file:///storage/emulated/0/...
VLC使用SRT 播放视频。但不总是。有时我会向logcat发送消息:ErrorMessage VLC is unable to open the MRL '/storage/emulated/0/<path>/2018-10-31_18.mp4'
,并且视频无法播放。
注意:srt文件与具有相同名称但后缀不同的视频文件位于同一位置。
例如:视频:2018-10-31.mp4
,srt:2018-10-31.srt
。
某些来自Google Play的视频播放器无法通过FileProvider打开意图,例如:FX Player或uPlayer