Release Notes
The following releases are available for the OpenShot Cloud API. It is recommended you use the most current release when starting up a new instance. See Upgrade instructions.
Latest
3.1.0
New Schema generation for OpenAPI (3.0.3): /schema/ endpoint for Yaml schema file
Added /swagger-ui/ and /redoc/ to better document all available API endpoints. See Schema Documentation.
Large refactor of Schema related data (default values, argument names in routes, method descriptions)
Upgraded DRF framework to 3.15.1
Large refactor of Serializers (BaseSerializer & BaseModelSerializer)
Large refactor of “json” fields (to make them accept “strings” or {} objects), which results in less errors.
Stricter URL regex for IDs (must be integer in URL patterns). This was required for proper schema generation.
Refactored language codes into a common ENUM (for improved schema generation)
Fixed regression causing default values to not appear in web interface
New unit tests to verify duplicate file uploads do not crash
Protections around CopyFile serializer (prevent crashes in certain circumstances)
Protections around File.get_media() when using Cloud buckets and a missing “json” attribute
New environment variable to prevent OpenAI Whisper file permission errors
Refactored many unit tests, to use ‘json’ arg instead of ‘data’ arg (requests module)
Moved the following endpoints (grouping under /settings/ to clean-up API):
/aws/validate -> /settings/aws/validate
/azure/validate -> /settings/azure/validate
/google/validate -> /settings/google/validate
History
3.0.3
Refactor QApplication initialization code and set XDG_RUNTIME_DIR to temp folder
Fixing regression which displays debug [ERROR] messages during the initial run of config-openshot-cloud
Improving config-openshot-cloud command to default CLOUD_HTTP_HOST to the public IP detected
Updating Google Cloud documentation, GCP marketplace URL, diagram, and instructions
3.0.2
Adding Google Cloud Support (Pub/Sub & Cloud Storage integration, currently pending approvals for Google Cloud Marketplace)
Allow effects to be applied BEFORE or AFTER a clip’s keyframes (very useful for Mask effects, libopenshot C++)
Added auto-resize capability to Crop effect (to maximize the size of the cropped area in the video)
Improving Shutdown behavior of video processing worker script (handle SIGTERM signal correct, to cleanly and quickly shutdown any video rendering, and mark the export as failed)
Fixed audio pops in certain scenarios (when down sampling from 48000 to 44100 sample rate, libopenshot C++)
More verbose logging around webhooks, to document failures and make troubleshooting easier
Adding lock around SetCache method to prevent crash (libopenshot C++)
Fixed large memory leak on Clips where we were not clearing cache on Close or forcing Close on destruction (libopenshot C++)
Fixed caption parsing to better support numeric caption text (libopenshot C++)
Add additional logging to audio device initialization (libopenshot C++)
3.0.1
Fixed multiple WEBM decoding issues (libopenshot would sometimes freezes or experience decoding artifacts with certain WEBM files)
Fixed bug causing audio-only clips to cover up images on lower tracks (i.e. audio clips were outputting a black opaque image)
Fixed regression with /info/fonts/ endpoint (permission issue when adding new fonts to /usr/share/fonts/)
Expanded list of installed font files (3.0.0 release had a limited # of fonts)
Fixing issue with bash history file (to correctly truncate for Azure technical validation)
3.0.0
Added new /files/<id>/transcribe/ endpoint (powered by OpenAI Whisper AI) to transcribe voice and audio files. Can also translate transcription to English. Generates VTT/Subrip formatted caption text.
Added new /clips/<id>/captions/ endpoint, which adds VTT/Subrip formatted caption text to a Clip. This endpoint can also import transcription data from the related File object (if transcription data is available).
Improved time re-mapping (slow down, speed up - especially when using Bezier keyframes)
Improved audio reversing code (for playing videos in reverse)
Improvements to audio-only clip visualizations - which can now show waveforms and utilize Caption effects (for example, audio transcriptions on top of animated waveform)
Updates to default Caption Effect properties (smaller font size, smaller left/right margins). Also fixed many bugs with VTT/Subrip regular expression parsing - increasing compatibility with more caption data
Improved calculation for render update frequency - to use “time” instead of “frames”. This reduces the # of progress updates which happen during a render, especially for high FPS renders, reducing HTTP traffic. The setting
SECONDS_BETWEEN_UPDATES
is now defaulted to 3 seconds.Updated supported image formats: .bmp, .dpx, .exr, .gif, .jpg, .jpeg, .pam, .pbm, .pcx, .pgm, .png, .pnm, .ppm, .psd, .sgi, .svg, .tga, .thm, .tif, .tiff, .webp, .xbm, .xpm, .xwd
Latest security patches and updates. Updated Django to 4.1.7, DFR to 3.14.0, and many other Python packages.
Fixed Zombie threads left behind after a video export, which over time can cause VM failures due to resource limits.
Large Memory Leak fixed after each video export is completed. This was causing an increase in RAM usage over time, and especially noticeable on higher resolution exports.
New Worker Clean-Up which removes old cached project assets on worker instances, after an export is completed. This ignores pending and in-progress exports. This can be disabled with a value of 0 (during configuration of instance).
New Automated Project Clean-Up which removes old projects after X days. This can be disabled with a value of 0 (during configuration of instance).
Improved cron schedule (new clean-up tasks, optimized schedule to reduce CPU and collisions)
New documentation regarding automated clean-up tasks. See Manage Server Files and Manage Worker Files.
Updated base OS to Ubuntu 22.04 Minimal LTS (Jammy)
2.3.0
Async and PTS Timestamp improvements which fixes many bugs related to out-of-order frames, repeated frames, invalid durations, or missing frames at the beginning or end of a video file. This also dramatically improves performance on certain types of video/audio files that contain missing packets/frames.
Caption Improvements Many big updates to our Caption effect (including auto center alignment, background color now stays behind text, adjustable line spacing, and many bug fixes)
Improved Merging Fixed bug in /projects/<id>/merge/ endpoint, which prevented the original_merge_id from being added to merged clips and effects.
Removed Validation which prevented clips from being longer than their file’s duration. It is now completely valid to extend a clip past the file duration, and it will now freeze frame on the final frame (if needed) with muted audio.
Improved Text-Replace Fixed bug with /text-replace/ endpoint, to prevent file caching on distributed worker instances (i.e. the file name is now changed after calling this function)
Improved Export Failure Detection Added new statuses to the export process (
preparing
&finalizing
) for more visibility into the export process, and with this additional context we have improved our detection of failures (which prevents accidental export failures).Bug fix Actions (on Projects, Clips, Files, and Exports) now use the correct and current protocol (i.e. https vs http)
Bug fix /files/find/ endpoint has been fixed to correctly include embedded clip masks (this would fail previously on worker instances which could not locate the mask files)
Reduced Memory Usage By reducing the default QUEUE_MESSAGES_PER_SCRIPT setting from 12 to 4 (causing the render script to restart more often, clearing server memory)
Updates to documentation
2.2.2
Memory improvements (i.e. reduced memory needed for Exports)
Memory leak fixed (when using longer 60+ min duration clips in different FPS than the project)
Auto Retry any Export which has been failed by a scheduled cron cleanup job (i.e. pending for too long, hard crash, cloud scaling termination). Only retires 1 time.
Launch of new Demo UI (simple-editor). MIT licensed, open-source, and a great jump-start to building your own custom web UI!
New Demos page included in the documentation
Fixed big regression with CORS support in v2.2.1 (moving from Apache to Python CORS support)
Improved Basic Auth: No longer return
www-authenticate: Basic realm="api"
response header ifX-Requested-With
request header isXMLHttpRequest
. This prevents the web browser from prompting the user during 401 Basic auth failures when using XMLHttpRequest’s from the browser/JavaScript.Cron jobs only run on instances configured as ‘server’ or ‘both’ (ignoring ‘worker’ instances)
Increasing # of foreign key values in dropdowns to 3000 (up from 1000), when using the default REST web UI.
Refactor how cloud environment is detected and loaded (development vs production)
New /tokens/ endpoint (to retrieve a token for a specific user)
2.2.1
Fixed regression in
config-openshot-cloud
command (causing all custom username and passwords to be invalid)
2.2.0
Updated Chroma Key effect to support new color modes (using babl color library) - Improving Chromakey quality in many cases.
Updated ReSVG library, for improved SVG compatibility and lots of quality of life updates for SVG rendering
Added new /exports/<id>/cancel/ endpoint, for canceling pending and in-progress video exports.
Updated worker script to process 12 videos before exiting (by default). The script will restart (to clear memory) after this happens.
Added support for a variety of export bitrate formats, instead of just bytes (7600000, 7.6 Mb/s, 7600 kb/s, 5 crf (0-63), 5 cqp (0-63), 20 qp (0-255))
Improved support for @transitions and @emojis in File and Clip paths.
Added support for all emojis in OpenShot 2.6.x (@emojis file paths will correctly resolve now)
Updated transition files (all transitions in OpenShot 2.6.x)
Added new /projects/<id>/download/format/ endpoint, for downloading offline EDL or XML (Final Cut Pro) project files
Fixed regression with copied projects rendering on worker instances (where some files could be located in the wrong folder)
Improved /files/find/ endpoint to only return unique files (improving performance on projects with many duplicate resources)
Updated libopenshot and libopenshot-audio libraries, improved performance
Fixed SCALE_NONE scaling bugs resulting in images that were too large (this was a regression in libopenshot)
Added Auto-Scaling Azure documentation (Scale Sets)
Adding many audio-only effects: (compressor, expander, distortion, delay, echo, noise, EQ, robot, whisper)
Fixed config-openshot-cloud issue on Azure, which would not disable the worker process on a server instance (causing the worker to continue processing exports on the server)
Block most signals from triggering on upgrade (i.e. loaddata)
Improved error logging on worker / video processing script
Improved documentation for manually upgrading between API versions
Migration helper script for older API customers (migrating from an older DB schema)
Improved thumbnail endpoints, which correctly size thumbnails to the requested dimensions.
Fixed small bug in /files/ID/download endpoint, where certain file names were incorrectly escaped
Removing redundant call to /exports/ID/ on worker script (small performance improvement)
Webhooks are now sent with application/json content-type by default (instead of form-urlencoded). Legacy support can be toggled (for application/x-www-form-urlencoded if needed by including
"json": { "webhook-form-urlencoded": true}
in your export record).Failed exports will now include an error message in the Export record:
"json": { "error": "Something went very wrong!"}
Clips with time keyframes no longer validate the end property (i.e. it can be longer than the duration in these cases)
Improved unit tests to ensure better quality and to verify all bug fixes
Fixed PATCH CORS error, where certain policies would prevent PATCH from working
2.1.1
Fixed regression with audio-only exports (now both video and audio exports support mp4_faststart)
Updated documentation related to aac audio codecs
Updated list of available effects (to dynamically list all libopenshot effects)
Added support for HTTPS load balancers (HTTP_X_FORWARDED_PROTO)
2.1.0
Massive performance improvements in video compositing, encoding, and decoding processing
Audio crackling/popping fixes on libopenshot, which affected certain sample rate and frame rate conversions.
Audio crash fixed which would cause certain channel layout (i.e. MONO) to freeze and crash.
Added a C# example script in the getting_started section
Added /projects/<id>/merge/ endpoint for combining two projects. This is especially useful for combining template projects.
Exif support for most image formats (auto-rotation)
Support for Captions effect (single VTT/subrip string which can display text through-out a video, including animation)
Updated libopenshot and libopenshot-audio libraries, improved performance (pre-multiplied alpha channels)
Improved support for videos containing an alpha channel
Added interlaced and top_field_first Export json attributes (that can be overwritten)
mp4_faststart enabled for video exports (moov atom is located at the beginning of the file) to enable streaming
Fixed bug when webhook url called contains localhost/private IP instead of public http host
Added logging to all cases in which os.unlink is called
Added validations to /clips/ POST, PUT, AND PATCH endpoints, to ensure clips do not exceed the file duration, and other common issues
2.0.0
Introduced the concept of shallow copy (physical media file is not duplicated) in files
Improved support for nested Clip effects and effect paths, including /validate/, /download/, and /load/ improvements related to clip effects.
/project/ID/copy/ and /files/ID/copy endpoint by default perform a shallow copy
For performing PUT PATCH DELETE on /files/ID/ endpoint, project is now a required parameter for files being shared in more than one projects
Introduced the /projects/ID/files/ID/ endpoint that supports GET PUT PATCH DELETE
To update a file for all projects sharing the file, pass update_all=true as a query string parameter in the PUT PATCH DELETE methods on /file/ID/. User must have access to all of the related projects
When PUT PATCH is executed on either /files/ID/ (with project param) or /projects/ID/files/ID/ on an file that is being shared by more than one project, a new file object is created and the previous file is de-referenced from the project.files
With this change, it is possible for files of one project to exist in the folder of another project (even deleted projects)
Refactored signals into a new file
Improved stability, and many new unit tests to ensure quality
1.3.0
Full support for image sequences (with transparency), such as Blender animations, animated overlays, etc… * /cloud-admin/ is now a fully supported environment, allowing full API functionality from the Admin.
Added /storage/ endpoints for calculating size of files and projects (/files/<id>/storage/ and /projects/<id>/storage/)
Added ability to mirror all API media files in cloud storage (so the API server can remove local files and re-download them when needed)
Fixed many bugs related to saving/uploading/changing media files for File objects
Added improved ability to use local Django models with custom applications
Improved testing, automation, and quality improvements
Updated verbiage and images for Azure support (including new documentation pages)
Fixed bug which marked almost completed (>99% progress) exports as failed
Fixed bug in /projects/ID/copy/ endpoint, which prevented the copying of custom effect masks
Fixed bug when loading a *.zip containing a __MACOS hidden folder
Fixed bug in orphaned file clean-up, which would delete custom effect masks
Fixed bug with OPTIONS configuration (was throwing error)
Fixed bug with config-openshot-cloud resetting the wrong superuser account password
Fixed bug where S3 uploads had incorrect/no content-type set
Added documentation for storage scaling support (Amazon Elastic File System: EFS)
1.2.3
Added retry logic for download files from URL or S3 (when creating File objects)
Added retry logic when inspecting newly uploaded File objects
Improved error handling and logging when invalid or corrupted File objects are used
Added secure download endpoints for media files (/files/<id>/download/ and /exports/<id>/download/)
Workers now fallback to secure download endpoints, if direct media URLs are invalid (i.e. if you manually disable them in Apache for security)
Added new configuration setting to override HTTP_HOST (and force all URLs to use any public URL you want). This is especially useful for webhooks (which often refers to http://127.0.0.1).
Improvements to config-openshot-cloud command, messages, formatting, AWS/Azure cloud detection, and support for Azure cloud backend (Queue and Blob storage)
Added Azure Blob Storage support to File and Export endpoints (Exports can support both S3 and Azure Blob storage concurrently)
Added Azure Queue Storage support for Export queue management (OpenShot API now supports both SQS or Azure Queues… just not at the same time)
1.2.2
Improved /files/<id>/copy/ endpoint, which now has an optional “project” parameter. This can be used to copy a file to a different project.
Much improved config-openshot-cloud command (formatting and layout improvements, ability to register for support)
Fixed Effect (Mask) bug where workers were not able to download a custom asset
Added new unit tests with more coverage and many additional edge cases handled
Upgraded libopenshot C++ library with latest improvements and bug fixes (including a serious SVG mask related bug)
Experimental hardware acceleration support in libopenshot (requires instances with hardware encoders/decoders)
More reliable asset downloading between workers and server (retry logic and improved error reporting)
Enable CORS (cross-origin resource sharing) by default (can be disabled in /etc/apache2/sites-available/openshot.conf)
Upgraded boto3 module, for improved AWS S3/SQS support (added support for more regions: ap-south-1)
Updated system libraries and applied security updates
Improved documentation (REST methods, frame # calculations, suggested instance types, upgrade instructions)
1.2.1
Fixed regression with /files/<id>/copy/ endpoint, where original file media was removed
Fixed regression with /projects/<id>/copy/ endpoint, where original file media was removed
Improved documentation for token authentication
1.2.0
Upgrade from Ubuntu 16.04 LTS to 18.04 LTS
All libraries and frameworks updated (including Qt, FFmpeg, resvg, and Python)
Improved SVG rendering (due to updated Qt dependency)
Fixed SVG right alignment bug (due to updated Qt dependency)
1.1.1
Much improved SVG rendering (using resvg library). Supports more of the SVG language than our previous Qt SVG library.
Fixed bug with export object, where webhooks and S3 options were being clobbered at the end of an export.
Fixed S3 upload failures
Added more unit tests to validate S3 uploading and webhooks
Added new /info/fonts/thumbnail/ endpoint, to preview all installed fonts
New default font, when the API can not find an installed font
1.1.0
Replaced ZMQ queue with AWS SQS (for more reliable and scalable queue handling of video exports). Requires IAM user and permissions (AmazonSQSFullAccess & AmazonS3FullAccess).
Worker queue processing now restarts after exports are complete (clearing memory)
Worker file synchronizing is much faster (and more optimized)
Fixed /projects/<id>/load/ endpoint bug when loading ZIP archive of project files.
New /info/fonts/ endpoint for adding new Font files dynamically (POST method now accepted)
Memcached replacing local memory caching (more efficient caching)
/projects/<id>/files/find/ endpoint has been modified, to provide the media URL and file object URL
Updated documentation with new AWS SQS instructions
1.0.10
Improved API performance (less DB queries per request)
File updating bug fix (updating the media of a file would break)
New libopenshot version (fixes some codec issues, improved performance, better detection of various media formats)
1.0.9
Added /files/<id>/copy/ endpoint to Project and File objects
Added /projects/<id>/download/ endpoint for projects (ZIP archive of entire project with relative paths)
Added /files/<id>/text-replace/ endpoint for File objects (for easily editing SVG or text-based files)
Improved /projects/<id>/load/ endpoint to optionally accept a ZIP archive of an entire project with media files
Improved detection of installed AAC encoders
Improved speed of many endpoints (by reducing # of SQL queries and caching)
Reduced default video bitrate, for smaller files by default
Changed /projects/<id>/title/ endpoint to return the new file JSON (instead of a 302 redirect)
Allow OPTIONS method without authentication (for CORS)
Fixed webhooks for pending and failed exports
Fixed UTF-8 encoding error with unicode fonts (also added Noto fonts, including Japanese font)
Maintain original_id when /load/ endpoint is used
Added new unit tests for more coverage of API endpoints
Updated documentation with new endpoints
1.0.8 - Updated libopenshot version (fixed volume keyframe regression), and misc library improvements / fixes
1.0.7 - Reverting to libfdk_aac for AAC support. New native S3 support (for File and Export objects). Duplicate files on PUT or PATCH bug fixed. Improved file-system clean-up. Also improved docs with new S3 examples, and added upgrade instructions and release notes.
1.0.6 - Improved Audio Support (AAC), Better Memory Management, Misc Bug Fixes
1.0.5 - Stability Improvements, New Presets, Improved Docs
1.0.4 - Improved Webhooks, Improved Docs, Improved Logging, Misc Bug fixes
1.0.3 - Title Endpoints, Improved Docs, Misc Bug fixes
1.0.2 - Improved Performance, Improved Stability
1.0.1 - Stability Improvements, Misc Bug Fixes
1.0.0 - Initial Release of OpenShot Cloud API