Jump to content
Tuts 4 You
LCF-AT

FFmpeg Quicky 1.0

Rate this topic

Recommended Posts

LCF-AT

Hi guys,

I am a fan of FFmpeg CLI tool but its always hard to remember all commandline arguments if I didnt used it for a longer while and I can't find my notes about it (as always).Now I thought it would be a good idea to code a GUI tool where I can use FFmpeg with and store all commandline argument combinations I want into it to call and execute them quickly.I know there are already a few GUI tools out there for FFmpeg but they have some limitations and or are not my taste.So you know I have always a special taste and wanna combine all together in the best case.Now after few months I am done with a first version and wanna also share it with you guys.

App_pic1.png.0a7dc76b6a55f8c7788db27a63097027.png

App_pic2.png.42b94b0e4b5c98cb4aeb0375ea511c79.png

First Steps
--------------------------------------------
Start the app and enter your FFmpeg path.If you dont have it then download a static build from FFmpeg.org or ffmpeg.zeranoe.com/builds/

Next should have installed the VLC player (2.2.6 in my case)

How it works?
--------------------------------------------
So the app has 2 diffrent GUIs.The main GUI you can use for media editing,converting etc all what you can do with FFmpeg commandline arguments.The seconds GUI I made specially for quick handling of streams to play download them plus more features which could be important.
 

Features: Main GUI
--------------------------------------------
-Quick analysis of files after drag & drop into the app and showing the info into it
-Full analysis of file by MediaInfo or FFmpeg itself
-Preview image of video files & quick playing by your video player
-Three diffrent commandline edit controls in main GUI to execute with FFmpeg
-Quick Mux / DeMux function to extract / add / change streams without re-encoding in Concat or Input mode
-Window to see whole FFmpeg traffic
-Storage listview to (add / delete / send / play / record / search) manage your commandlines and infos
-NoFile (you can use FFmpeg like in a normal CMD window)

Features: Quicky GUI
--------------------------------------------
-Store and choose diffrent URLs by menu
-Store and choose diffrent commandline args by menu
-Store and choose diffrent pre commandline args by menu
-Store and choose diffrent names by menu (Will used to save into file and showing in VLC)
-Play,Download,Edit,Search functions etc
-Store names and URLs into extra listview
-Store and call till three custom request headers
-Diffrent choosable request methods,user agents and optinal headers
-Url checking (with or without SSL)
-Reading pagesources
-Finding URL extensions
-Response Header
-Switch View (CRLF)
-JSON Viewer
-URL Decoder
-OnTop On/Off

I also created a video with some examples how to use my app but the video was getting a little big with 50 MB so I am sorry for that.Inside you can also find some text files with infos.If something not works or if I forgot to explain some feature or anything else than just post a reply in this topic.Have fun and till later.

PS: I also wanna send some extra special thanks to our member fearless who always helped me a lot (without getting crazy - I think so..) with all my coding questions I had.Thank you.

Merry Christmas and greetz

FFmpeg Quicky 1.0.rar

  • Like 12
  • Thanks 3

Share this post


Link to post
Share on other sites
White

nice to hear that you are still active :lol:

Share this post


Link to post
Share on other sites
Teddy Rogers
8 hours ago, LCF-AT said:

So you know I have always a special taste

Lol! Too right we know this! Have a merry Christmas, wishing you and family all the best... :)

Ted.

Share this post


Link to post
Share on other sites
ragdog

Nice Tool Lcf !

Can you contact me your Pm is Full.

Greets,

Share this post


Link to post
Share on other sites
GaBoR

I get the following error when loading a video:

Quote

---------------------------
Problem!
---------------------------
FFmpeg.exe has wrong file attributes!
---------------------------
OK   
---------------------------

 

What does that mean? I downloaded static ffmpeg from ffmpeg.zeranoe.com/builds/

Share this post


Link to post
Share on other sites
LCF-AT

Hi,

the function does check whether the used FFmpeg.exe file contains the FILE_ATTRIBUTE_ARCHIVE flag.Just check the attributes of your FFmpeg.exe file you are using.If you see first both flags enabled like in the picture below then it should work.

File-Properties-Advanced-Attributes-Wind

If you still get the same error message then check the function GetFileAttributesA in Olly with my app and see what you got back.

0015F5C4   013E36B4  /CALL to GetFileAttributesA from bones.013E36AF
0015F5C8   01617F0F  \FileName = "C:\ffmpeg-4.0.1-win32-static\bin 1\ffmpeg.exe"

eax return -1  = INVALID_FILE_ATTRIBUTES
eax return 20h = FILE_ATTRIBUTE_ARCHIVE  = success

greetz

Share this post


Link to post
Share on other sites
GaBoR

Ok. That fixed it.

When I try to drag and drop a video file sometimes nothing happens or the program quits. Event viewer log:

Quote

Faulting application name: FFmpeg Quicky 1.0.exe, version: 1.0.0.0, time stamp: 0x5c1ea62d
Faulting module name: SHELL32.dll, version: 10.0.17134.441, time stamp: 0x9756f2d9
Exception code: 0xc0000005
Fault offset: 0x001f51a3
Faulting process ID: 0xbfc
Faulting application start time: 0x01d4b97ec4db73c1
Faulting application path: F:\ff\FFmpeg Quicky 1.0.exe
Faulting module path: C:\WINDOWS\System32\SHELL32.dll

 

Share this post


Link to post
Share on other sites
LCF-AT

Hi,

what OS are you using?

You can try this.Load the app in OllyDBG and run it.Now enter the RVA address 00003668 (WM_DROPFILES check).Now you see this code..

00003668 RVA WM_DROPFILES

$ ==>    01073668     3D 33020000             CMP EAX,0x233                           ; WM_DROPFILES
$+5      0107366D     0F85 42020000           JNZ 010738B5                            ; 
$+B      01073673     68 00040000             PUSH 0x400
$+10     01073678     68 0F7F2A01             PUSH 0x12A7F0F                          ; ASCII "C:\ffmpeg-4.0.1-win32-static\bin 1\ffmpeg.exe"
$+15     0107367D     68 EA030000             PUSH 0x3EA
$+1A     01073682     FF35 836E2A01           PUSH DWORD PTR DS:[0x12A6E83]
$+20     01073688     E8 93180100             CALL 01084F20                           ; <JMP.&user32.GetDlgItemTextA>
$+25     0107368D     0BC0                    OR EAX,EAX
$+27     0107368F     75 19                   JNZ SHORT 010736AA                      ; 
$+29     01073691     6A 30                   PUSH 0x30
$+2B     01073693     68 9C652901             PUSH 0x129659C                          ; ASCII "Problem!"
$+30     01073698     68 70652901             PUSH 0x1296570                          ; ASCII "You need to enter the path to FFmpeg.exe"
$+35     0107369D     FF75 08                 PUSH DWORD PTR SS:[EBP+0x8]
$+38     010736A0     E8 ED180100             CALL 01084F92                           ; <JMP.&user32.MessageBoxA>
$+3D     010736A5     E9 06020000             JMP 010738B0                            ; 
$+42     010736AA     68 0F7F2A01             PUSH 0x12A7F0F                          ; ASCII "C:\ffmpeg-4.0.1-win32-static\bin 1\ffmpeg.exe"
$+47     010736AF     E8 C2160100             CALL 01084D76                           ; <JMP.&kernel32.GetFileAttributesA>
$+4C     010736B4     83F8 FF                 CMP EAX,-0x1
$+4F     010736B7     75 1B                   JNZ SHORT 010736D4                      ; 
$+51     010736B9     6A 30                   PUSH 0x30
$+53     010736BB     68 CC652901             PUSH 0x12965CC                          ; ASCII "Problem!"
$+58     010736C0     68 A8652901             PUSH 0x12965A8                          ; ASCII "Enter correct path to FFmpeg.exe"
$+5D     010736C5     FF75 08                 PUSH DWORD PTR SS:[EBP+0x8]
$+60     010736C8     E8 C5180100             CALL 01084F92                           ; <JMP.&user32.MessageBoxA>
$+65     010736CD     E9 DE010000             JMP 010738B0                            ; 
$+6A     010736D2     EB 1E                   JMP SHORT 010736F2                      ; 
$+6C     010736D4     83F8 20                 CMP EAX,0x20
$+6F     010736D7     74 19                   JE SHORT 010736F2                       ; 
$+71     010736D9     6A 30                   PUSH 0x30
$+73     010736DB     68 00662901             PUSH 0x1296600                          ; ASCII "Problem!"
$+78     010736E0     68 D8652901             PUSH 0x12965D8                          ; ASCII "FFmpeg.exe has wrong file attributes!"
$+7D     010736E5     FF75 08                 PUSH DWORD PTR SS:[EBP+0x8]
$+80     010736E8     E8 A5180100             CALL 01084F92                           ; <JMP.&user32.MessageBoxA>
$+85     010736ED     E9 BE010000             JMP 010738B0                            ; 
$+8A     010736F2     6A 00                   PUSH 0x0                                ; <-------------- A
$+8C     010736F4     6A 00                   PUSH 0x0
$+8E     010736F6     FF75 10                 PUSH DWORD PTR SS:[EBP+0x10]
$+91     010736F9     68 4D0B0801             PUSH 0x1080B4D
$+96     010736FE     6A 00                   PUSH 0x0
$+98     01073700     6A 00                   PUSH 0x0
$+9A     01073702     E8 33160100             CALL 01084D3A                           ; <JMP.&kernel32.CreateThread>
$+9F     01073707     0BC0                    OR EAX,EAX
$+A1     01073709     74 06                   JE SHORT 01073711                       ; 
$+A3     0107370B     50                      PUSH EAX
$+A4     0107370C     E8 0B160100             CALL 01084D1C                           ; <JMP.&kernel32.CloseHandle>
$+A9     01073711     33C0                    XOR EAX,EAX
$+AB     01073713     C9                      LEAVE
$+AC     01073714     C2 1000                 RETN 0x10                               ; <-------------- A
$+AF     01073717     8D3D 0F832A01           LEA EDI,DWORD PTR DS:[0x12A830F]
$+B5     0107371D     33C0                    XOR EAX,EAX
$+B7     0107371F     B9 00080000             MOV ECX,0x800
$+BC     01073724     F3:AA                   REP STOS BYTE PTR ES:[EDI]
$+BE     01073726     68 00080000             PUSH 0x800
$+C3     0107372B     68 0F832A01             PUSH 0x12A830F                          ; ASCII "File_09-01-2019_22-10-05-01_A.mp4"
$+C8     01073730     6A FF                   PUSH -0x1
$+CA     01073732     FF75 10                 PUSH DWORD PTR SS:[EBP+0x10]
$+CD     01073735     E8 30190100             CALL 0108506A                           ; <JMP.&shell32.DragQueryFileA>
$+D2     0107373A     0BC0                    OR EAX,EAX
$+D4     0107373C     0F84 082C0000           JE 0107634A                             ; 
$+DA     01073742     8BF8                    MOV EDI,EAX
$+DC     01073744     893D FCF72901           MOV DWORD PTR DS:[0x129F7FC],EDI
$+E2     0107374A     BE 00000000             MOV ESI,0x0
$+E7     0107374F     8935 00F82901           MOV DWORD PTR DS:[0x129F800],ESI
$+ED     01073755     6A 00                   PUSH 0x0                                ; <-------------- B
$+EF     01073757     6A 00                   PUSH 0x0
$+F1     01073759     FF35 FCF72901           PUSH DWORD PTR DS:[0x129F7FC]
$+F7     0107375F     68 18080801             PUSH 0x1080818
$+FC     01073764     6A 00                   PUSH 0x0
$+FE     01073766     6A 00                   PUSH 0x0
$+100    01073768     E8 CD150100             CALL 01084D3A                           ; <JMP.&kernel32.CreateThread>
$+105    0107376D     0BC0                    OR EAX,EAX
$+107    0107376F     74 06                   JE SHORT 01073777                       ; 
$+109    01073771     50                      PUSH EAX
$+10A    01073772     E8 A5150100             CALL 01084D1C                           ; <JMP.&kernel32.CloseHandle>
$+10F    01073777     E9 2C010000             JMP 010738A8                            ; <-------------- B

....I marked 2 location areas starting with A till A and B till B.Now just mark first the area A till A and NOP it.Now drag a file into my app and  see what happens.If it does still crash or nothing happens / error etc then load the app again,run it and now mark the area A till A and NOP it again and after that mark also the area B till B and NOP it too and now drag a file into the app and see what happens now.After that send some feedback.

PS: I made a quick loader file to patch that 2 locations.Just put it into the app folder and run it and then drag any file.

FFmpeg Quicky 1.0_Assembly-Loader.rar

greetz

 

Share this post


Link to post
Share on other sites
GaBoR

I have Windows 10 Pro 1803 64 bit.

With the loader it's working correctly.

Share this post


Link to post
Share on other sites
LCF-AT

Hi,

hhmmm.Ok.Maybe there is any problem with Shell_NotifyIcon function so that it crashs on your OS.Not sure.Best would be if you could find out which app code was accessed before it did crash.Some address in main code.

PS: About the loader file.It does disable showing the loader image and progressbars and tray percent usage.Somewhere in this code must be the reason for that crash.

greetz

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×