Jump to content
Tuts 4 You
Sign in to follow this  
LCF-AT

FFmpeg Quicky 1.1 (update)

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

EDIT: Update to version 1.1

Today I wanna release the new version 1.1.I fixed some bugs to get it work on x64 too without problems (since I do use x64 too) and I also addedd some new tiny features.

New Features in version 1.1
----------------------------------------------------
- fixed some bugs to get it work on x64 systems (Win10 x64 in my case)
- removed some music, loader image & percent usage of loading files to make it faster and smaller
- added FFmpeg Info popup menu on main window to show all important infos & examples of commands you can use
- added support for using FFplay & FFprobe (you need to have both files into same folder of FFmpeg)
- added extern URL / protocol support on main window to use it with FFmpeg, FFplay & FFprobe
- added support to pipe FFmpeg to FFplay to see results on fly for files & URL
- added suports to download URL to file (using date time)
- added find menu to search & find some text quickly
- added Unicode Chars converter to format found extension links clean (Quick Stream Handling window)
- changed output text font style on main window to show it clean

Description about new features
----------------------------------------------------
The new version is all in all same as before just with some new features you can use on the main window.
Now its possible to use the other two CLI tools FFplay & FFprobe too to execute them with your commands and 
selected file or URL.So in this case you can always check & see (FFplay) the results on fly before you want 
to encode the file/s new or download any stream with your desired command parameters.Under the menu point 
"Show FFmpeg Infos" you can find a lot example commands with descriptions I did testet all by myself of course 
and also how to encode video/audio (h.264 / 265) streams.

Just keep in mind using FFmpeg x64 static build on x64 OS to prevent problems with some FFmpeg commands which could fail or not work for 100% if you do use the x86 build on x64 OS.The FFplay & FFprobe you should also have into same folder of your FFmpeg you need to enter first in this app before you can start using it.The rest is still same as in version 1.0.I also made a little new video again how to use the new features.If something should not work (I don't hope so) then just post a reply in this topic.Have fun with the new version and til later.

FFmpeg Quicky 1.1.7z

Edited by LCF-AT
Update to version 1.1 (see edit history)
  • Like 12
  • Thanks 4

Share this post


Link to post
collins

Merry Christmas!

Share this post


Link to post
White

nice to hear that you are still active :lol:

Share this post


Link to post
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
ragdog

Nice Tool Lcf !

Can you contact me your Pm is Full.

Greets,

Share this post


Link to post
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
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
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
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
GaBoR

I have Windows 10 Pro 1803 64 bit.

With the loader it's working correctly.

Share this post


Link to post
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
LCF-AT

Hi again,

short info.Now I do use Win10 64 bit and I see that some of my apps arent working correctly like this app (drag / drop nothing happens / no file gets loaded and added to list similar like GaBoR said).I could fix that problems (seems to be my fault because I was using threads with 4 paramters instead of one) to get it work same like on 32 bit systems.So if anyone is still interested into this app etc then I will update it soon to release a new working version you can use on x64 too (just make some  more tests but all seems to work now so far).

greetz

  • Thanks 1

Share this post


Link to post
LCF-AT

Hi guys,

I just released the new version 1.1.Just read the first post to see all new infos and download link.If you don't know the version 1.0 already then check this out too (see video).In version 1.1 set I just show how to use the new features only in the new video.

greetz

Share this post


Link to post

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
Sign in to follow this  
×
×
  • Create New...