30 Jun

Happy summer! Version 2.4.2, the latest and greatest OpenShot Video Editor is now available (after a long wait), and we have lots of great improvements to share! We have exciting new effects, tons of bug fixes, and more stability and performance enhancements! Let's dive right in!

I am so excited about this release, and although it's been in development for a long time, it addresses so many important bugs and improvements! Let's start off with the highlights, and then below is a giant list with more details for those who are interested.

7 New Effects (Crop, Hue, Color Shift, Pixelate, Bars, Wave, Shift)

Each of these new effects could have their own blog posts and tutorials (and probably will soon). Each effect was created from scratch for OpenShot 2.4.2, and are all fully keyframable, and can be combined with each other. This creates millions of interesting possibilities (some combinations are shown in the video above). Animated pixelization boxes, animated cinematic aspect ratios, and so much more! As you can probably tell, I'm really excited about them!

Auto Audio Mixing

When enabled, clips can utilize 3 different audio mixing strategies, for cases when clips are overlapping and competiting for audio volume. For example, a background audio track can automatically lower its volume when an overlapping voice clip needs to play. It is currently disabled by default (on new clips), but can easily be turned on in the clip properties.

Auto Rotate

Photos or videos with rotation metadata will be automatically rotated in OpenShot (requires a somewhat newer version of FFmpeg though). Take a vertical video, or a horizontal photo with your phone, and likely it contains this rotation metadata... and OpenShot will display it correctly.

Improved Audio Playback

Audio playback and mixing has been an area of weakness for OpenShot, and continues to be an area of focus for improvements. Many bug fixes and improvements have been made, and many users will notice less popping, smoother mixing, and less issues in this area. But there is still work which needs to be done, and will continue to be improved further.

Improved Stability

With each release of OpenShot, stability continues to be improved. Most crashes are reported on Windows builds, although we still have too many crashes on all OSes. Some crashes are caused by dependencies, and some are caused by multi-threaded race conditions or memory corruption. Version 2.4.2 for windows is wayyyyy more stable now, and for the first time, is being offered as both a 64 bit and 32 bit version. Many schools still use older 32bit CPUs and have often requested this. Also, our 32-bit builds are now large memory aware, and can support more memory, making crashes much less likely for lower powered computers.

Improved Export Dialog

OpenShot's export dialog now displays progress in the window title, including some performance metrics (encoding frames per second and estimated completion time).

New Codec Support (including experimental)

AAC is now the default audio codec for many presets, which allows OpenShot to create videos which are more widely compatible with all OSes, devices, and web browsers. Also, experimental codecs supported by FFmpeg and LibAV can be used in OpenShot for the first time.

Growing Team of Developers

I am so proud of the volunteers who have been contributing their time to OpenShot over the past many months. Team OpenShot has slowly been gaining more contributors on GitHub, and our users have been so helpful in reporting bugs, updating GitHub tickets, and providing steps to help us reproduce issues. We are still struggling to keep up with the number of GitHub issues, and are trying our best to keep them grouped, de-duped, and organized by priorities. We could still use some help in this area, if anyone is interested! 

Dramatically Improved Build System

OpenShot has migrated its build system to GitLab, and moved our development flow to GitFlow. We now have a world-class build system, new installers for every branch and every commit, integration with GitHub, LaunchPad, Slack, and openshot.org. This has been empowering our contributors to create custom branches with experimental features, and out pops 4 installers (Linux, Mac, Windows x86, Windows x64). We have a total of 6 servers now contributing to our builds, git synchronization, status checks, unit tests, and installers. 

Join Us

If you enjoy OpenShot, or would like to see it improved in specific ways, please consider joining our team. All skill and skill levels are welcome, and there are a ton of ways to contribute: documentation, testing, GitHub issue management, programming in C++ or Python, art and design, translations, or maybe you just want to be a cheer leader or offer up ideas! The only requirement is a love for open-source and OpenShot. =) If you are unable to contribute with your time, you can also contribute with a donation, and get your name listed in the credits of OpenShot!

Full list of features / commits below:

libopenshot-audio 0.1.6 so:6

  • Fix under-linking (pthread and dl), fixes #3
  • Integration of GitLab build pipelines

libopenshot 0.2.0 so:15

  • Auto audio mixing strategy per clip (average, reduce, or none)
  • Adding new crop effect, which can also be animated for some very cool effects.
  • Adding new Color Shift effect, which can shift any color (RGBA) with infinite wrapping (and full supports animation).
  • Adding new Pixelate video effect, which pixelates a portion (or all) of a frame's image, and is fully animatable.
  • Adding new video effect: Bars, which allow for animating colored bars around your video, such as a letterbox effect.
  • Adding new wave video effect, which can be animated in a ton of ways to create lots of cool wave distortion effects.
  • Adding Hue video effect, to adjust the hue of a frame's image, which can also be animated with a keyframe
  • Adding new effect: Shift, an infinite pixel shifting effect which can be animated and wrap images in any direction.
  • Auto-Rotates any Clip with Reader metadata 'rotate' attribute.
  • Experimental codecs now supported in FFmpeg/LibAV
  • Audio popping during preview (due to resampling)
  • Fixing brightness and Mask effects to calculate factor with a float type, giving more fine control
  • Fix Blur.cpp by copying blur_<chan> values back to <chan> so horizontal *andvertical blurs can be applied in one effect and blur accumulates with increased iterations
  • Update and apply frame mapper on any clip changes, to keep timeline offsets in sync (i.e. avoid audio popping due to slight misalignments of clips on the timeline). 
  • Removing old frames from WorkingCache (when no longer needed). This helps prevent freezing looking for old frame data on certain videos.
  • Adding metadata from format, audio stream, and video streams to ReaderBase.info, which in some cases includes the 'rotate' metadata added by certain cameras, and audio metadata like title, album, artist, copyright, dates, etc... 
  • Added in metadata encoding capabilities (writer.info.metadata["title"] = "My Title"). Only certain tag names are accepted (see FFmpeg for more on which tags are supported by which codecs).
  • Optimize and improve speed of Mask effect (used by transitions). This is way faster than before!
  • Fixing assignement and copy operators on Frame class (to prevent crashes for unintiailized image and audio pointers), and ensuring both copy and assignment operators work as expected.
  • Fixing the color property of Frames, which was being lost on some constructors.
  • Increase valid frame rates to 240 fps since many cameras now support this higher frame rate
  • Fixing regression on Clip constructor, and simplifying pointer initialization
  • Fixing a bug with Frame::AddImage (convertToFormat) not actually doing anything. It returns a new image, and does not convert the format in-place.
  • Preventing crash if Seek invoked before QtPlayer are initialized properly
  • FFMPEG 3.2 support for FFmpegWriter
  • FFMPEG 3.2 support for FFmpegReader
  • Fixing FFmpeg version breakage in FFmpegWriter
  • Increasing the default amount of cache in FFmpeg, based on the # of processors, to better support high framerate videos.
  • Changing some Seek values to be more accurate, and fixes a race condition with Timeline_Tests.cpp. 
  • Changing some sleep() calls to usleep(), for more accuracy. This is a bit experimental, and hopefully will work on all OSes.
  • Do not clobber gainFactor when determining volume adjustments and add a TODO note about current_max_volume always being 0
  • Removing anchor from clip properties (since it is unused)
  • Adding "dbghelp" dependency for Windows builds (for crash handling support), and improved Windows build instructions using MSYS2.
  • Properly set test media files path, fixes #36
  • Fixing black frames at end of video clips, if audio stream longer than video stream, and end-of-stream is reached.
  • Integration of GitLab build pipelines
  • Faster Windows builds
  • Fixing audio unit tests
  • Avoid mixing audio for clips with no volume or disabled audio.
  • Updating cmake file for libopenshot-audio to search $ENV first, and then static folders
  • Add missing type cast
  • Spelling and typo fixes

openshot-qt 2.4.2

  • More detailed export dialog progress, including estimate time remaining, FPS, and more accurate percentage. Thanks Peter!
  • Defaulting to AAC audio codec
  • Improving zoom scale calculation, to use a custom bezier curve (zoom gets faster and faster the more you zoom out). 30 levels of precision between 1 second and 7200 seconds.
  • Auto-rotate for Readers with 'rotate' metadata. This requires a slightly newer version of FFmpeg, otherwise the 'rotate' tag is never found.
  • Adding new Crop video effect
  • Adding new Color Shift video effect (with temp icon)
  • Adding Pixelate video effect, which can animate a pixelated version of part (of all) of a video clip.
  • Adding new Bars video effect, which allow for animating colored bars around your video, such as a letterbox effect.
  • Adding new Wave video effect
  • Adding Hue video effect
  • Adding new Shift effect (which allows for shifting the image in any direction and allows for animation, with infinite wrapping)
  • Support for 32-bit and 64-bit Windows builds, and an update to the Windows dependencies (and installer size reduction).
  • 32-bit version of Windows is now large address aware, and can make use of more memory, but users might need to run this command first: 'bcdedit /set IncreaseUserVa 3072' in order to utilize this
  • No longer crash app if user settings cannot be read. Now we show a message box and reset the user settings.
  • Adding save indicator in window title
  • Retain track parameters during add/remove track
  • Update titles to be compatible with newer versions of Inkscape
  • Always apply mapper when opening a project, to ensure no audio starts popping for different framerate projects
  • Split Clip dialog now sends focus back to slider after clicking 'Start' or 'End' or 'Play' (to make it easier for frame-by-frame arrow keys)
  • Make clip and transition menus trigger on mouse-down, and not move the timeline item when the menu is activate
  • Removing max constrains from export length, so user can export blackness at the end of his project if so desired.
  • Disabling/Enabling save icon based on if the project needs saving
  • Add preset xml file for chromebook target
  • Removing unneeded 64-bit/32-bit clean-up code from Windows installer (which breaks on a 32-bit system)
  • Fix initial save indicator on a new (blank) project
  • Also use import_path for missing-file recovery
  • Add import_path tracking to project data
  • Updating mac build scripts to use Python 3.6 (with a newer version of OpenSSL)
  • Preview controls use media-skip icons
  • New razor-tool cursor
  • Adding new developer page to documentation, with step by step instructions on getting a Ubuntu development environment setup for libopenshot, libopenshot-audio, and openshot-qt.
  • Position is always (frame - 1) / fps
  • Utility functions for unit conversion
  • Be more explicit about logfile paths
  • Adding back in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 to the AppImage
  • Rename dv_pal_wide_animorphic to correct spelling
  • Remove duplicate profiles
  • Protect slack upload better during build server
  • Updating sponsors, donors, and contributors
  • Updating translations
  • Change the if statement for default language to use system default
  • Copy log file for each successful build (for debugging reasons)
  • Use QUrl.toLocalFile() to convert dropped URIs
  • Add Contributing section
  • Update Tutorial, Code tags and contrib link
  • Update GitHub info in tutorial
  • Use images/ path for images, not _static/ in documentation
  • Fix wrapping in Tutorial documentation
  • Replace ASCII arrows with Unicode arrow character in documentation
  • Also update transition layer on track add/remove
  • Small refactor of build server file uploads, and added extra check for 'already uploaded' assets to GitHub
  • Improve error message for failed uploads during build server
  • Remove torrents if already existing
  • Integration of GitLab build pipelines
  • Updating font family on built-in titles
  • Remove some unneeded copies of libopenshot and libopenshot-audio in the AppImage, reducing size of AppImage
  • Fixing issue with Linux AppImage creation on build server
  • Migrating from Bzr to Git (on Launchpad)
  • Delete old ISSUE_TEMPLATE
  • Correct a cut-and-paste wrong comment
  • Fixing copyright to use translation-friendly formatting, and hiding hardware decode preference (for now)
  • Update websites section and removal of too many caps
  • Change readme to be markdown
  • Log length of metrics response, not content
  • Updated copyrights to 2018 (from 2016). Also edited `about.py` so the year is automatically updated.
  • Adding a few missing dependencies into the developer doc page
  • .gitignore: ignore docs/_build & all pycache

Git Changes

  • Implementing GitFlow for project (develop, release, and master branches)
  • Protected branches (on all repos), preventing direct pushes
  • Must pass unit tests and status checks before merges allowed
  • Must go through the Pull/Merge Request flow to be merged into a protected branch
  • Automated git repo syncing between GitHub->GitLab->Launchpad
  • Automated GitLab CI build pipelines (all builds, tests, installers, daily installers, are run through GitLab CI now)
  • Builds and installers also support any branch, making feature branches and test branches much more useful, since we can share installers for them

Credits

  • Peter M
  • DylanC
  • Rich A
  • FeRD
  • Louis S
  • Beau N
  • peanutbutterandcrackers
  • Dr. Tobias
  • Jonathan T