Я хотел бы отображать предварительно загруженные субтитры с помощью exoplayer 2 и предоставить проигрывателю строку на основе webvtt, чтобы он мог обрабатывать субтитры.
Моя система должна работать так:
- Я отправляю запрос на свой сервер, чтобы получить субтитры (зашифрованные)
- Я расшифровываю ответ сервера, чтобы получить строку субтитров (формат webvtt)
- Я хотел бы передать эту строку exoplayer. Exoplayer должен иметь возможность отображать сабвуферы, как если бы я использовал uri webvtt.
Я не хочу использовать системный файл, потому что это сделало бы файлы субтитров доступными для пользователя.
см. ниже код моей деятельности:
//Class Player Activity
// ... activity code ...
public void initializePlayer(){
//... code intialization of player ...
mVideoEventListener = new VideoEventListener(this);
if(mEpisode.getVideo().getSubtitle() == null) {
mEpisode.getVideo().loadSubtitle(this, Video.VO, mVideoEventListener);
return;
}
hasSubtitle = true;
startPlayer();
}
public void startPlayer(){
boolean haveStartPosition = startWindow != C.INDEX_UNSET;
if (haveStartPosition) {
mPlayer.seekTo(startWindow, startPosition);
}
if(hasVideo && hasSubtitle){
MergingMediaSource mergedSource = new MergingMediaSource(mVideoSource, mSubtitleSource);
mPlayer.prepare(mergedSource, !haveStartPosition, false);
}
}
// ... activity code ...
private class VideoEventListener implements
Video.SubtitleListener,
LoadBalancer.OnLoadBalanceListener{
private final Context mCtx;
VideoEventListener(Context ctx) {
mCtx = ctx;
}
@Override
public void onSubtitleLoaded(String subtitle) {
hasSubtitle = true;
Format subtitleFormat = Format.createTextSampleFormat(null, MimeTypes.TEXT_VTT, C.SELECTION_FLAG_FORCED, "fr");
mSubtitleSource = //My problem : How create a mediaSource with variable "subtitle" in format WebVTT ?
startPlayer();
}
}