Share this project

Done

Share this project

Done
OpenShot Video Editor for Windows, Mac, and Linux's video poster
Play

The time has come for a cross-platform version of OpenShot Video Editor, including its powerful new video editing & animation engine! Read more

Arlington, TX Software
Share this project
1,463
backers
$45,028
pledged of $20,000 goal
0
seconds to go

Funded!

This project was successfully funded on April 17, 2013.

The time has come for a cross-platform version of OpenShot Video Editor, including its powerful new video editing & animation engine!

Arlington, TX Software
Share this project

February Update: GIFs, Video Playback, Cross-Platform, Installers, and Releases

25 likes

Greetings and welcome to a special OpenShot Valentines Weekend Update! It has been way, way too long since my last update, and I have a tons of news and info to share with everyone. Over the past few months, many new features and improvements have been implemented in libopenshot (our new video editing library), and much work has been completed on our new Python3 / Qt5 application. So, let’s dive into the details!

Animated GIF Support

Animated GIF Example
Animated GIF Example

The OpenShot Library now has very powerful animated GIF reading and writing built in. With just a few lines of code, you can now create an animation with any size, any framerate, and loop it as many times as you want. FFmpeg does provide some GIF encoder options, but it did not seem to implement an accurate color palette, leaving the GIF animations pretty sad looking. This led me towards implementing a new ImageWriter class, which can export single and multi-frame images with ease, powered by ImageMagick. Bottom line: this feature is really cool, and will be fully integrated into OpenShot 2.0. 

Video Playback Improvements 

Video playback has been one of the most challenging parts of creating OpenShot 2.0. When I first started designing libopenshot and OpenShot 2.0, I underestimated the difficulty in writing a flexible and stable video player. I had made the incorrect assumption that Qt5, GTK+, or SDL would give me a simple way to incorporate video playback. Over the past 2 months, I quickly found myself writing a large and complex video playback engine. I am happy to announce that video playback is now working great, and has the following features:

  • Any framerate 
  • Any size with scaling (maintaining aspect ratio)
  • Any colorspace 
  • Any number of audio channels and different audio layouts (mono, stereo, surround, etc…)
  • Frame by frame seeking and random, ad hoc seeking 
  • Any playback speed (reverse & forward) 
  • A standalone video player executable (now included with libopenshot)
OpenShot Video Player
OpenShot Video Player

Cross-Platform Improvements

One of my primary goals with OpenShot 2.0 is full cross-platform support, with feature parity across Linux, Mac, and Windows. This has now been successfully achieved, and all 3 platforms are working identically… or as identically as you might expect. The Mac version has a global menu, they each have their own platform-specific file browsers, and slightly different color and icon themes. One thing of note, is Qt5 has gone through 4 major releases since I’ve started working on OpenShot 2.0. With each new release, I've noticed a few minor bugs that affect OpenShot. The newest version is the most stable, as you might expect. This has been a mild headache keeping up with the rapid pace of change on that project… not to mention a few other projects, like FFmpeg / libAV.

Installers

I have successfully built and tested installers for OpenShot 2.0 for all 3 platforms. I still have a few minor issues with the Mac and Windows installers, such as a lack of support for SVG images due to a missing dependency, and a few small details like that. However, I don’t expect those will be too difficult to resolve.

New Icon / Branding

New OpenShot 2.0 Icon
New OpenShot 2.0 Icon

Thanks to the generous and very talented graphic designer, Hannah Williams, from Devarim Design: http://www.devarimdesign.com, OpenShot 2.0 will feature a new icon, logo, and branding. We were aiming to create a more unique and recognizable icon than the old generic blue circle. We also wanted it to incorporate some familiar elements, colors, and themes, such as blue, white, a play-button, video editing, etc.... And finally, we incorporated the “O” and “S” shapes from the OpenShot name into the icon. I am very happy with the design, and am looking forward to hearing feedback from the OpenShot community. If you have suggestions to make it better, download the SVG image and give it a whirl!

libOpenShot Release: Version 0.0.4

I am proud to announce the 4th official release of libopenshot (OpenShot Library), which brings with it a ton of bug fixes, improved video playback, new FFmpeg / libAV API support, Animated GIF support, more comprehensive unit tests, better documentation, greater stability, and improved cross-platform build scripts. This Kickstarter project has now officially produced 4 public releases, which I am very proud of. I know there is still much to do, and most people don’t have much use for a C++ and Python video editing library. =) So… let’s talk about the application itself!

OpenShot-Qt Release

OpenShot 2.0 Screenshot
OpenShot 2.0 Screenshot

I would have really loved to publish the current version of our PyQt5 application before sending this update (that was my goal). However, the Qt interface still has 2 critical issues that need my attention before it’s ready to share out with developers. Our keyframe editor is partially hooked up, and about 50% completed. Our Export Video dialog is about 75% complete, but has a few big usability issues. Both of those are pretty low hanging fruit, but critical to basic usage and testing of the interface. These are the 2 tasks I am currently working on. If no other major distractions happen, I should have the Qt source code published in the next couple of weeks.

Challenges

There are many challenges that go along with building any software. Some are obvious and some are more subtle. However, some challenges, as I've recently realized, aren't related to computers at all. Sometime in late October, my wife and I decided that it would be fun to put our house on the market, and “test the waters”. We have been talking about moving out of Arlington, TX (a relatively big city) for years, and heading towards a bit more land, and less city. As fate would have it, we had an offer on our house within 1 week, and all of a sudden needed to find a new house, make repairs, pack, rent a moving truck, etc… etc… Needless to say, this required a lot of time and energy.

Fresh Air & Country Life!
Fresh Air & Country Life!

In the haste to quickly move, I made my next critical mistake. I failed to backup my primary development computer… which was damaged in all the chaos… of course. I am usually pretty good about backing up all my computers, but my development computer only holds a “copy” of my work… and then the source code is stored on other servers. Thus… no need to back-up the computer, right? I am now backing up my development computer, and the next time this happens (which I’m sure it will), I will be ready.

Once I re-setup my development computer with the latest version of my operating system (and updated libraries and packages), I realized some of the audio API methods I had been using no longer existed in FFmpeg / libAV. So, I then spent a couple weeks fixing all these issues and bringing libopenshot compatible with the latest versions of FFmpeg / libAV, CMake, and ImageMagick.

What’s Next

My primary goal is to release the source of our PyQt5 application on Launchpad.net (the website we use to collaborate with other developers) as soon as possible. Like I mentioned above, I probably have a couple weeks of loose ends to tie up before it will be ready to publish. Once this is completed, I will post another update with a revised list of remaining tasks before the Installers are shared and we can start the next phase of this project: alpha and beta testing. I am really looking forward to getting to that point!

Fun Facts

February 13th is not just the release date of libopenshot 0.0.4, or the date of this update, but it’s also my birthday. Let’s just hope OpenShot 2.0 is officially released and delivered before my next birthday. =)

Thanks For Your Patience!

I want to sincerely thank everyone for having faith in OpenShot and supporting our humble project. Building OpenShot 2.0 is a unique and challenging experience. If it was easy, everyone would be doing it. I am still trying to catch up on my emails, which I have not been attending to very well in an effort to focus on OpenShot development. So, I apologize if I have missed any emails. If you don’t receive a response from me in the next few days, please feel free to email me again. Thanks for being awesome!

June + July Update: Part 3 of 3

19 likes

Welcome to Part 3 of my update on OpenShot 2.0. We still have lots to discuss, so let’s dive right in! 

Windows Installers 

OpenShot 2.0 Running on Windows
OpenShot 2.0 Running on Windows

I am very happy to report that I have solved all the Windows-related build issues with JUCE and MinGW64, and have successfully built and tested Windows installers for both libopenshot and OpenShot Video Editor 2.0. The only remaining issue on Windows is related to SVG (i.e. vector image) compatibility, and luckily, a contributor is working on that as we speak. This is a minor issue related to RSVG-CONVERT, and should be resolved soon. 

Mac Bundles & Disk Images

OpenShot 2.0 Running on Mac
OpenShot 2.0 Running on Mac

For the Mac users, I have been working hard on finalizing the installation techniques for both libopenshot and OpenShot 2.0. I have recently refactored how this process works, trying to automate it as much as possible. Basically, our library is being packaged in a Framework bundle, our app is being packaged as an App Bundle, and they will be available on a DMG disk image. However, I am still running into a few small issues trying to integrate this process into CMake (our build tool). Conceptually, I really like the idea of Mac bundles, but when building an application outside of Xcode, they can be tricky to create and maintain, which is why I'm really trying to automate them as much as possible. 

The screenshot above is running with the Qt Fusion dark theme, but keep in mind OpenShot also supports multiple themes, and can also be switched to use the native OS theme.

Remaining Tasks for Alpha Release 

Here is a list of the remaining tasks for a cross-platform alpha release (available to Kickstarter backers first). I have many contributors helping at this point, so some of these tasks can be completed in parallel.

  • Export Dialog: needs a few days of work and bug fixes 
  • Transitions: needs a few days of bug fixes and testing (there are still a few minor issues that need fixing in libopenshot, for example: multiple overlapping transitions, etc...) 
  • Timeline: needs 7 to 10 days of work, specifically on fixing issues with thumbnails and audio waveforms. Both those features have been implemented already, but have many small issues. 
  • Video Preview: needs a few days of work to fix some minor synchronization issues, and some improvements to the libopenshot audio playback code. 
  • Installers: most of the work is now done related to installers, but there are still some remaining issues with Mac bundles (as I mentioned above), and I need to test the installers on more systems, to ensure they are not missing any dependencies. 
  • Testing: once the above tasks are completed, I still need a few days of intense testing and bug reporting, to help shake out some of the more "obvious" bugs. 

Those are the final tasks blocking the alpha release of OpenShot 2.0. There are still many other tasks that need to be wrapped up and/or completed, but they are not necessary for a successful alpha release. So, if all goes according to plan, by the end of August we will be releasing our alpha installers to Kickstarter backers.

Contributing to OpenShot 2.0

Right before we release the alpha installers, we will be officially releasing the source code to openshot-qt on Launchpad.net, the PyQt5 interface for OpenShot. This is another important milestone, as it will allow contributors to more easily access our source code, and will result in faster development and more testing. Currently, anyone is welcome to join our team on Launchpad.net and gain access to this code, but it requires me to manually setup a user account on our source code server, and generally slows down everything. So, releasing the source code to openshot-qt will be a great thing, and should accelerate the development of OpenShot 2.0.

Next Update

If everything goes smoothly (i.e. no huge technical issues or legal issues), my next update will be towards the end of August (in about 30 days). I am very excited to release the installers and the source code for openshot-qt, so I need to get back to work now and ensure this happens on time! See you on the other side!

June + July Update: Part 2 of 3

12 likes

Welcome to Part 2 of my update, where I will dive much deeper into the technical accomplishments of the past 2 months. I also have some screenshots to share, as well as a new video to demonstrate the current state of the project. So, here we go!

Timeline Improvements

As you can see from the screenshot, I've made many improvements to the timeline look & feel. I have also done more work in the "theme-ability" of the timeline, and it is now very easy to give the entire timeline a different look using CSS. I am very excited to see what themes the community will create once everything is released. Conceivably, the timeline could be themed to look and behave like any video editing application out there.

The JavaScript that powers the timeline has also been through a major refactor, and is very well organized now. Each primary element (i.e. clip, track, timeline, playhead, etc...) has it's own JS file, and is very easy to debug. I have also added in a debug panel, for when working on the timeline source code in Google Chrome.

Debugging Timeline in Google Chrome
Debugging Timeline in Google Chrome

Snapping Improvements

New Snapping Feature (i.e. blue line)
New Snapping Feature (i.e. blue line)

One of the coolest features I've completed over the past many weeks is a brand new snapping engine for the timeline. Basically, every element on the timeline (including the playhead) can be snapped/aligned in real-time, as you drag a clip or transition around. As the clip approaches a "snapping coordinate", a line fades in as a visual cue, and fades out after you drop it or move past it. It certainly makes the timeline easier to use, as aligning clips, transitions, and audio is a very critical part of the average video editing work flow.

Memory Leaks & Bug Fixes

As everything becomes more functional, some things are much easier to trigger, such as memory leaks. And one fun anecdote about a video editing application, they use a ton of memory on the heap, and memory leaks can sky rocket to all your remaining memory in about 5 seconds. In other words, these types of memory leaks are fairly easy to spot. And thus, all of the memory leaks that have been found so far are now fixed. And many of my tests include code that runs for long periods of time, and that has given me a lot of confidence in the underlying library (i.e. libopenshot), and the general stability of the platform.

Video Preview (view on YouTube for HD quality)

Here is an updated video preview demonstrating some of our timeline improvements, such as snapping, animations, and more! It even contains a sneak peak of our properties and keyframe system, which I will explain in more detail soon!

More to Come in Part 3

I will be releasing Part 3 of this update tomorrow, so you won't have to wait long. =) In part 3, I discuss the remaining tasks blocking an alpha release, give an update on installers (Windows & Mac), and discuss the release date of our alpha release. See you then!

June + July Update: Part 1 of 3

13 likes

Greetings Backers! I hope everyone is having a great summer! I have been very busy working on OpenShot 2.0 (of course), and have an update that is just too big to fit into a single post. So, I have broken this update into 3 parts for your reading enjoyment.

Texas Linux Fest (June 13 - 14)

Before I get into the details of this update, I wanted to quickly share my experience from Austin, TX @ Texas Linux Fest, which I attended in mid-June. My family (wife and two daughters) attended the show as well (which was awesome), and helped me run the OpenShot Booth!

My Family @ Texas Linux Fest
My Family @ Texas Linux Fest

I met some incredible people, and had some very enlightening discussions. I even had a demo of OpenShot 2.0 ready to preview, but not much time to actually show it off. =) I also had a few different people offer to help out, and are now contributing to OpenShot!

However, one of the most interesting discussions I had was related to the open-source licensing of the OpenShot Video Library (libopenshot). This is the code that powers all the complicated video and audio editing functionality for OpenShot. More on this topic of licensing below.

Legal Battle

In late June, OpenShot was sucked into some legal conflicts related to trademarks and intellectual property. While I would love to discuss all the details, I am not allowed to discuss them at this time. However, everything worked out fine for OpenShot, but it certainly took some money and time away from me during the process.

Licensing

After some serious discussions with community members related to licensing for libopenshot, I have decided to officially change the license to LGPLv3. This is still a bit problematic, due to a GPLv3 license of a required JUCE-based libopenshot-audio library. But soon, I will make the GPL components optional during compiling, so it will be easier to maintain the LGPLv3 license on derivative works. 

If you have no interest in reading open-source licenses... just know that we are switching the license of our main library to be more open, and allow more people to use it without violating our license agreement.

OpenShot Video Library Released (version 0.0.2)

I have actually made 2 releases of libopenshot in July, with another release coming towards the end of July. This marks the first official release related to this Kickstarter project! This is important, because it now allows me to build installers and package the library in a way that can be easily installed by end-users.

I now have working libopenshot installers / packages for the following OSes:

  • Ubuntu / Mint (including daily builds / daily PPA)
  • Debian (i.e. mentors.debian.net)
  • Fedora (i.e. RPM Fusion)
  • openSUSE (i.e. PackMan)
  • Arch (i.e. AUR)
  • Windows (was working... but libopenshot-audio is now breaking on Windows)
  • Mac (still in heavy testing)

However, before these packages can be downloaded and installed (outside of some testers), I need to get them accepted into the different OSes official repositories. This is always a time consuming process, and I have been spending a percentage of my time working on this goal for the past 3 weeks (or so). NOTE: For Windows and Mac, I will not be pursing their software / app stores, but will just be releasing the DMG and MSI installers.

OpenShot Audio Library (powered by JUCE)

In early July, I updated the version of JUCE inside the OpenShot Audio Library (libopenshot-audio), which was done as part of my re-licensing efforts (discussed previously). I have also released the first 2 official versions of libopenshot-audio this month (more fruits from this Kickstarter project). However, the only drawback from this update are some compilation issues on Windows and MinGW64... which are pretty tricky to debug. So, if anyone wants to jump in and help me resolve some tricky C++ build issues related to JUCE and MinGW64, please send me a private message. =)

More to Come in Part 2

Improvements to the functionality and interface of OpenShot Video Editor 2.0 are coming in Part 2 of this update. Including a new video, screenshots, and lots of technical goodness! Then, in Part 3, I will be discussing installers for OpenShot Video Editor, source code release, release dates, schedule of final tasks, and more!

Thanks For Your Patience

Once again, I want to thank everyone for making this project possible and for your patience so far. Over the past 2 months, I have brought on 5 new contributors, made 4 official releases, built a half dozen packages / installers, successfully navigated some tricky legal issues, ran an exhibitor booth, and continued to push forward on the interface and final tasks for OpenShot 2.0. It has certainly been a longer road that I expected, but we are certainly nearing the end. =) So, THANK YOU for being so awesome!!!

May Development Update: Video + Interview + More!

8 likes

Hi everyone! Here is my May development update for OpenShot 2.0! This update will be a little different than my previous ones. It includes two different videos, and hopefully gives you a good feeling of the current state of OpenShot 2.0.

Interview on Linux Action Show

Before I jump into the details of what's been accomplished over the past month, be sure to check out my interview on the Linux Action Show, streamed LIVE yesterday (YouTube version included here). I always get a bit stressed out when doing live streaming, but these guys are terrific and I am always happy to be on their show! 

NOTE: Look how awesome their shirts look. =)

Video Preview of OpenShot 2.0

The next video is a quick screen capture I did with the current development build of OpenShot 2.0, running on Ubuntu 13.10 (Windows and Mac versions are very similar, except for the window decorations and theme differences). Also, I plan on including videos like this in all my future development updates related to OpenShot 2.0!

These past 4-6 weeks have been very productive, and many features have been completed or almost completed. In fact, there have been 56 commits in the past 30 days. This is the most active I've ever seen OpenShot's development. So, things are moving forward at a very fast pace. Here is a detailed list of the tasks that are now complete, or mostly complete:

Recently Completed Tasks

  • Added a new awesome thumbnail method to libopenshot, which might just be the greatest thumbnail method ever made! Okay, maybe not, but it's really cool. It can take any frame of any video, resize it intelligently (centering if needed), and optionally supports 1) background colors or transparency, 2) gray-scale mask, to remove parts of the image, 3) overlay image, to add watermarks, custom graphics, etc... Finally, this new thumbnail method is integrated into OpenShot for all thumbnailing.
  • Improved audio and video player features in libopenshot, and integrated them into OpenShot.
  • Improved foreign language support in OpenShot, and fixed many unicode errors related to other languages. As far as I can tell, it now works correctly in over 50 languages (although I have not personally tested each one yet).
  • Fixed more Windows-specific build issues. If I go more than a few days without testing on Windows, OpenShot just self destructs. =)
  • Fixed many issues related to themes, icons, and native toolkit styling. I am still having some issues with SVG icons on Mac, but for the most part, the UI is working good on all platforms.
  • Improved Title Editor in many ways, including making it much easier and faster to edit and create titling for videos.
  • Integrated Title Editor and 3D Animated Title dialogs into OpenShot. Titles and animations now show up in the project files tree and can be previewed, dropped on the timeline, etc...
  • Refactored many different places I was using Python threading with QThreads, and dramatically improved the stability of the different threads being hosted in Python. This was due to issues updating the Qt UI from different threads.
  • Fixed many issues with Saving and Opening project files, especially issues with different languages, character sets, etc... I ended up creating a folder on my computer called "t€ rôèÿæs", which has become my favorite way to test unicode support for file paths in OpenShot. =)
  • In a related fix, I improved the way temporary files are handled when saving project files. For example, newly created 3D animations and Titles are now saved in a temp location until you save your project, and then they are moved to a sub-folder of your project. This also supports saving projects to USB flash drives. And those paths are also saved as relative paths, and converted into absolute paths during the execution of OpenShot.
  • Completed preferences dialog, and dramatically improved the function of it. It is now dynamically built from the user's settings file, and works really well. The settings file now includes meta-data about each setting, which is used by the preferences dialog to build itself. Let's just hope it does not become self aware. =)
  • Added a new profile button to the primary toolbar, which allows the user to quickly switch the type of project they are working on. So, if you want to test your video as a 1080p video, and then quickly switch to 480p, it's super easy now.
  • Added many context menus, including File, Clip, and Transition. Most of the options are now working correctly, such as removing files, previewing videos, removing clips, etc...
  • Improved the drag and drop support with Qt. I had initially done things a bit more complicated than needed, and dramatically simplified the code. I ended up removing over 100 lines of code, and now let Qt handle most of the drag and drop itself. =)
  • Added new query classes, to more easily manipulate project-type data in OpenShot. Also added many new Python unit-tests related to these classes.
  • Integrated transitions into the timeline, but there is still much to do.
  • Tested out a new icon (and new branding) for OpenShot being designed for version 2. I will reveal it soon and let you and the rest of our users vote on which icon to use: Our original (which is a bit generic and old looking now), or this new exciting and very original looking one. =) Okay, so I'm a little biased.

Coming Soon

Okay, there are more updates of course (over 50), but the ones mentioned above are the biggest ones. So, now that you know what has been accomplished, let's discuss what is targeted for the next 4 to 6 weeks:

  • Integrating Effects into Timeline
  • Complete Animation Controls (dockable UI)
  • Complete Properties Interface (dockable UI)
  • Complete Export Dialog
  • Complete Installers (so users can start experimenting and testing these early builds)

Of course, there are many more tasks still to do, but I'm very focused on completing these before my next development update. I really, really want to complete the installers and packages for OpenShot, so more people can start helping me test. Fingers crossed... this will be ready for the next update. =)

Looking for Help

I am still looking for some developers and volunteers to help me out with a few tasks. If you have some extra time to volunteer to our humble project, I would be super appreciative! =) Here are the skills we are still needing on our team. If you want to help, simply contact me directly, and I will help you get setup: jonathan@openshot.org.

  • A PyQt developer to help me finish some UI tasks
  • A JavaScript / JQuery / and Angular.js developer (NOTE: Angular.js is a required skill for working on our timeline)
  • A C++ developer to help tie up a few loose ends with FFmpeg and LibAV, and the liboenshot API.
  • Someone knowledgeable with cx_Freeze, and building Linux packages and installers.

Thanks for your Support

As always, thanks for your awesome support and patience! This has been a lot of work, but it's also a lot of fun to get to work on a project like this! I will be posting a vote / poll for our new icon (soon to be revealed), and my next update should be in about 4 weeks.

Follow Us

If you want to be sure you don't miss any important upcoming OpenShot news, be sure to follow us on your favorite social network: