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 }