mirror of
https://github.com/samsonjs/media.git
synced 2026-03-27 09:45:47 +00:00
Allow non-strict webvtt parsing.
This commit is contained in:
parent
7dfebc2e11
commit
ab00a4da03
1 changed files with 17 additions and 1 deletions
|
|
@ -63,6 +63,16 @@ public class WebvttParser implements SubtitleParser {
|
|||
private static final Pattern MEDIA_TIMESTAMP_OFFSET = Pattern.compile(OFFSET + "\\d+");
|
||||
private static final Pattern MEDIA_TIMESTAMP = Pattern.compile("MPEGTS:\\d+");
|
||||
|
||||
private final boolean strictParsing;
|
||||
|
||||
public WebvttParser() {
|
||||
this(true);
|
||||
}
|
||||
|
||||
public WebvttParser(boolean strictParsing) {
|
||||
this.strictParsing = strictParsing;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WebvttSubtitle parse(InputStream inputStream, String inputEncoding, long startTimeUs)
|
||||
throws IOException {
|
||||
|
|
@ -108,7 +118,7 @@ public class WebvttParser implements SubtitleParser {
|
|||
|
||||
Matcher matcher = WEBVTT_METADATA_HEADER.matcher(line);
|
||||
if (!matcher.find()) {
|
||||
throw new ParserException("Expected webvtt metadata header; got: " + line);
|
||||
handleNoncompliantLine(line);
|
||||
}
|
||||
|
||||
if (line.startsWith("X-TIMESTAMP-MAP")) {
|
||||
|
|
@ -182,6 +192,12 @@ public class WebvttParser implements SubtitleParser {
|
|||
return startTimeUs;
|
||||
}
|
||||
|
||||
protected void handleNoncompliantLine(String line) throws ParserException {
|
||||
if (strictParsing) {
|
||||
throw new ParserException("Unexpected line: " + line);
|
||||
}
|
||||
}
|
||||
|
||||
private static long parseTimestampUs(String s) throws NumberFormatException {
|
||||
if (!s.matches(WEBVTT_TIMESTAMP_STRING)) {
|
||||
throw new NumberFormatException("has invalid format");
|
||||
|
|
|
|||
Loading…
Reference in a new issue