basic support for duration strings like 0:00:23, i,e, h:mm:ss

This commit is contained in:
Erik Forkalsrud 2013-07-03 01:31:58 -07:00
parent e7a18e77a8
commit e177e571f4
2 changed files with 21 additions and 1 deletions

View file

@ -458,8 +458,19 @@ public class FlvMetadata {
} }
public void setDuration(String durationStr) { public void setDuration(String 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)); setDuration(Double.parseDouble(durationStr));
} }
}
public void setDuration(double seconds) { public void setDuration(double seconds) {
this.duration.set(Double.valueOf(seconds)); this.duration.set(Double.valueOf(seconds));

View file

@ -104,4 +104,13 @@ public class FlvMetadataTest extends TestCase {
assertEquals(md1, md2); 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());
}
} }