diff options
Diffstat (limited to 'isoparser/src/main/java/com/googlecode/mp4parser/srt/SrtParser.java')
-rw-r--r-- | isoparser/src/main/java/com/googlecode/mp4parser/srt/SrtParser.java | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/isoparser/src/main/java/com/googlecode/mp4parser/srt/SrtParser.java b/isoparser/src/main/java/com/googlecode/mp4parser/srt/SrtParser.java new file mode 100644 index 0000000..3e3a3b9 --- /dev/null +++ b/isoparser/src/main/java/com/googlecode/mp4parser/srt/SrtParser.java @@ -0,0 +1,59 @@ +/* + * Copyright 2011 Sebastian Annies, Hamburg + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.googlecode.mp4parser.srt; + +import com.googlecode.mp4parser.authoring.tracks.TextTrackImpl; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.LineNumberReader; + +/** + * Parses a .srt file and creates a Track for it. + */ +public class SrtParser { + public static TextTrackImpl parse(InputStream is) throws IOException { + LineNumberReader r = new LineNumberReader(new InputStreamReader(is, "UTF-8")); + TextTrackImpl track = new TextTrackImpl(); + String numberString; + while ((numberString = r.readLine()) != null) { + String timeString = r.readLine(); + String lineString = ""; + String s; + while (!((s = r.readLine()) == null || s.trim().equals(""))) { + lineString += s + "\n"; + } + + long startTime = parse(timeString.split("-->")[0]); + long endTime = parse(timeString.split("-->")[1]); + + track.getSubs().add(new TextTrackImpl.Line(startTime, endTime, lineString)); + + } + return track; + } + + private static long parse(String in) { + long hours = Long.parseLong(in.split(":")[0].trim()); + long minutes = Long.parseLong(in.split(":")[1].trim()); + long seconds = Long.parseLong(in.split(":")[2].split(",")[0].trim()); + long millies = Long.parseLong(in.split(":")[2].split(",")[1].trim()); + + return hours * 60 * 60 * 1000 + minutes * 60 * 1000 + seconds * 1000 + millies; + + } +} |