package org.korsakow.services.encoders.subtitle.srt;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.korsakow.services.encoders.subtitle.ISubtitle;
public class SrtEncoder
{
private final List<ISubtitle> subtitles = new ArrayList<ISubtitle>();
public void addSubtitle(ISubtitle subtitle)
{
subtitles.add(subtitle);
}
public void encode(OutputStream output) throws IOException
{
Collections.sort(subtitles);
PrintWriter writer = new PrintWriter(output);
int counter = 0;
for (ISubtitle subtitle : subtitles)
{
writer.println(counter);
writer.print(formatTime(subtitle.getStartTime()));
writer.print(" --> ");
writer.print(formatTime(subtitle.getEndTime()));
writer.println();
writer.println(subtitle.getText());
writer.println();
}
output.close();
}
public String formatTime(long time)
{
int hours = (int)(time / 60 / 60 / 1000);
int minutes = (int)(time / 60 / 1000);
int seconds = (int)(time / 1000);
int millis = (int)(time % 1000);
return String.format("%.2d:%.2d:%.2d,%.3d", hours, minutes, seconds, millis);
}
}