Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
![]() |
#1 | Link |
ARCalculator Developer
Join Date: Jun 2003
Location: Spain
Posts: 149
|
Mkvextract GUI
I have programmed a GUI for MKVExtract. MKVExtract is a great tool programmed by Moritz Bunkus which can extracts tracks, attachments, chapters and tags of any MKV(Matroska) file. This GUI will help you using mkvextract.
If you can help me to find bugs, suggestions... you are welcome! Remember you need to put this tool into the same folder than mkvmerge and mkvextract. MKVExtract GUI 1.5.5 (changes made by Kurtnoise13) -Added French Language. -Added mkxuncat support (asked by RobuX4 himself to undo matroska files concatenation). -Added dts and usf files extraction. -Clean & improve the code. MKVExtract GUI 1.5.4 (changes made by seth) -MKVextractGUI can be found at CoreCodec.org. -Added pre-selection of output path for MKVextractGUI folder, source folder or another path. -Added new folder creation, name edition, etc in ouput path selection dialog (Browse button). -Some tips have been translated to english/spanish. -Add CoreCodec MKVextractGUI project ("http://corecodec.org/projects/mkvextractgui/") link in Help menu. -Fixed "File no found" extracting bug (in rares cases) when Matroska file and output path have been selected manually. -Some minor improvements in exceptions and internal bugs. MKVExtract GUI 1.5.3.1 (changes made by seth) -Fixed bug if Select Matroska File was closed without any selection. -Drag&Drop Support. -Reset button in File Menu. -GUI redesigned. -MKVextractGUI folder is the default path to extract the tracks. -Added automatic recognition of VOBSUB subtitles. Changelog since MKVExtract GUI 1.5.1 (changes made by seth) -English and Spanish languages in the same exe file. -Added XP Style. Changelog since MKVExtract GUI 1.5.0 -Fixed chapter parser bug. (No more problems detecting different matroska streams/attachments...) -Fixed ouput folder selection bug. -Some help tips added. -.mka and .mks loading added. Changelog since MKVExtract GUI 1.2: -Added chapters and tags extraction support. (They will be showed like the rest of tracks/attachments). Chapters can be extracted in XML and Simple(OGG)txt formats. Tags only can be extracted in xml. -A lot of internal corrections. -Monospace font for CommandLines. -Added RM files extraction.(Added in latest mkvtoolnix 0.8.7) -Added new formats system that will allow you to customize the GUI for future A/V formats actually not supported by mkvextract. For example: QUICKTIME A/V extraction is not supported by mkvtoolnix 0.8.7, but it is for sure that future versions will do. If you check in MKVExtract GUI a track like this: Track ID 1 (V_QUICKTIME) Then the program will ask you what output extension you want to assing to that sort of track. (In this case qtv) So the next time you find that sort of track, the program will remember it and will assing the output ext automatically. The new formats are saved into Formats.txt file, so you can edit/delete/add them easily. (TRACK_TYPE) ext ------------------------------ Example of Formats.txt file: (V_QUICKTIME) qtv (A_QUICKTIME/QDM2) qta ------------------------------ You can download it HERE EDITED: Until seth can upload Kurtnoise changes to project page, latest version (1.5.5) can be found HERE and the sources HERE. It is programmed in Delphi under GNU License. Greetings Last edited by DarkDudae; 27th June 2005 at 15:25. |
![]() |
![]() |
![]() |
#9 | Link |
ARCalculator Developer
Join Date: Jun 2003
Location: Spain
Posts: 149
|
Hi again, I have uploaded the source code (delphi language) and MKVEXTRACTGUI 1.2 final version witch contains cosmetic fixes like:
-Warnings messages if mkvextract or mkvmerge are not detected in the same folder. -Extract button will only be enabled if one or more files are checked. -Program window will appear in the center of the screen. -Some minor internal fixes. You can download them in the main post. Greetings |
![]() |
![]() |
![]() |
#10 | Link |
Registered User
Join Date: Sep 2002
Posts: 32
|
I have a few comments about the interface. First, why the permanent "warning" box there? Why not check the existence of the files required (in current dir and in PATH) at program start and bring a *modal* warning dialog if not found?
Second, the three "options" are not really options, they are actions. The "option" box is not really necessary. And you may want to use a monospace font for the command lines. Finally, the code you use to excute the commandline programs are somewhat problematic. Maybe the following sample could inspire you a bit: Code:
function ExecConsoleApp(CommandLine: string; var Output: string): Cardinal; const BufferSize = $4000; var SecurityAttr: TSecurityAttributes; ReadHandle, WriteHandle: THandle; StartupInfo: TStartupInfo; ProcessInfo: TProcessInformation; ReadBuffer: PChar; BytesRead: DWord; begin SecurityAttr.nLength := SizeOf(TSecurityAttributes); SecurityAttr.bInherithandle := True; SecurityAttr.lpSecurityDescriptor := nil; if CreatePipe (ReadHandle, WriteHandle, @SecurityAttr, 0) then begin FillChar(StartupInfo, Sizeof(StartupInfo), 0); ReadBuffer := AllocMem(BufferSize + 1); StartupInfo.cb := SizeOf(StartupInfo); StartupInfo.dwFlags := STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW; StartupInfo.hStdInput := ReadHandle; StartupInfo.hStdOutput := WriteHandle; StartupInfo.hStdError := WriteHandle; StartupInfo.wShowWindow := SW_HIDE; if CreateProcess(nil, PChar(CommandLine), @SecurityAttr, @SecurityAttr, True, DETACHED_PROCESS or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then begin WaitForSingleObject(ProcessInfo.hProcess, INFINITE); (* If you want to do a running update of the output of the console app, you would not block here. Instead you could loop while GetExitCodeProcess returned STILL_ACTIVE all the while calling ReadFile on the pipe. *) // Output := ''; // Without clearing Output before, its content will be expanded. repeat BytesRead := 0; ReadFile(ReadHandle, ReadBuffer[0], BufferSize, BytesRead, nil); ReadBuffer[BytesRead] := #0; Output := Output + ReadBuffer; until (BytesRead < BufferSize); // OemToAnsi(Output, Output); // OemToAnsi only works for PChar. GetExitCodeProcess(ProcessInfo.hProcess, Result); end else Result := Cardinal(-1); FreeMem(ReadBuffer); CloseHandle(ProcessInfo.hProcess); CloseHandle(ProcessInfo.hThread); CloseHandle(ReadHandle); CloseHandle(WriteHandle); end; end; |
![]() |
![]() |
![]() |
#11 | Link | |
MKVToolNix author
Join Date: Sep 2002
Location: Braunschweig, Germany
Posts: 4,316
|
Quote:
![]() Hmm, I still haven't looked at it... this->slap(2);
__________________
Latest MKVToolNix is v92.0 If I ever ask you to upload something, please use my file server. |
|
![]() |
![]() |
![]() |
#12 | Link |
ARCalculator Developer
Join Date: Jun 2003
Location: Spain
Posts: 149
|
@Blkbird
Thanks for the tips, I will follow your advices. About my "execute commandline function", I donīt see significative differences respect the one you post. Just that mine waits proccess finish to read stdout of mkvmerge. Anyways, I am thinking at implementing a running stdout of mkvextract in real time for logging purposes, and your lines will be helpful. For example, quicktime tracks extraction is not supported in actual mkvextract.exe, and a realtime log would help a lot with that. @Mosu I understand you perfectly, this is a small app that I programmed because I really needed a friendly GUI working with mkv files. I just uploaded it trying to help. I will add some little features, like described before, and I wonīt follow with this. I just wait my code can help in future versions of mkvtoolnix tools or other oficial mkvextracts GUIs. Regards |
![]() |
![]() |
![]() |
#16 | Link | |
Registered User
Join Date: Dec 2003
Location: somewhere in europe
Posts: 7
|
Hi,
very great tool ![]() Quote:
Code:
D:\Programme\mkvtoolnix-0.7.9>mkvinfo "G:\pearl jam - unplugged.mkv" + EBML head + Segment, size 203020766 |+ Seek head (subentries will be skipped) |+ EbmlVoid (size: 4012) |+ Segment information | + Muxing application: libebml v0.6.4 + libmatroska v0.6.3 | + Writing application: mkvmerge v0.8.5 built on Feb 22 2004 12:17:21 | + Duration: 1270.708s (00:21:10.708) | + Date: Fri Apr 09 15:23:05 2004 UTC | + Segment UID: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x0 0 0x00 0x00 0x00 |+ Segment tracks | + A track | + Track number: 1 | + Track UID: 3615884962 | + Track type: video | + MinCache: 1 | + Timecode scale: 1.000000 | + Codec ID: V_MS/VFW/FOURCC | + CodecPrivate, length 40 (FourCC: XVID, 0x44495658) | + Default duration: 40.000ms (25.000 fps for a video track) | + Default flag: 1 | + Language: eng | + Video track | + Pixel width: 512 | + Pixel height: 384 | + Display width: 512 | + Display height: 384 | + Lacing flag: 0 | + A track | + Track number: 2 | + Track UID: 4253427506 | + Track type: audio | + MinCache: 0 | + Timecode scale: 1.000000 | + Codec ID: A_AAC/MPEG4/LC/SBR | + Default duration: 42.667ms (23.438 fps for a video track) | + Default flag: 1 | + Language: eng | + Audio track | + Sampling frequency: 24000.000000 | + Channels: 2 | + Output sampling frequency: 48000.000000 |+ EbmlVoid (size: 1024) |+ Chapters | + Edition entry | + Chapter atom | + UID: 1975521926 | + Start: 00:00:00.000 | + Display | + String: state of love and trust | + Language: eng | + Chapter atom | + UID: 4066679778 | + Start: 00:03:56.000 | + Display | + String: alive | + Language: eng | + Chapter atom | + UID: 2282679044 | + Start: 00:09:20.000 | + Display | + String: jeremy | + Language: eng | + Chapter atom | + UID: 788539922 | + Start: 00:14:40.000 | + Display | + String: porch | + Language: eng |+ Cluster Code:
CHAPTER01=00:00:00.000 CHAPTER01NAME=state of love and trust CHAPTER02=00:03:56.000 CHAPTER02NAME=alive CHAPTER03=00:09:20.000 CHAPTER03NAME=jeremy CHAPTER04=00:14:40.000 CHAPTER04NAME=porch ....cya |
|
![]() |
![]() |
![]() |
#17 | Link | |
MKVToolNix author
Join Date: Sep 2002
Location: Braunschweig, Germany
Posts: 4,316
|
Quote:
__________________
Latest MKVToolNix is v92.0 If I ever ask you to upload something, please use my file server. |
|
![]() |
![]() |
![]() |
#18 | Link |
ARCalculator Developer
Join Date: Jun 2003
Location: Spain
Posts: 149
|
MKVExtract GUI 1.5
Changelog since MKVExtract 1.2:
-Added chapters and tags extraction support. (They will be showed like the rest of tracks/attachments). Chapters can be extracted in XML and Simple(OGG)txt formats. Tags only can be extracted in xml. -A lot of internal corrections. -Monospace font for CommandLines. -Added RM files extraction.(Added in latest mkvtoolnix 0.8.7) -Added new formats system that will allow you to customize the GUI for future A/V formats actually not supported by mkvextract. For example: QUICKTIME A/V extraction is not supported by mkvtoolnix 0.8.7, but it is for sure that future versions will do. If you check in MKVExtract GUI a track like this: Track ID 1 (V_QUICKTIME) Then the program will ask you what output extension you want to assing to that sort of track. (In this case qtv) So the next time you find that sort of track, the program will remember it and will assing the output ext automatically. The new formats are saved into Formats.txt file, so you can edit/delete/add them easily. (TRACK_TYPE) ext ------------------------------ Example of Formats.txt file: (V_QUICKTIME) qtv (A_QUICKTIME/QDM2) qta ------------------------------ |
![]() |
![]() |
![]() |
#20 | Link | |
MKVToolNix author
Join Date: Sep 2002
Location: Braunschweig, Germany
Posts: 4,316
|
Quote:
__________________
Latest MKVToolNix is v92.0 If I ever ask you to upload something, please use my file server. |
|
![]() |
![]() |
![]() |
Thread Tools | Search this Thread |
Display Modes | |
|
|