1 module main;
2 
3 import std.conv;
4 import std.stdio;
5 
6 import mediainfodll;
7 import mediainfo;
8 
9 int main(string[] args)
10 {
11     if (args.length < 2)
12         return 1;
13     auto info = MediaInfo();
14     string vstring = info.option("Info_Version", "0.7.38.0;DTest;0.1");
15     writefln("Found version %s", vstring);
16     if (vstring == "")
17         throw new Exception("Incompatible mediainfo version");
18 
19     info.option("Internet", "No");
20 
21     info.open(args[1]);
22     scope (exit)
23     {
24         info.close();
25     }
26 
27     ulong nVideo = info.getCount(MediaInfo_stream_t.MediaInfo_Stream_Video);
28     ulong nAudio = info.getCount(MediaInfo_stream_t.MediaInfo_Stream_Audio);
29     ulong nText = info.getCount(MediaInfo_stream_t.MediaInfo_Stream_Text);
30 
31     if (nText == 0 && nVideo == 0 && nAudio == 0)
32         return 0;
33 
34     writefln("---%s---", info.get(MediaInfo_stream_t.MediaInfo_Stream_General, 0, "FileName"));
35     for (uint i = 0; i < nVideo; i++)
36     {
37         writefln("Video track %s:", i);
38         writefln("  Resolution: %s x %s", info.get(MediaInfo_stream_t.MediaInfo_Stream_Video, i,
39                 "Width"), info.get(MediaInfo_stream_t.MediaInfo_Stream_Video, i, "Height"));
40         writefln("  FPS: %s", info.get(MediaInfo_stream_t.MediaInfo_Stream_Video, i, "FrameRate"));
41         writefln("  Duration: %s",
42                 info.get(MediaInfo_stream_t.MediaInfo_Stream_Video, i, "Duration/String"));
43         string brate = info.get(MediaInfo_stream_t.MediaInfo_Stream_Video, i, "BitRate");
44         if (brate != "")
45             writefln("  Bitrate: %s kbps", to!long(brate) / 1024);
46         writefln("  Format: %s", info.get(MediaInfo_stream_t.MediaInfo_Stream_Video, i, "Format"));
47     }
48 
49     for (uint i = 0; i < nAudio; i++)
50     {
51         writefln("Audio track %s:", i);
52         std.stdio.writef("  Channels: %s",
53                 info.get(MediaInfo_stream_t.MediaInfo_Stream_Audio, i, "Channel(s)"));
54         string cpos = info.get(MediaInfo_stream_t.MediaInfo_Stream_Audio, i, "ChannelPositions");
55         if (cpos != "")
56             writefln(" (%s)", cpos);
57         else
58             writeln();
59         writefln("  Duration: %s",
60                 info.get(MediaInfo_stream_t.MediaInfo_Stream_Audio, i, "Duration/String"));
61         string brate = info.get(MediaInfo_stream_t.MediaInfo_Stream_Audio, i, "BitRate");
62         if (brate != "")
63         {
64             writefln("  Bitrate: %s kbps (%s)", to!long(brate) / 1024,
65                     info.get(MediaInfo_stream_t.MediaInfo_Stream_Audio, i, "BitRate_Mode"));
66         }
67         writefln("  Format: %s", info.get(MediaInfo_stream_t.MediaInfo_Stream_Audio, i, "Format"));
68     }
69 
70     for (uint i = 0; i < nText; i++)
71     {
72         writefln("Text track %s:", i);
73         writefln("  Language: %s",
74                 info.get(MediaInfo_stream_t.MediaInfo_Stream_Text, i, "Language"));
75         writefln("  FPS: %s", info.get(MediaInfo_stream_t.MediaInfo_Stream_Text, i, "FrameRate"));
76         writefln("  Duration: %s",
77                 info.get(MediaInfo_stream_t.MediaInfo_Stream_Text, i, "Duration/String"));
78         string brate = info.get(MediaInfo_stream_t.MediaInfo_Stream_Text, i, "BitRate");
79         if (brate != "")
80             writefln("  Bitrate: %s kbps", to!long(brate) / 1024);
81         writefln("  Format: %s", info.get(MediaInfo_stream_t.MediaInfo_Stream_Text, i, "Format"));
82     }
83     return 0;
84 }