@@ -10,22 +10,47 @@ ISO/IEC 14496-12 - ISO Base Media File Format (QuickTime, MPEG-4, etc)
10
10
11
11
#### Example
12
12
``` rust
13
- use mp4;
13
+ use std :: fs :: File ;
14
+ use std :: io :: {BufReader };
15
+ use mp4 :: {Result };
14
16
15
- fn main () {
17
+ fn main () -> Result <()> {
16
18
let f = File :: open (" example.mp4" ). unwrap ();
17
19
let size = f . metadata ()? . len ();
18
20
let reader = BufReader :: new (f );
19
21
20
- let mut mp4 = Mp4Reader :: new (reader );
21
- mp4 . read (size )? ;
22
+ let mp4 = mp4 :: Mp4Reader :: read_header (reader , size )? ;
22
23
24
+ // Print boxes.
25
+ println! (" major brand: {}" , mp4 . ftyp. major_brand);
26
+ println! (" timescale: {}" , mp4 . moov. mvhd. timescale);
27
+
28
+ // Use available methods.
23
29
println! (" size: {}" , mp4 . size ());
24
- println! (" brands: {:?} {:?}\ n" , mp4 . ftyp. major_brand, mp4 . ftyp. compatible_brands);
30
+
31
+ let mut compatible_brands = String :: new ();
32
+ for brand in mp4 . compatible_brands (). iter () {
33
+ compatible_brands . push_str (& brand . to_string ());
34
+ compatible_brands . push_str (" ," );
35
+ }
36
+ println! (" compatible brands: {}" , compatible_brands );
37
+ println! (" duration: {:?}" , mp4 . duration ());
38
+
39
+ // Track info.
40
+ for track in mp4 . tracks (). iter () {
41
+ println! (
42
+ " track: #{}({}) {} : {}" ,
43
+ track . track_id (),
44
+ track . language (),
45
+ track . track_type ()? ,
46
+ track . box_type ()? ,
47
+ );
48
+ }
49
+ Ok (())
25
50
}
26
51
```
27
52
28
- See [ examples/] ( examples/ ) for a full example .
53
+ See [ examples/] ( examples/ ) for more examples .
29
54
30
55
#### Documentation
31
56
* https://docs.rs/mp4/
0 commit comments