Giter Club home page Giter Club logo

webmgenerator's Introduction

WebmGenerator

UI Preview

A tool for cutting, filtering and joining video clips, supports webm (VP8, VP9), mp4 (x264, H.265, SVT AV1) and high quality gif outputs, includes realtime effect filtering and transition effects between scenes.

Some examples of the possible outputs are in the wiki

External dependencies:

All of these should be placed into the same folder as the script or on the PATH.

Python dependencies:

To run with python 3 directly these packages are used:

  • python-mpv
  • pygubu
  • numpy
  • pathvalidate
  • tkinterdnd2

pip can install them all for you with a single command:

pip3 install -r requirements.txt

For Linux users tkinter may not be installed, to install it in ubuntu for example run: sudo apt-get install python3-tk

Alternatively windows users may use one of the recent bundled releases: https://github.com/dfaker/WebmGenerator/releases.

Usage

to start run webmGenerator.py or drop video files directly onto webmGenerator.py.

Starting up - Initial Interface

Initial Interface

Initially the application opens in the Cuts tab, in the left-hand panel you have a Slice settings frame:

  • Set Slice Length - To set the length of sub clips when they're initially added, you can always resize them later.
  • Set the Target Length - The final duration you want to hit.
  • Set the Target Trim - The expected overlap of clips if you use a transition effect to cross-cut between them, if you expect to use hard cuts set this to zero.
  • Set the Drag offset - The amount that the current playback location will be shifted back from the end of the subclip (hold ctrl to shift forwards from the start instead) when dragging a preview, large values can be useful in aligning an event between videos.

Below that are:

  • A volume control for playback.
  • A status line 00.00s 0.00% (-0.00s) showing you how many combine seconds you have selected, the percentage to your target duration you're at, and how many seconds are being deducted from the total by the Target Trim what we expect adding a 0.25 second cross fade between the clips will deduct.
  • A progress indicator to show you how far from hitting target length you are, it turns red when the total of your selected clips exceeds your target length.

Below that is your source videos frame, you can click Load Videos to load one or more source videos for cutting, or quickly clear all of your sub clip selections to start your cut process again.

Cutting the Clips - Subclip Selection

Sub clip Selection

Once a clip is loaded the bottom dark gray panel changes into a video timeline, you can left click anywhere in it or click and drag to scrub though the video.

Right clicking brings up a context menu that allows you to:

  • Add new subclip - A new subclip to be cut out will be added to the timeline centered around the point you right clicked, initially it will have the same duration as you set in Slice Length
  • Delete subclip - Removes the subclip under where you right clicked.
  • Clone subclip - Duplicates the subclip under where you right clicked.
  • Copy subclip - Copies the timestamps of the subclip under where you right clicked into an internal clipboard.
  • Paste subclip - Pastes the timestamps of the subclip under where you right clicked from the internal clipboard, possibly onto a different video.
  • Expand to interest marks - Extends the the subclip under where you right clicked to that the start and end markers align with the next other interest or scene change markers.
  • Add interest mark - Adds a visual indicator at a time position, no effect on the output but is useful when watching through and decing representative scenes.
  • Nudge to the lowest error +- #s - Attempts to move the start and end markers (no more than 1 or 2 seconds back and forth) to find a 'perfect loop' for making looping videos, will process in the background and update the subclip under where you right clicked when complete.
  • Find loop at most #s here - Scans around where you right clicked on the timeline to find the best 'perfect loop' at most # seconds long.

Once a clip has been added you can drag the blue and red start and end markers to change the start and end points of the subclip, the player will seek to whatever position your drag the start or end point to.

When a start and end marker has been clicked it will remain selected with a white border, the left and right arrow keys can be used to move the selected marker a single frame forwards and backwards for precise start and end point selection.

The green central bar between the markers may also be dragged to move the whole time window back and forth while keeping the same subclip duration.

Scrolling the mouse wheel on the timeline will zoom in and out, the gray bar at the top of the timeline window may then be used to scrub your zoomed view through the clip to view earlier or later sections.

Scrolling the mouse wheel on the green selection bar at the bottom of a subclip will shift that sublcip (both start and end) forwards and backwards while retaining total duration.

Cutting More - Markers and Size Targeting

Markers and Length Targeting

The above image shows both the presence of the timeline markers added with Add interest mark and multiple sub clips that have already been added and resized, Not that with these three sections selected the final output duration is at 1:56 seconds, because this is over the selected Target Length the progress bar is red.

Add Effects - Filtering

Filtering

Once all subclips have been defined you may want to use the Filters tab to add visual filters, denoising or cropping, but this tab can be skipped if you don't need any filters applied.

The right-hand pane shows you a real-time video preview of what your output will look like with the selected filters applied.

The left-hand pane shows:

  • A sub clip navigation block with the current subclip name timespan and where it is in the order of selected clips, the two arrows to the left and right of this block allow you to page through the subclips you've selected.
  • Clear, Copy and Paste buttons that will either, remove all filters from the current clip, copy all the filters on the current subclip to a clipboard for later pasting, and paste the currently copied filters onto a new clip.
  • A filter selection frame with a drop down of available filters and a button to add the selected filter to the current subclip.

Below that is the stack of filters applied to the current subclip, this clip has had a hue adjustment added and a pre-configired libpostproc filter for denoising and deblocking poorly encoded video.

Each of the filters may be Removed, Enabled, or moved up and down the filtering order with the buttons that appear below its title, if the filter has any input options they will be displayed as input fields below these buttons, the hue filter in the image for example has been configured to shift the 'h' hue value by 0.42 and increase the 's' saturation value by 3.4.

Adjust effects in time - Timeline Filtering

Timeline Filtering

Certain filter values have two buttons to their left T and S, clicking T will stop using the supplied filter value and switch the parameter to use timeline keyframed values, pressing S selects the parameter and displays that parameter's currently keyframe values on the lower timeline.

The example shows an overlay filer in use, both the x and y cordindate parameters are both enabed as timeline keyframed values, te y parameter is selected and has 4 keyframed values set causing the overlaid batman mask to drif up slowly to follow the actor's face during the scene.

Right clicking on the lower timeline displays a menu allowing addition or removal of Keyframed valyes, scrolling the mousewheel will increment or decrement an existing keyframed value and seek to the keyframed time in the clip - it's recomended to reduce the Preview speed during this operation for more accurate adjustments.

Advanced controls for rotation and alignment- Timeline Filtering

Some pretty experimental controls for the timeline at the moment, we'll no doubt refine them:

On lower timeline bar:

  • Left, Right - Seeks bakwards and forwards single frames.
  • Shift+Left, Shift+Right - Seeks bakwards and forwards in jumps.
  • Ctrl+Left, Ctrl+Right - Seeks bakwards and between the midpoints of th gaps of already defined keyframes.
  • UpArrow,DownArrow - Add a new keyframe at the current time to the selected property, if a keyframe exists at this time increment or decrement it.
  • N - Jump to the middle of the largest gap between the currently placed keyframes.
  • I - Add spline interpolated inbetween keyframes, adding more interpolated points to your keyframes and smoothing motion, between 0-23 interpolated keyframes will be added for each second of video, tap the key to increase the count and then cycle back to zero.

When an angle property is slected on the video player:

  • Ctrl+Shift+LeftClick+Drag Mouse - Draw a line, when the mouse is released a keyframe will be created to rotate the video so that line aligns with the closest 90Degree angle, making the line you've just drawn horiontal or vertical.
  • Ctrl+LeftClick+Drag Mouse - As above but after adding the rotated video keyframe, Jump to the middle of the largest gap between the currently placed keyframes.

When an X or Y property is slected on the video player:

  • Right click on the video and select Set target position for X and Y warping this will be the place that further points are slifted to align with.
  • LeftClick on the video and the point you clicked will be incrmented aginst the current keyframe, effectively shifting that point to match the X or Y position of the red target set in Set target position for X and Y warping
  • Ctrl+LeftClick - As above but after adding the shifted X or Y video keyframe, Jump to the middle of the largest gap between the currently placed keyframes.

Join - Sequencing and Transitions

Sequencing and Transitions

Finally, is the Merge tab, If you've not visited it during the current clipping session it'll automatically add all current clips into the sequence on first visit.

The top Available Cuts frame shows all of your currently selected sub clips along with a preview of what they'll look like with their applied filters, the button below each is used to add them in to the lower Sequence frame.

The Merge style drop down allows you to switch between joining all the selected clips together, or outputting them as individual isolated clips.

The Sequence panel is the order in which your selected sub clips will appear in the output, the left and right arrow buttons move the sub clips back and forwards in the final video order, the Remove button removes the clip from the planned sequence entirely while keeping it available in the top Avlaible Cuts for re-adding later.

As we're in Sequence mode we have two options to control the fade effect between clips, if any:

  • Transition Duration - Low long the transition effects between clips will last, if you want hard cuts set this to zero.
  • Transition style - The look of the transition effects between clips, examples can be seen at https://trac.ffmpeg.org/wiki/Xfade

On thw loer frame we have the configuration for the output clips:

  • Output format - Allows the selection of output format between mpv, webm and gif.
  • Output filename prefix - the name that will be added to the start of the final video's filename, this is automatically guessed from the input videos if possible.
  • Maximum File Size - The maximum size the output is allowed to be in MB, if the final video is larger than this encoding will be attempted again at a reduced quality (or reduced size for .gifs), if set to zero any output size no matter how large is allowed.
  • Size Match Strategy - How to handle input videos of difference sizes.
  • Limit Largest Dimension - The maximum output width or height of the final video (whichever is greater), if the output is larger it'll be scaled down, if smaller it'll be left untouched.
  • Audio Channels - Controls the presence or absence of audio in the output, including no sound, and various mono and stereo bitrates.
  • Speed Adjustment - Will perform a speed-up on the final clip while keeping the sound realistic, a minimum and maximum of 0.5x and 2x are possible but generally becomes distracting over 0.12x

Make that Video - Encoding

Encoding

When you have a sequence you're happy with, you can click 'Encode' to start the encoding process, the progress of the encoding run will be displayed at the bottom as a progress bar, submitted encoding jobs are processed sequentially.

The tool will first make the cuts and apply filters to the subclips and save them in a temporary folder called tempVideoFiles this is cleared down after every exit. After all the clips are cut and filtered they will be joined and if they pass the Maximum File Size limit, if any they, will be saved to a folder in the same directory as the script called finalVideos, if there is a size limit in place the final encoding step will be repeated using the same tempVideoFiles at a lower quality.

Menu and Options

Menus

A number of options and utilities are placed within the three menus at the top of the window:

  • New Project - Clears all configuration, closes all clips and refreshes for a fresh session.
  • Open Project - Opens a previously saved project from a *.webmproj file.
  • Save Project - Saves a previously save project to a *.webmproj file.
  • Run Scene Change Detection - Scans through the current video looking for scene changes, adds a timeline marker when scene chages are detected.
  • Load Video From Youtube-dlp supported URL - Load a video or stream from any youtube-dlp supported site, hudreds of sites supported.
  • Load Image as static video - Load an image as a video clip, will ask that duration the image should be padded out to on load.
  • Watch Clipboard and automatically add urls - Starts a watcher thread that monitors your clipboard for urls and attempts to download them autoamtically.
  • Cancel Current youtube-dlp download - For live streams in particular the stream may continue for hours after the event you wish to capature, this ends it gracefully and save the file.
  • Update Yuoutube-dl - As sites change their layouts and apis youtube-dlp goes out of date and stops working, this allows you to update with new extractors.
  • Split clip into n equal subclips - Splits the current video into however many equal subclips you request, good for splitting up long videos where the edit points don't matter.
  • Split clip into sibclips of n seconds - Similar but cuts the clip into however many sections of n seconds will fit, with the last section being cut shorter if required.
  • Toggle Generation of audio spectra - Shows the video clips soundwave in the back of the timeline to help with positioning cuts relative to audio events.
  • Clear all clips on current clip - Clears all of the subclips defined on the current video.
  • Add Subclip by text Range - Accepts ranges as text for example "1:23 to 1:48.2" or "12s - 13.5s" and adds them as new subclips, a range of formats accepted.

configuration.json

statsWorkers - The number of threads that are allowed to run, have responsibility for background analysis of video such as scene changes and audio loudness isolation.

encodeWorkers - The number of ffmpeg instances that will run to perform the final encodes in parallel.

imageWorkers - The number of threads dedicated to providding the filter preview images and timeline thumbnails.

encoderStageThreads - The number of threads used by the final encoder if it supports multi-threaded encoding.

maxSizeOptimizationRetries - The maximim number of times the system will attempt to get under the file size target before giving up.

tempFolder- The folder where in-progress video files are stored.

tempDownloadFolder - The folder where downloads from youtube-dlp are placed.

downloadNameFormat - A naming mask that controls how youtube-dlp formats the final filename output.

defaultProfile - The default profile that is initially selected and set in the encode tab.

defaultPostProcessingFilter - The default post filter that's applied in the encode tab.

defaultSliceLength - The default length of a subclip added with the 'b' key or add new subclip menu option.

defaultTargetLength - The target duration the length counter and warning bar is set to on the cuts tab.

defaultTrimLength - The default amount of time assumed to be taken up in fades between scenes.

defaultDragOffset - The amount of time the seek position will skip back into the video when dragging the wntire subclip.

defaultVideoFolder - Default folder to open when opeining a new video file.

defaultImageFolder - Default folder to open when opeining a new image file.

defaultAudioFolder - Default folder to open when opeining a new audio file.

defaultFontFolder - Default folder to open when opeining a new font file.

defaultSubtitleFolder - Default folder to open when opeining a new subtitle *.srt file.

loopNudgeLimit1,loopNudgeLimit2,loopSearchLower1,loopSearchUpper1,loopSearchLower2,loopSearchUpper2 - The maximum and minimum ranges that the 'loop tools' menu will use during scans.

seekSpeedNormal - Standard seek speed.

seekSpeedFast - Seek speed when holding down shift.

seekSpeedSlow - Seek speed when holding down ctrl-shift.

webmgenerator's People

Contributors

dependabot[bot] avatar dfaker avatar dumboluzz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

webmgenerator's Issues

Subtitles will "stay on" if they are not replaced by a next line

I used a SRT format subtitles on a video using the subtitles filter. I made the subs using Aegisub 3.2.2.
Basically, last line of subs currently on display will remain on screen until it is replaced by another line, instead of disappearing at registered end timing.. Essentially, it's like it doesn't recognize the end timing of subtitle lines.
On webmGenerator v.3.11.3

tkinter EventType

So basically ever since 3.8.7 python has changed how it treads str() for tkinter.EventType
https://docs.python.org/release/3.8.7/whatsnew/changelog.html

So if you debug with a modern version of python pieces of code like:
if (str(e.type) in ('ButtonRelease'))
Will simply not work as indented as str(e.Type) it will only return the position in the enum as a string instead of "ButtonRelease".

Instead change it to:
if (e.type ==tk.EventType.ButtonRelease)

Start by refactoring this issue in
TimeLineSelectionFrameUI

Numbered subclips + more suggestions

Since the subclips in the filter tab are numbered, it would be helpful if the subclips on the merge tab correlate. Makes exporting specific clips easier than having to count each subclip yourself.

I was also wondering if there was any benefit to a global filter disable/enable button, maybe on the merge screen. This is likely a personal use case, as I tend to export an unfiltered version of clips, then a second export with filters. This is done easily if I remember to export clips before I go through and add filters, but sometimes i'll either go back and add more subclips, which affects the numbered order of files, or i'll just forget.

Not sure if I've mentioned this before, but when you disable a subclip's filter and click to the next or previous clip, when you click back to that initial subclip the disabled filters reenable. So if I want to go back and turn off filters, I have to go through individually in one direction, and hope that I spent enough time on the subclip for it to load changes on the merge tab. Again, likely specific issues with my own methods, so no pressure if you disregard.

Some minor suggestions are less about usage, but I noticed in the filter options, "synchronization" is misspelled. Also on the main github page, available is misspelled in the Join section. Extremely pedantic on my end.

Thanks for tolerating my posts, your tool is extremely well made and I appreciate your work.

Subclips section broken after update

Just updated after a long time on ver. 3. The subclips is compressed to a point where I can't see thumbnails or time. Attached a screencap for example. I unzipped in a new folder and the issue remained. Thanks for your help and I apologise if this is too individual of an issue.
Screenshot 2021-10-16 195204

Getting FileNotFoundError for some reason

I've been getting this error for some reason. It was working fine till now. I don't remember making any changes to break something. I've attached part of the log below. Full logs here: https://pastebin.com/gii55L5M

Complete Pass 1 Encode Pass 2  ed_1.mp4 0.75
2022-03-24 17:16:38,113 [Thread-6    ] [ERROR]  unhandled CONCAT exception
Traceback (most recent call last):
  File "K:\WebmGenerator\src\ffmpegService.py", line 1004, in encodeWorker
  File "K:\WebmGenerator\src\ffmpegService.py", line 973, in encodeConcat
  File "K:\WebmGenerator\src\encoders\mp4x264Encoder.py", line 133, in encoder
  File "K:\WebmGenerator\src\optimisers\linear.py", line 31, in encodeTargetingSize
  File "K:\WebmGenerator\src\encoders\mp4x264Encoder.py", line 124, in encoderFunction
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'tempVideoFiles\\ed_1.mp4'

[Feature Request] Option to set default folder locations for when file picking

What I mean is that the last remembered location for file picking is shared between all file picking scenarios.
So, if I open WebmGenerator and pick a video to open from my Videos folder, when I eventually go and add a filter that requires to pick a font to use, the file picker will open in my previously visited Videos folder. And vice-versa, next time I open WebmGenerator, when I go to open a video file, it'll open in the directory where I picked my font previously. This behavior creates a lot of unnecessary navigating when picking a video or a font in succession, for example.

Suggestion 1, my personaly preferred one:
Have a setting to set a default folder to open when picking a file depending on the button.
Default location to open for Load Videos, default location to open for fonts...

Suggestion 2:
Make remembering the last folder visited in file picker button specific. As in, Load Videos button will remember its own last visited folder. Font picker for drawtext for example will remember it's own last visited folder as well.

Feature request: Add a "Cancel All" button to current encodes screen

I have been a couple times in the situation where I just launched the encoding for a big batch of encodes only to realize I messed up a filter on all of them or something, and then had to manually click on "cancel" a hundred times over. Well that wasn't very fun to say the least 😂Anyways, do you think it could be possible to implement something like that ?

Some characters don't work properly in drawtext

I know, 90% of my issues are with drawtext 🤣
Anyways.

' doesn't display at all. For example, input don't and it displays dont;
" stops the text that follows from showing. For example, input Hello"World and it displays Hello;
: stops the text before it from showing. For example, input Hello:World and it displays World;

Can't export a new JSON filter template

To be honest I'm not even sure that this is how it works.
But, to create a new json filter template, we're supposed to arrange our filters how we want them and then hit "export json", and it should let me save the json file to the filterTemplates directory, right ?
Because I'm clicking "export json" and nothing is happening.
I thought it might be because I have WebMGenerator located on my C:\ drive and it might not have had permission without being run as admin or something, but running it as admin doesn't change anything.

Or am I completely mistaken about how I'm supposed to create a new template ?

Extend subtitle cutter to work with .ass subtitles

I'm not sure if it's normal or not (ass format not yet implemented for example)
But I tried making some ASS subs and they plain didnt work. When launching the encode process, each webm juste "stopped" at half encode completion.

Stream copy bad slicing

If you choose the Stream Copy merge style the cutout segment are not sliced at the correct timestamp. Let me know if u cant reproduce it.

Custom profiles in configuration.json

It would be cool to be able to add custom encode profiles in the configuration file like so:

{
 "statsWorkers": 1,
 "encodeWorkers": 1,
 "imageWorkers": 2,
 "tempFolder": "tempVideoFiles",
 "tempDownloadFolder": "tempDownloadedVideoFiles",
 "defaultAutosaveFilename": "autosave.webgproj",
 "defaultProfile": "None",
 "customProfiles": [
  {
   "name": "custom profile 420",
   "format": "webm:vp9",
   "maxSize": 10
  }
 ]
}

The command line window doesn't exit by itself after closing the program if you use the new Windows Terminal

It stays open with the following text.

2021-09-13 17:16:27,048 [MainThread  ] [INFO ]  CutselectionController destroyed
2021-09-13 17:16:27,125 [MainThread  ] [ERROR]  root.destroy() Exception
Traceback (most recent call last):
  File "K:\WebmGenerator\src\webmGeneratorController.py", line 199, in close_ui
  File "C:\Users\baxter001\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 2062, in destroy
_tkinter.TclError: can't invoke "destroy" command: application has been destroyed
2021-09-13 17:16:27,126 [MainThread  ] [INFO ]  DONE
QUIT

[processus terminé avec le code 1]

Using the traditional Windows CMD works fine but if you use the new Windows Terminal (Preview version in my case) it doesn't close by itself afterwards.
EDIT: I meant, if you have Windows Terminal enabled to be used as default terminal / command line aplication. On Windows 11 build 22000.184.

Text like drawtext is stretched when dealing with stretched 4:3 to 16:9 videos

So I'm not super well versed in everything video format and all that, but basically I have these videos that are 1440x1080 but are being displayed as 16:9 (as they should), the only thing is that when using drawtext, the text will also get stretched as you can see.
Capture d’écran 2021-10-11 192527
Hopefully it's possible to have the text remain consistent even when dealing with that kind of format / resolution 😊

Pause filter preview

Again, suggestion is the title. Maybe also adjusting speed of the filter preview. I feel like this was something that was in earlier versions that was removed.

Also, is there a way to add a copied filter to another subclip without erasing existing filters?

Feature Request: Add presets for common resolutions to Scale filter

I think most people don't use weird non-standard resolutions, so most the time it'll be the usual 16:9 aspect ratio, 360p / 480p / 720p / 1080p and so on.
Personally, I would appreciate some sort of a drop down menu with the common resolutions listed above just to quickly Scale to one of these without having to type it in everytime.
Of course, that would be while keeping the option to enter custom resolutions.
What do you think?

Also, very quick thing but, how about swapping places for height and width boxes in that filter ? Usually we write width first and height second, so it's kinda weird to have height first and width second here.

Add ability to loop videos for grid merge style

Hey, I thought I was doing something wrong for quite a while when using the grid mode, I just intuitively assumed that all clips would loop until the longest clip in the grid played at least once or even up to "Target Length" seconds -- what actually seems to happen is that the video just ends after the duration of the shortest clip. From what I've seen, there are also no filters to loop or repeat slices up to a set duration. Am I missing something?

Feature request: Add an "Append to all" button

The "Append' feature is great, but sometimes I really wish there was an "Append to all" feature, like there is an "Apply to all" one. It would have saved me lots of time. Many a time I have realized I wanted to add the same filter to all other cuts without overriding what filters they already had, but then I have to do that manually like: "Append, next one, append, next one, append [...]" x145 😭
Really tedious.

Drag and drop multiple files to "load file" section + other minor suggestions

Title says it all. Purely a minor convenience suggestion.

Also when playing a file, it might be helpful if the play button switched between play and pause.

Another thing was in the filters tab, maybe having a set of aspect ratios that can be used for crop, or even the ability to save your own crop presets, or other filters. Maybe an export/import filters feature?

Cheers for the program, always impressed with your work.

Unneccesary re-encoding

The tool does re-encode video, even though video stream should be untouched. If the contraints like max filesize and resolution allow for it, there can be huge performance gains had by just copying the video stream.

Standalone ffmpeg:
ffmpeg -i INFILE.mp4 -vcodec copy -ss 00:01:00.000 -t 00:00:10.000 OUTFILE.mp4

[Suggestion] Ways to prevent missclicking on "Apply to all" filter button.

I've had the bad experience of missclicking on "Apply to all" filter button and ruining a 50+ batch of webms with different filters each more than one time. Now, that was my fault of course, but I was thinking about how to prevent potential missclicking on that button which is very close to other frequently used buttons. And especially when doing a lot of webms one after the other, it gets repetitive and we are more prone to small errors.

Maybe a confirmation dialog popup on "Apply to all" would be something to consider ?
Or maybe implementing a way to revert the last changes made à la CTRL+Z ?
Or just moving the button itself away. But that would be weird because while it's probably used less often than it's neighbours, it's still part of that same group of action so it makes sense for it to be there.

I don't know, something to think about maybe :)

Can't select a font file on v3.10.0

Since updating to 3.10.0, selecting a font doesn't work anymore in the drawtext filter.
When I select my desired font and click "Open", the selection window closes as normal, but the font isn't changed, and stays the default Quicksand. I've tried loading fonts from different locations but it doesn't change anything.
console.txt
debug.log

Windows 11 build 22000.194

Completed video files do not appear inside finalVideos folder on Windows 11

So everything seems to work fine but when looking into the finalVideos folder, there's nothing there.
Which is weird because the play button next to the converted webms in WebmGenerator to preview them once complete, does work, and you can view them.
They really just don't appear in the finalVideos folder and thus are not accessible, which makes WebmGenerator essentially unusable.

I've tried to see if they were marked as hidden files for some reason and they're not. I use a File Explorer replacement called "Files" and I thought it might be an issue with it rather than webmGenerator, so I looked with regular File Explorer too and the result is the same.

Webm completed successfully.
Screenshot 2021-08-11 210716
Screenshot 2021-08-11 210730
Nothing inside finalVideos folder nor tempVideoFiles.
Screenshot 2021-08-11 210746

Specs:
Windows 11 x64 21H2 build 22000.120

Constrain video detectors over specific selected periods

Inputting a time frame for where you want scene recognition to occur. Could be helpful if you only need to export clips from a particular area, without needing to scan the entire file.

Sort of related, but I was wondering about arrow keys and if they could be frame back rather than being 5ms. I think it would help ensure files loop between the appropriate start and end without a random scene popping in at the start or end.

Problem with Load URL

When I use the Load URL button and enter the link to a YouTube video two clips are added but neither work.
Trying to load the URL again works as normal, as it's from the version stored in the temp folder.
This happens nearly every time, sometimes the top clip works as normal on the first download.

Video of the issue: https://files.catbox.moe/pvjqd0.mp4

Log:

2022-03-01 01:33:04,884 [Thread-5    ] [ERROR]  Image worker Exception
Traceback (most recent call last):
  File "C:\WebmGenerator-win64\src\ffmpegService.py", line 74, in imageWorker
    videoInfo = getVideoInfo(cleanFilenameForFfmpeg(filename))
  File "C:\WebmGenerator-win64\src\encodingUtils.py", line 31, in cleanFilenameForFfmpeg
    return getShortPathName(os.path.normpath(filename))
pywintypes.error: (2, 'GetShortPathNameW', 'The system cannot find the file specified.')
2022-03-01 01:33:05,385 [Thread-4    ] [ERROR]  Image worker Exception
Traceback (most recent call last):
  File "C:\WebmGenerator-win64\src\ffmpegService.py", line 74, in imageWorker
    videoInfo = getVideoInfo(cleanFilenameForFfmpeg(filename))
  File "C:\WebmGenerator-win64\src\encodingUtils.py", line 31, in cleanFilenameForFfmpeg
    return getShortPathName(os.path.normpath(filename))
pywintypes.error: (2, 'GetShortPathNameW', 'The system cannot find the file specified.')

Error

Hi

I have this error when i launch the program
Capture du 2020-08-24 08-31-23

I dont understand

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.