diff --git a/src/main/java/org/forkalsrud/album/video/FlvMetadata.java b/src/main/java/org/forkalsrud/album/video/FlvMetadata.java index 8f1aa93..005883a 100644 --- a/src/main/java/org/forkalsrud/album/video/FlvMetadata.java +++ b/src/main/java/org/forkalsrud/album/video/FlvMetadata.java @@ -458,7 +458,18 @@ public class FlvMetadata { } public void setDuration(String durationStr) { - setDuration(Double.parseDouble(durationStr)); + if (durationStr != null && durationStr.contains(":")) { + int ps = durationStr.lastIndexOf(':'); + double seconds = Double.parseDouble(durationStr.substring(ps + 1)); + int pm = durationStr.lastIndexOf(':', ps - 1); + if (pm >= 0) { + seconds += 60 * Double.parseDouble(durationStr.substring(pm + 1, ps)); + seconds += 3600 * Double.parseDouble(durationStr.substring(0, pm)); + } + setDuration(seconds); + } else { + setDuration(Double.parseDouble(durationStr)); + } } public void setDuration(double seconds) { diff --git a/src/test/java/org/forkalsrud/album/video/FlvMetadataTest.java b/src/test/java/org/forkalsrud/album/video/FlvMetadataTest.java index 5380e7d..f6da237 100644 --- a/src/test/java/org/forkalsrud/album/video/FlvMetadataTest.java +++ b/src/test/java/org/forkalsrud/album/video/FlvMetadataTest.java @@ -104,4 +104,13 @@ public class FlvMetadataTest extends TestCase { assertEquals(md1, md2); } + + public void testSetDuration() { + FlvMetadata m = new FlvMetadata(); + m.setDuration("1:02:03"); + Object o = m.get("duration"); + assertTrue(o.getClass() == Double.class); + Double durationSeconds = (Double) o; + assertEquals(3600 + 2*60 + 3, durationSeconds.intValue()); + } }