Tôi đã nhận được giải pháp. tôi chuyển đổi file srt vào file TTML sử dụng TimedTextFileFormat
Dưới đây là mã của tôi để chuyển đổi srt để 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();
}
}
Sau đó trong hoạt động máy nghe nhạc qua phụ đề để xây dựng uy tín, Trong này tôi đang gửi đến 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);
}
Từ lớp HlsRendererBuilder chuyển nó tới TrackRenderer, // Xây dựng trình kết xuất gỡ lỗi.
TrackRenderer debugRenderer = debugTextView != null
? new DebugTrackRenderer(debugTextView, player, videoRenderer,context,subttl) : null;
Và trong lớp DebugTrackRenderer trong phương pháp sử dụng chạy dưới mã,
public void run() {
String data1 = subttl.getText(getCurrentPositionUs());
player.onText(String.valueOf(data1));
}
cố gắng xem repo này: https://github.com/bluemix/CinemanaPlayer –