codec_info/
codec-info.rs

1extern crate ffmpeg_rs;
2use std::env;
3
4fn main() {
5    ffmpeg_rs::init().unwrap();
6
7    for arg in env::args().skip(1) {
8        if let Some(codec) = ffmpeg_rs::decoder::find_by_name(&arg) {
9            println!("type: decoder");
10            println!("\t id: {:?}", codec.id());
11            println!("\t name: {}", codec.name());
12            println!("\t description: {}", codec.description());
13            println!("\t medium: {:?}", codec.medium());
14            println!("\t capabilities: {:?}", codec.capabilities());
15
16            if let Some(profiles) = codec.profiles() {
17                println!("\t profiles: {:?}", profiles.collect::<Vec<_>>());
18            } else {
19                println!("\t profiles: none");
20            }
21
22            if let Ok(video) = codec.video() {
23                if let Some(rates) = video.rates() {
24                    println!("\t rates: {:?}", rates.collect::<Vec<_>>());
25                } else {
26                    println!("\t rates: any");
27                }
28
29                if let Some(formats) = video.formats() {
30                    println!("\t formats: {:?}", formats.collect::<Vec<_>>());
31                } else {
32                    println!("\t formats: any");
33                }
34            }
35
36            if let Ok(audio) = codec.audio() {
37                if let Some(rates) = audio.rates() {
38                    println!("\t rates: {:?}", rates.collect::<Vec<_>>());
39                } else {
40                    println!("\t rates: any");
41                }
42
43                if let Some(formats) = audio.formats() {
44                    println!("\t formats: {:?}", formats.collect::<Vec<_>>());
45                } else {
46                    println!("\t formats: any");
47                }
48
49                if let Some(layouts) = audio.channel_layouts() {
50                    println!("\t channel_layouts: {:?}", layouts.collect::<Vec<_>>());
51                } else {
52                    println!("\t channel_layouts: any");
53                }
54            }
55
56            println!("\t max_lowres: {:?}", codec.max_lowres());
57        }
58
59        if let Some(codec) = ffmpeg_rs::encoder::find_by_name(&arg) {
60            println!();
61            println!("type: encoder");
62            println!("\t id: {:?}", codec.id());
63            println!("\t name: {}", codec.name());
64            println!("\t description: {}", codec.description());
65            println!("\t medium: {:?}", codec.medium());
66            println!("\t capabilities: {:?}", codec.capabilities());
67
68            if let Some(profiles) = codec.profiles() {
69                println!("\t profiles: {:?}", profiles.collect::<Vec<_>>());
70            }
71
72            if let Ok(video) = codec.video() {
73                if let Some(rates) = video.rates() {
74                    println!("\t rates: {:?}", rates.collect::<Vec<_>>());
75                } else {
76                    println!("\t rates: any");
77                }
78
79                if let Some(formats) = video.formats() {
80                    println!("\t formats: {:?}", formats.collect::<Vec<_>>());
81                } else {
82                    println!("\t formats: any");
83                }
84            }
85
86            if let Ok(audio) = codec.audio() {
87                if let Some(rates) = audio.rates() {
88                    println!("\t rates: {:?}", rates.collect::<Vec<_>>());
89                } else {
90                    println!("\t rates: any");
91                }
92
93                if let Some(formats) = audio.formats() {
94                    println!("\t formats: {:?}", formats.collect::<Vec<_>>());
95                } else {
96                    println!("\t formats: any");
97                }
98
99                if let Some(layouts) = audio.channel_layouts() {
100                    println!("\t channel_layouts: {:?}", layouts.collect::<Vec<_>>());
101                } else {
102                    println!("\t channel_layouts: any");
103                }
104            }
105
106            println!("\t max_lowres: {:?}", codec.max_lowres());
107        }
108    }
109}