Я хотел бы создать 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
, источник: 2018-10-31.srt
.
Некоторые проигрыватели видео из Google Play не могут открыть намерение с помощью FileProvider, например: FX Player или uPlayer