Skip to content
4 changes: 2 additions & 2 deletions examples/mp4copy.rs
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,8 @@ fn copy<P: AsRef<Path>>(src_filename: &P, dst_filename: &P) -> Result<()> {

let track_id = track_idx as u32 + 1;
let sample_count = mp4_reader.sample_count(track_id)?;
for six in 0..sample_count {
let sample_id = six + 1;
for sample_idx in 0..sample_count {
let sample_id = sample_idx + 1;
let sample = mp4_reader.read_sample(track_id, sample_id)?.unwrap();
mp4_writer.write_sample(track_id, &sample)?;
// println!("copy {}:({})", sample_id, sample);
Expand Down
6 changes: 1 addition & 5 deletions examples/mp4info.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,7 @@ fn info<P: AsRef<Path>>(filename: &P) -> Result<()> {
compatible_brands.push_str(",");
}
println!(" compatible_brands: {}", compatible_brands);
println!(
"Duration: {}, timescale: {}",
mp4.duration(),
mp4.timescale()
);
println!("Duration: {:?}", mp4.duration());

for track in mp4.tracks().iter() {
let media_info = match track.track_type()? {
Expand Down
5 changes: 3 additions & 2 deletions src/reader.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use std::io::{Read, Seek, SeekFrom};
use std::time::Duration;

use crate::mp4box::*;
use crate::*;
Expand Down Expand Up @@ -95,8 +96,8 @@ impl<R: Read + Seek> Mp4Reader<R> {
&self.ftyp.compatible_brands
}

pub fn duration(&self) -> u64 {
self.moov.mvhd.duration
pub fn duration(&self) -> Duration {
Duration::from_millis(self.moov.mvhd.duration * 1000 / self.moov.mvhd.timescale as u64)
}

pub fn timescale(&self) -> u32 {
Expand Down
3 changes: 2 additions & 1 deletion tests/lib.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use mp4::{AudioObjectType, AvcProfile, ChannelConfig, MediaType, SampleFreqIndex, TrackType};
use std::fs::File;
use std::io::BufReader;
use std::time::Duration;

#[test]
fn test_read_mp4() {
Expand Down Expand Up @@ -29,7 +30,7 @@ fn test_read_mp4() {
assert_eq!(t, true);
}

assert_eq!(mp4.duration(), 62);
assert_eq!(mp4.duration(), Duration::from_millis(62));
assert_eq!(mp4.timescale(), 1000);
assert_eq!(mp4.tracks().len(), 2);

Expand Down