如何在Android ExoPlayer中显示字幕 [英] How to show subtitle in android ExoPlayer
问题描述
我正在使用Exoplayer传输URL. 我想在exoplayer中添加srt文件. 但我认为播放器不支持srt文件 所以我将文件内容放在1个变量中.
I am using Exoplayer for streaming URL. I want to add srt file in exoplayer. But I think player not support srt file so I put my file content in 1 variable.
如何在android exoplayer中显示字幕?
How to show subtitles in android exoplayer?
推荐答案
我找到了解决方案.
我使用TimedTextFileFormat
将srt文件转换为TTML文件
下面是我将srt转换为TTML的代码,
I got the solution.
I convert srt file into TTML file using TimedTextFileFormat
Below is my code to convert srt to TTML,
private Subtitle subttl;
private void parseSubtitile(String subtitle) {
// subtitle is the srt file content
// TODO Auto-generated method stub
// StringBuilder buf = new StringBuilder();
InputStream json = null;
json = null;
json = new ByteArrayInputStream(subtitle.getBytes());
// FormatTTML formate = new FormatTTML();
InputStream is = null;
try {
// TimedTextObject ttmlObj=formate.parseFile("Testing", json);
TimedTextFileFormat ttff = new FormatSRT();
TimedTextObject tto = ttff.parseFile("Test", json);
// IOClass.writeFileTxt("test1", tto.toTTML());
String data = tto.toTTML();
is = new ByteArrayInputStream(data.getBytes());
Log.d("web", data.toString());
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (FatalParsingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
TtmlParser parser = new TtmlParser();
try {
subttl = parser.parse(is, null, 0);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
之后,在玩家活动中将字幕传递给受人尊敬的生成器,在此,我将其发送给HlsRendererBuilder.
After that in player activity pass subtitle to respected builder, In this i am sending to HlsRendererBuilder.
private RendererBuilder getRendererBuilder() {
String userAgent = Util.getUserAgent(this, "ExoPlayerDemo");
switch (contentType) {
case DemoUtil.TYPE_HLS:
return new HlsRendererBuilder(this, userAgent,
contentUri.toString(), debugTextView, audioCapabilities,
subttl);
}
从HlsRendererBuilder类将其传递给TrackRenderer, //构建调试渲染器.
From HlsRendererBuilder class pass it to TrackRenderer, // Build the debug renderer.
TrackRenderer debugRenderer = debugTextView != null
? new DebugTrackRenderer(debugTextView, player, videoRenderer,context,subttl) : null;
在运行方法的DebugTrackRenderer类中,使用以下代码,
And in DebugTrackRenderer class in run method use below code,
public void run() {
String data1 = subttl.getText(getCurrentPositionUs());
player.onText(String.valueOf(data1));
}
这篇关于如何在Android ExoPlayer中显示字幕的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!