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) {
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) {
this.duration.set(Double.valueOf(seconds));

View file

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