| /* |
| * 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; |
| |
| } |
| } |