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()));