From 27037a9a6a4266d321aca27c6a8f110c7287a66e Mon Sep 17 00:00:00 2001 From: Knut Forkalsrud Date: Mon, 2 Jan 2012 18:32:14 -0800 Subject: [PATCH] Deduce the duration if it isn't already present. --- .../java/org/forkalsrud/album/video/FlvFilter.java | 1 + .../java/org/forkalsrud/album/video/FlvMetadata.java | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/forkalsrud/album/video/FlvFilter.java b/src/main/java/org/forkalsrud/album/video/FlvFilter.java index 63b58ef..d9f488c 100644 --- a/src/main/java/org/forkalsrud/album/video/FlvFilter.java +++ b/src/main/java/org/forkalsrud/album/video/FlvFilter.java @@ -188,6 +188,7 @@ public class FlvFilter extends OutputStream { if (currentBox != null) { throw new IOException("Premature end of file"); } + metadata.setDurationFromLastTimestamp(); } /** diff --git a/src/main/java/org/forkalsrud/album/video/FlvMetadata.java b/src/main/java/org/forkalsrud/album/video/FlvMetadata.java index 3d5944e..ea4438e 100644 --- a/src/main/java/org/forkalsrud/album/video/FlvMetadata.java +++ b/src/main/java/org/forkalsrud/album/video/FlvMetadata.java @@ -438,9 +438,19 @@ public class FlvMetadata { } public void setDuration(String durationStr) { - this.duration.set(Double.parseDouble(durationStr)); + setDuration(Double.parseDouble(durationStr)); } + public void setDuration(double seconds) { + this.duration.set(Double.valueOf(seconds)); + } + + public void setDurationFromLastTimestamp() { + if (duration.value == null || duration.value.doubleValue() <= 0) { + setDuration(lasttimestamp.value / 1000d); + } + } + public void setDimension(Dimension d) { this.width.set(Double.valueOf(d.getWidth())); this.height.set(Double.valueOf(d.getHeight()));