【发布时间】:2018-03-03 20:53:13
【问题描述】:
我正在尝试更改 Exoplayer 中视频的字幕。视频可以已经有字幕,或者用户可以从内部存储中添加新字幕。我知道在启动播放器之前,我们可以为字幕和视频创建Mediasource,并使用MergingMediaSource 进行合并。但是,我不确定如何为当前播放的视频替换/添加新字幕?是否可以使用DynamicConcatenatingMediaSource 或任何其他方式这样做?
MediaSource[] subTitleMediaSources = new MediaSource[uris.length];
Format subtitleFormat = Format.createTextSampleFormat(
null,
MimeTypes.APPLICATION_SUBRIP,
C.SELECTION_FLAG_DEFAULT,
null);
for (int i = 0; i < uris.length; i++) {
String subTitle = getSubtitleFile(subs, uris[i]);
if (subTitle != null) {
subTitleMediaSources[i] = new SingleSampleMediaSource.Factory(mediaDataSourceFactory).
createMediaSource(Uri.parse(subTitle), subtitleFormat,
C.TIME_UNSET);
} else {
subTitleMediaSources[i] = new SingleSampleMediaSource.Factory(mediaDataSourceFactory).
createMediaSource(Uri.parse("dummy"), subtitleFormat, C.TIME_UNSET);
}
}
MediaSource mediaSource = mediaSources.length == 1 ? mediaSources[0]
: new ConcatenatingMediaSource(mediaSources);
MediaSource subsMediaSource = subTitleMediaSources.length == 1 ? subTitleMediaSources[0]
: new ConcatenatingMediaSource(subTitleMediaSources);
MediaSource mergedSource;
if (subsMediaSource == null) {
mergedSource = mediaSource;
} else {
mergedSource = new MergingMediaSource(mediaSource, subsMediaSource);
}
【问题讨论】:
-
我也有类似的问题,只是我必须在运行时放字幕。从输入字段中取字幕,您能给我一些建议吗?