Scroll to navigation

OPENSHOT-QT(1) OpenShot Video Editor OPENSHOT-QT(1)

NAME

openshot-qt - OpenShot Video Editor Documentation

OpenShot Video Editor is an award-winning, open-source video editor, available on Linux, Mac, and Windows. OpenShot can create stunning videos, films, and animations with an easy-to-use interface and rich set of features.

Learning to use OpenShot is easy, and with this guide, you will be a master in no time at all!

TABLE OF CONTENTS:

Introduction

OpenShot Video Editor is an award-winning, open-source video editor, available on Linux, Mac, and Windows. OpenShot can create stunning videos, films, and animations with an easy-to-use interface and rich feature-set.

Features

  • Cross-platform (Supports Linux, OS X, and Windows)
  • Support for many video, audio, and image formats (based on FFmpeg)
  • Powerful curve-based Key frame animations
  • Desktop integration (drag and drop support)
  • Unlimited tracks / layers
  • Clip resizing, scaling, trimming, snapping, rotation, and cutting
  • Video transitions with real-time previews
  • Compositing, image overlays, watermarks
  • Title templates, title creation, sub-titles
  • 2D animation support (image sequences)
  • 3D animated titles (and effects)
  • SVG friendly, to create and include vector titles and credits
  • Scrolling motion picture credits
  • Advanced Timeline (including Drag & drop, scrolling, panning, zooming, and snapping)
  • Frame accuracy (step through each frame of video)
  • Time-mapping and speed changes on clips (slow/fast, forward/backward, etc…)
  • Audio mixing and editing
  • Digital video effects, including brightness, gamma, hue, greyscale, chroma key (bluescreen / greenscreen) , and many more!

Screenshot

[image]

System Requirements

Video editing benefits from large amounts of memory, modern CPUs, and fast disks. Basically, you want the best computer you can afford when editing video. Here are the minimum system requirements:
  • 64-bit Operating System (Linux, OS X, Windows 7/8/10)
  • Multi-core processor with 64-bit support
  • 4GB of RAM (16GB recommended)
  • 500 MB of hard-disk space for installation
  • Optional: Solid-state drive (SSD), if utilizing disk-caching (and an additional 10GB of hard-disk space)

License

OpenShot Video Editor is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Getting Started

OpenShot Video Editor is available on most operating systems (including Linux, Mac, and Windows). Visit the official download page and grab the latest and greatest version: https://www.openshot.org/download/.

Linux

Depending on which Linux distribution you use, there are likely many ways to install OpenShot. The easiest way to ensure you have the very latest version, is to download an AppImage from the project website (listed above). Once downloaded, right click on the AppImage file, choose Properties, and mark the file as Executable. Now, go ahead and double click the AppImage to launch it.

Mac

Download the DMG file from the project website (listed above), double click it, and then drag the OpenShot application icon into your Applications shortcut. This is very similar to how most other Mac applications are installed. Now launch OpenShot from Launchpad.

Windows

Download the Windows installer executable from the project website (listed above), double click it, and follow the directions on screen. Once completed, OpenShot will be installed and available in your Start menu.

Quick Tutorial

Using OpenShot is very easy, and this tutorial will take you through the basics in under 5 minutes. After this tutorial, you will be able to make a simple photo slide-show with music.

Step 1 – Import Photos & Music

Before we can begin making a video, we need to import files into OpenShot. Drag and drop a few images (*.JPG, *.PNG, etc…) and a music file (most formats will work) from your Desktop to OpenShot. Be sure to drop the files where the arrow in the illustration is pointing to. [image]

Step 2 – Arrange Photos on Timeline

Next, drag each photo onto the timeline (as seen in the illustration). The timeline represents your final video, so arrange your photos in whatever sequence you want them to appear in your video. If you overlap two clips, OpenShot will automatically create a smooth fade between them, displayed by blue rounded rectangles between the clips. Remember, you can rearrange the clips as many times as needed by simply dragging and dropping them. [image]

Step 3 – Add Music to Timeline

To make our photo slide-show more interesting, we need to add some music. You should have imported a music file in step 1. Click on the music file, and drag it onto the timeline. If the song is too long, grab the right edge of your music clip, and resize it smaller. [image]

Step 4 – Preview your Project

To preview what our video looks & sounds like, click the Play button under the preview window. You can also pause, rewind, and fast-forward your video project by clicking the corresponding buttons. [image]

Step 5 – Export your Video

Once you are happy with your photo slide-show video, the next step is to export your video. This will convert your OpenShot project into a single video file, which will work on most media players (such as VLC) or websites (such as YouTube, Vimeo, etc…).

Click on the Export Video icon at the top of the screen (or use the File > Export Video menu). Choose from one of the many preset export options, and click the Export Video button. [image]

You should now have a basic understanding of how OpenShot works. Importing, Arranging, Previewing, and Exporting. Hopefully this tutorial took less than 5 minutes for you to complete. Please read the rest of this guide for a more detailed understanding of OpenShot, and it’s advanced features. Enjoy!

Main Window

OpenShot Video Editor has one main window which contains most of the information, buttons, and menus needed to edit your video project.

Overview

[image]
# Name Description
1 Main Toolbar Contains buttons to open, save, and export your video project.
2 Function Tabs Switch between Project Files, Transitions, and Effects.
3 Project Files All audio, video, and image files that have been imported into your project.
4 Preview Window This is the area that the video will playback on the screen.
5 Edit Toolbar This toolbar contains buttons used for snapping, inserting markers, and jumping between markers.
6 Zoom Slider This slider will adjust the time-scale of your timeline.
7 Play-head / Ruler The ruler shows the time-scale, and the red line is the play-head. The play-head represents the current playback position.
8 Timeline The timeline visualizes your video project, and each clip and transition in your project.
9 Filter Filter the list of items shown (project files, transitions, and effects) by using these buttons and filter textbox. Enter a few letters of what you are looking for, and the results will be shown.

For step-by-step instructions on the basic usage of OpenShot, be sure to read the quick_tutorial_ref.

Built-in Tutorial

When you first launch OpenShot, you will be presented with a friendly built-in tutorial. It will point out and explain the basics. Clicking Next will jump to the next topic. You can always view this tutorial again from the Help→Tutorial menu. [image]

Tracks & Layers

OpenShot uses tracks to layer videos and images. The top most track is the top layer, and the bottom track is the bottom layer. If you are familiar with layers in a photo editing application, then you should be quite familiar with this concept. OpenShot will mix each layer together, just like a photo editing application. You can have an unlimited number of tracks, but typically a video project will not need more than 10 (or so) tracks.

For example, imagine a 3 track video project [image]

# Name Description
1 Top Track Clips on this track will always be on top and visible
2 Middle Track Clips in the middle (might or might not be visible, depending on what is above them)
3 Bottom Track Clips on this track will always be on the bottom

Keyboard Shortcuts

Here is a list of the default keyboard shortcuts supported by OpenShot. You can configure these shortcuts in the Preferences dialog. Learning a few of these shortcuts can save you a bunch of time!
Shortcut Action
Ctrl+H About OpenShot
Ctrl+M Add Marker
Ctrl+Shift+T Add Track
Ctrl+W Add to Timeline
Ctrl+B Animated Title
Ctrl+P Choose Profile
Ctrl+C Copy
Delete Delete Item
Backspace Delete Item
Ctrl+D Details View
Ctrl+E Export Video
L Fast Forward
F11 Fullscreen
Ctrl+F Import Files
Ctrl+End Jump to End
Ctrl+Home Jump to Start
Ctrl+N New Project
Right Next Frame
Ctrl+Right Next Marker
Ctrl+O Open Project
Ctrl+V Paste
Space Play/Pause Toggle
Up Play/Pause Toggle
Down Play/Pause Toggle
K Play/Pause Toggle
Ctrl+Shift+P Preferences
Left Previous Frame
Ctrl+Left Previous Marker
Ctrl+I Properties
Ctrl+Q Quit
Ctrl+Y Redo
J Rewind
Ctrl+S Save Project
Ctrl+Shift+S Save Project As…
Ctrl+A Select All
Ctrl+Shift+A Select None
Ctrl+K Slice All: Keep Both Sides
Ctrl+L Slice All: Keep Left Side
Ctrl+J Slice All: Keep Right Side
Ctrl+G Toggle Snapping
Ctrl+X Split Clip
Ctrl+Shift+D Thumbnail View
Ctrl+T Title Editor
Ctrl+Z Undo
= Zoom In
Zoom Out
Ctrl+Scroll Zoom In/Out
Ctrl+Middle Button Scroll Timeline

Files

Before we can begin making a video, we need to import files into OpenShot. Most media file types are recognized, such as videos, images, and audio files. Files can be viewed and managed in the Project Files panel.

Import Files

There are many ways to import media files into OpenShot. [image]
Name Description
Drag and Drop Drag and drop the files from your file manager (file explorer, finder, etc…)
Right Click→Import Right click in the Project Files panel, choose Import Files…
File Menu→Import File menu→Import Files…
Import Files Toolbar Click the Import Files… toolbar button (on the top menu)

File Menu

To view the file menu, right click on a file (in the Project Files panel). Here are the actions you can use from the file menu. [image]
Name Description
Import Files… Import files into your project
Thumbnail/Detail Toggle the view between details and thumbnails
Preview File Preview a media file
Split Clip… Split a file into many smaller clips
Edit Title Edit an existing title SVG file
Duplicate Title Make a copy, and then edit the copied title SVG file
Add to Timeline Add many files to the timeline in one step
File Properties View the properties of a file, such as frame rate, size, etc…
Remove from Project Remove a file from the project

Split Clip

If you need to cut a file into many smaller clips before editing, the Split Clip dialog is built exactly for this purpose. Right click on a file, and choose Split Clip… from the file menu. This opens the Split Clip dialog. Use this dialog to quickly cut out as many small clips as you need. The dialog stays open after you create a clip, to allow you to repeat the steps for your next clip. When you are finished, simply close the dialog. [image]
# Name Description
1 Start of Clip Choose the starting frame of your clip by clicking this button
2 End of Clip Choose the ending frame of your clip by clicking this button
3 Name of Clip Enter an optional name
4 Create Clip Create the clip (which resets this dialog, so you can repeat these steps for each clip)

Add to Timeline

In certain cases, you might need to add many files to the timeline at the same time. For example, a photo slide show, or a large number of short video clips. The Add to Timeline dialog can automate this task for you. First, select all files you need to add, right click, and choose Add to Timeline. [image]
# Name Description
1 Selected Files The list of selected files that need to be added to the timeline
2 Order of Files Use these buttons to reorder the list of files (move up, move down, randomize, remove)
3 Timeline Position Choose the starting position and track where these files need to be inserted on the timeline
4 Fade Options Fade in, fade out, both, or none
5 Zoom Options Zoom in, zoom out, or none
6 Transitions Choose a specific transition to use between files, random, or none

Properties

To view the properties of any imported file in your video project, right click on the file, and choose File Properties. This will launch the file properties dialog, which displays information about your media file. For certain types of images (i.e. image sequences), you can adjust the frame rate on this dialog also. [image]
# Name Description
1 File Properties Select an image sequence in the Project Files panel, right click and choose File Properties
2 Frame Rate For image sequences, you can also adjust the frame rate of the animation

Clips

Each media file you add to the OpenShot timeline is called a clip, and is visualized by a dark, rounded rectangle (as seen in the screenshot below). A clip has a large number of properties, which affects how the clip is rendered and composited, such as scale, location, rotation, and alpha. These properties can also be animated over time, and when combined together, can create some amazing effects.

Overview

[image]
# Name Description
1 Clip 1 A video clip
2 Transition A gradual fade transition between the 2 clips
3 Clip 2 An image clip

Cutting & Slicing

OpenShot has many easy ways to adjust the start and end positions of a clip (otherwise known as cutting). The most common method is simply grabbing the left (or right) edge of the clip and dragging. Here is a list of methods for cutting clips in OpenShot:
Name Description
Slice When the play-head (i.e. red playback line) is overlapping a clip, right click on the clip, and choose Slice
Slice All When the play-head is overlapping many clips, right click on the play-head, and choose Slice All (it will cut all intersecting clips)
Resizing Edge Mouse over the edge of a clip, and resize the edge
Split Dialog Right click on a file, and choose Split Clip. A dialog will appear which allows for creating lots of small cuts in a single video file.
Razor Tool The razor tool cuts a clip wherever you click, so be careful. Easy and dangerous.

Keep in mind that all of the above cutting methods also have keyboard_shortcut_ref, to save even more time.

Preset Menu

OpenShot has tons of great preset animations and clip properties, such as fading, sliding, zooming, etc… These presets can be accessed by right clicking on a clip. [image]
Name Description
Fade Fade in or out a clip (often easier than using a transition)
Animate Zoom and slide a clip
Rotate Rotate or flip a video
Layout Make a video smaller or larger, and snap to any corner
Time Reverse and speed up or slow down video
Volume Fade in or out the volume for a clip
Separate Audio Create a clip for each audio track
Slice Cut the clip at the play-head position
Transform Enable transform mode
Display Show waveform or thumbnail for a clip
Properties Show the properties panel for a clip
Copy / Paste Copy and paste key frames or duplicate an entire clip (with all key frames)
Remove Clip Remove a clip from the timeline

Transform

To quickly adjust the location and scale of a clip, select a clip on the timeline, right click and choose Transform. Grab any of the small blue handles to adjust scale, and grab the middle circle to move the image. Note: Pay close attention to where the play-head (i.e. red playback line) is. Key frames are automatically created at the current playback position, to help create animations. [image]

For more info on key frames and animation, see animation_ref.

Effects

In addition to the many clip properties which can be animated and adjusted, you can also drop an effect directly onto a clip. Each effect is represented by a small letter icon. Clicking the effect icon will populate the properties of that effect, and allow you to edit (and animate) them. [image]

Properties

Below is a list of clip properties which can be edited, and in most cases, animated over time. To view a clip’s properties, right click and choose Properties. The property editor will appear, where you can change these properties. Note: Pay close attention to where the play-head (i.e. red playback line) is. Key frames are automatically created at the current playback position, to help create animations.
Name Description
Gravity Type The gravity of a clip determines where it snaps to it’s parent
Scale Type The scale determines how a clip should be resized to fit it’s parent
Frame Display Type The format to display the frame number (if any)
Scale X Curve representing the horizontal scaling in percent (0 to 1)
Scale Y Curve representing the vertical scaling in percent (0 to 1)
Location X Curve representing the relative X position in percent based on the gravity (-1 to 1)
Location Y Curve representing the relative Y position in percent based on the gravity (-1 to 1)
Rotation Curve representing the rotation (0 to 360)
Alpha Curve representing the alpha (1 to 0)
Time Curve representing the frames over time to play (used for speed and direction of video)
Volume Curve representing the volume (0 to 1)
Shear X Curve representing X shear angle in degrees (-45.0=left, 45.0=right)
Shear Y Curve representing Y shear angle in degrees (-45.0=down, 45.0=up)
Channel Filter A number representing an audio channel to filter (clears all other channels)
Channel Mapping A number representing an audio channel to output (only works when filtering a channel)
Has Audio An optional override to determine if this clip has audio (-1=undefined, 0=no, 1=yes)
Has Video An optional override to determine if this clip has video (-1=undefined, 0=no, 1=yes)
Waveform Should a waveform be used instead of the clip’s image
Waveform Color Curve representing the color of the audio wave form

For more info on key frames and animation, see animation_ref.

Transitions

A transition is used to gradually fade (or wipe) between two clips. In OpenShot, transitions are represented by blue, rounded rectangles on the timeline. They are automatically created when you overlap two clips, and can be added manually by dragging one onto the timeline from the Transitions panel. A transition must be placed on top of a clip (overlapping it), with the most common location being the beginning or end.

Overview

[image]
# Name Description
1 Clip 1 A video clip
2 Transition A gradual fade transition between the 2 clips, created automatically by overlapping the clips.
3 Clip 2 An image clip

Direction

Transitions adjust the alpha/transparency of the clip below it, and can either fade from opaque to transparent, or transparent to opaque. Right click and choose Reverse Transition to change the direction of the fade. You can also manually adjust the Brightness curve, animating the fade in any way you wish. [image]

Cutting & Slicing

OpenShot has many easy ways to adjust the start and end positions of a transition (otherwise known as cutting). The most common method is simply grabbing the left (or right) edge of the transition and dragging. Here is a list of methods for cutting transitions in OpenShot:
Name Description
Slice When the play-head (i.e. red playback line) is overlapping a transition, right click on the transition, and choose Slice
Slice All When the play-head is overlapping many transitions, right click on the play-head, and choose Slice All (it will cut all intersecting transitions)
Resizing Edge Mouse over the edge of a transition, and resize the edge
Razor Tool The razor tool cuts a transition wherever you click, so be careful. Easy and dangerous.

Keep in mind that all of the above cutting methods also have keyboard_shortcut_ref.

Mask

Like clips_ref, transitions also have properties which can be animated over time. The fade (or wipe) can be adjusted with the Brightness curve, or held at a constant value to create a transparency mask on top of a clip.

Custom Transition

Any greyscale image can be used as a transition (or mask), by adding it to your /.openshot_qt/transitions/ folder. Just be sure to name your file something that is easily recognizable, and restart OpenShot. Your custom transition/mask will now show up in the list of transitions.

Properties

Below is a list of transition properties which can be edited, and in most cases, animated over time. To view a transition’s properties, right click and choose Properties. The property editor will appear, where you can change these properties. NOTE: Pay close attention to where the play-head (i.e. red playback line) is. Key frames are automatically created at the current playback position, to help create animations.
Name Description
Brightness Curve representing the brightness of the transition image, which affects the fade/wipe (-1 to 1)
Contrast Curve representing the contrast of the transition image, which affects the softness/hardness of the fade/wipe (0 to 20)
Replace Image For debugging a problem, this property displays the transition image (instead of becoming a transparency)

Animation

OpenShot has been designed specifically with animation in mind. The powerful curve-based animation framework can handle most jobs with ease, and is flexible enough to create just about any animation. Key frames specify values at certain points on a clip, and OpenShot does the hard work of interpolating the in-between values.

Overview

[image]
# Name Description
1 Green Property When the play-head is on a key frame, the property appears green
1 Blue Property When the play-head is on an interpolated value, the property appears blue
2 Value Slider Click and drag your mouse to adjust the value (this automatically creates a key frame if needed)
3 Play-head Position the play-head over a clip where you need a key frame
4 Key frame Markers Small green tick marks are drawn at all key frame positions (on a clip)

Key Frames

To create a key frame in OpenShot, simply position the play-head (i.e. playback position) at any point over a clip, and edit properties in the property dialog. If the property supports key frames, it will turn green, and a small green tick mark will appear on your clip at that position. Move your play-head to another point over that clip, and adjust the properties again. All animations require at least 2 key frames, but can support an unlimited number of them.

To adjust the interpolation mode, right click on the small graph icon next to a property value.

Name Description
Bézier Interpolated values use a quadratic curve, and ease-in and ease-out
Linear Interpolated values are calculated linear (each step value is equal)
Constant Interpolated values stay the same until the next key frame, and jump to the new value

For more info on clip properties, see clip_properties_ref. For more info on preset animations, see clip_presets_ref. For more info on creating key frames for location and scale, see clip_transform_ref.

Bézier Presets

When using a Bézier curve for animation, OpenShot includes more than 20 curve presets (which affect the shape of the curve). For example, Ease-In has a more gradual slope at the beginning, making an animation move slower at the beginning, and faster at the end. Ease-In/Out (Back) has a gradual beginning and ending, but actually goes past the expected value and then back (producing a bounce effect).

To choose a curve preset, right click on the small graph icon next to a key frame. [image]

Image Sequences

If you have a sequence of similarly named images (such as, cat001.png, cat002.png, cat003.png, etc…), you can simply drag and drop one of them into OpenShot, and you will be prompted to import the entire sequence.

To adjust the frame rate of the animation, right click and choose File Properties in the Project Files panel, and adjust the frame rate. Once you have set the correct frame rate, drag the animation onto the timeline. [image]

# Name Description
1 File Properties Select an image sequence in the Project Files panel, right click and choose File Properties
2 Frame Rate Adjust the frame rate of the animation. Typically, hand-drawn animations use 12 frames per second.

Titles

Adding text and titles is an important aspect of video editing, and OpenShot comes with an easy to use Title Editor. Use the Title menu (located in the main menu of OpenShot) to launch the Title Editor. You can also use the keyboard shortcut Ctrl+T.

Overview

[image]
# Name Description
1 Choose a Template Choose from any available vector title template
2 Preview Title Preview your title as you make changes
3 Title Properties Change the text, colors, or edit in an advanced SVG image editor (such as Inkscape)
4 Save Save and add the title to your project

Custom Titles

OpenShot can use any vector SVG image file as a title template. Just add an SVG image file to your /.openshot_qt/titles/ folder, and it will appear in OpenShot’s title editor after you restart OpenShot. You can also right click on any SVG files in your Project Files panel, and choose Edit Title or Duplicate Title.

3D Animated Titles

Adding a 3D animated title is just as easy, using our Animated Title dialog. Use the Title menu (located in the main menu of OpenShot) to launch the Animated Title editor. You can also use the keyboard shortcut Ctrl+B. [image]
# Name Description
1 Choose a Template Choose from any available 3D title templates
2 Preview Title Preview your title as you make changes
3 Title Properties Change the text, colors, and advanced properties
4 Render Render the 3D animation, and add it to your project

This feature requires the latest version of Blender (https://www.blender.org/download/) be installed, and the OpenShot Preferences updated with the correct path to the Blender executable (for example: /home/USER/blender-2.78/blender).

Profiles

A profile is a collection of common video settings (size, frame rate, aspect ratio, etc…). Profiles are used during editing, previewing, and exporting to provide a quick way to switch between common combinations of these settings.

Project Profile

The project profile is used when previewing your project and editing. The default project profile is “HD 720p 24fps”. It is best practice to always switch to your target profile before you begin editing. For example, if you are targeting 1080p 30fps, switch to that profile before you begin editing your project. [image]
# Name Description
1 Title Bar The title bar of OpenShot displays the current profile
2 Profile Button Launch the profiles dialog
3 Choose Profile Select a profile for editing and preview

Export Profile

The export profile always defaults to your current project profile, but can be changed to target different profiles. [image]
# Name Description
1 Choose Profile Select a profile for export

Custom Profile

Although OpenShot has more than 70 profiles included by default, you can also create your own custom profiles. Create a new file in the /.openshot_qt/profiles/ folder. Use the following text as your template (i.e. copy and paste this into the file):

description=Custom Profile Name
frame_rate_num=30000
frame_rate_den=1001
width=1280
height=720
progressive=1
sample_aspect_num=1
sample_aspect_den=1
display_aspect_num=16
display_aspect_den=9


Once you restart OpenShot, you will see your custom profile appear in the list of Profiles.

Import & Export

Video editing projects (including tracks, clips, and keyframes) can be imported and exported from OpenShot Video Editor in widely supported formats (EDL: Edit Decision Lists, and XML: Final Cut Pro format). For example, if you start editing a video in a different program (Adobe Premier, Final Cut Pro, etc…), but later need to move all your edits to OpenShot (or vice versa).

EDL (Edit Decision Lists)

The following features are supported when importing and exporting an EDL file with OpenShot.
Name Description
EDL Format CMX-3600 (a very widely supported variation)
Single Track Only a single track can be imported at a time (this is a limitation of the EDL format)
Tape Name Only AX and BL tape names are currently supported in OpenShot
Edits (V and A) Only edits are currently supported (transitions are not yet supported)
Opacity Opacity keyframes are supported
Audio Levels Volume keyframes are supported

Example EDL format supported by OpenShot:

 TITLE: Clips - TRACK 5
 FCM: NON-DROP FRAME
 001  BL       V     C        00:00:00:01 00:00:03:17 00:00:00:01 00:00:03:17
 001  AX       V     C        00:00:00:01 00:00:10:01 00:00:03:17 00:00:13:17
 * FROM CLIP NAME: Intro.png
 002  BL       V     C        00:00:00:01 00:00:05:09 00:00:13:17 00:00:18:25
 002  AX       V     C        00:00:00:01 00:00:10:01 00:00:18:25 00:00:28:25
 * FROM CLIP NAME: FileName.mp4
 * OPACITY LEVEL AT 00:00:00:01 IS 0.00%  (REEL AX)
 * OPACITY LEVEL AT 00:00:01:01 IS 100.00%  (REEL AX)
 * OPACITY LEVEL AT 00:00:09:01 IS 100.00%  (REEL AX)
 * OPACITY LEVEL AT 00:00:10:01 IS 0.00%  (REEL AX)
 003  BL       V     C        00:00:00:01 00:00:33:15 00:00:28:25 00:01:02:09
 003  AX       V     C        00:00:14:25 00:00:34:29 00:01:02:09 00:01:22:13
 003  AX       A     C        00:00:14:25 00:00:34:29 00:01:02:09 00:01:22:13
 * FROM CLIP NAME: FileName2.mp4
 004  BL       V     C        00:00:00:01 00:00:26:25 00:01:22:13 00:01:49:07
 004  AX       A     C        00:00:00:01 00:02:20:01 00:01:49:07 00:04:09:07
 * FROM CLIP NAME: Music.wav
 * AUDIO LEVEL AT 00:00:00:01 IS -99.00 DB  (REEL AX A1)
 * AUDIO LEVEL AT 00:00:03:01 IS 0.00 DB  (REEL AX A1)
 * AUDIO LEVEL AT 00:02:17:01 IS 0.00 DB  (REEL AX A1)
 * AUDIO LEVEL AT 00:02:20:01 IS -99.00 DB  (REEL AX A1)


XML (Final Cut Pro format)

The following features are supported when importing and exporting an XML file with OpenShot. This XML format is supported in many video editors (not just Final Cut Pro). In fact, most commercial video editors have some support for importing and exporting this same XML format.
Name Description
XML Format Final Cut Pro format (but most commercial video editors also support this format)
All Tracks All video and audio tracks are supported
Edits All clips on all tracks are supported (video, image, and audio files). Transitions are not yet supported.
Opacity Opacity keyframes are supported
Audio Levels Volume keyframes are supported

Example XML format supported by OpenShot (abbreviated):

<?xml version="1.0" ?>
<!DOCTYPE xmeml>
<xmeml version="4">
    <sequence MZ.EditLine="3237704870400" MZ.Sequence.AudioTimeDisplayFormat="200" MZ.Sequence.EditingModeGUID="795454d9-d3c2-429d-9474-923ab13b7017" MZ.Sequence.PreviewFrameSizeHeight="480" MZ.Sequence.PreviewFrameSizeWidth="720" MZ.Sequence.PreviewRenderingClassID="1061109567" MZ.Sequence.PreviewRenderingPresetCodec="1685480224" MZ.Sequence.PreviewRenderingPresetPath="EncoderPresets/SequencePreview/795454d9-d3c2-429d-9474-923ab13b7017/QuickTime DV NTSC.epr" MZ.Sequence.PreviewUseMaxBitDepth="false" MZ.Sequence.PreviewUseMaxRenderQuality="false" MZ.Sequence.VideoTimeDisplayFormat="102" MZ.WorkInPoint="0" MZ.WorkOutPoint="5432902675200" MZ.ZeroPoint="8475667200" Monitor.ProgramZoomIn="0" Monitor.ProgramZoomOut="5432902675200" TL.SQAVDividerPosition="0.5" TL.SQAudioVisibleBase="0" TL.SQHeaderWidth="236" TL.SQHideShyTracks="0" TL.SQTimePerPixel="0.050923888888888894" TL.SQVideoVisibleBase="0" TL.SQVisibleBaseTime="0" explodedTracks="true" id="X3N90QWYU1">
        <uuid>60cb1fb8-7dac-11e9-abb0-f81a67234bcb</uuid>
        <duration>249.215625</duration>
        <rate>
            <timebase>30.0</timebase>
            <ntsc>TRUE</ntsc>
        </rate>
        <name>Clips.xml</name>
        <media>
            <video>
                <format>
                    <samplecharacteristics>
                        <rate>
                            <timebase>30.0</timebase>
                            <ntsc>TRUE</ntsc>
                        </rate>
                        <codec>...</codec>
                        <width>1280</width>
                        <height>720</height>
                        <anamorphic>FALSE</anamorphic>
                        <pixelaspectratio>NTSC-601</pixelaspectratio>
                        <fielddominance>lower</fielddominance>
                        <colordepth>24</colordepth>
                    </samplecharacteristics>
                </format>
                <track MZ.TrackTargeted="0" TL.SQTrackExpanded="0" TL.SQTrackExpandedHeight="25" TL.SQTrackShy="0">
                    <enabled>TRUE</enabled>
                    <locked>FALSE</locked>
                    <clipitem id="XAUWQHBX4K">
                        <name>Title.png</name>
                        <enabled>TRUE</enabled>
                        <duration>300.0</duration>
                        <rate>
                            <timebase>30</timebase>
                            <ntsc>TRUE</ntsc>
                        </rate>
                        <start>340.79999999999995</start>
                        <end>640.8</end>
                        <in>0.0</in>
                        <out>300.0</out>
                        <pproTicksIn>0.0</pproTicksIn>
                        <pproTicksOut>76204800000000.0</pproTicksOut>
                        <alphatype>none</alphatype>
                        <pixelaspectratio>square</pixelaspectratio>
                        <anamorphic>FALSE</anamorphic>
                        <file id="FL840TGBJK">
                            <name>Title.png</name>
                            <pathurl>Title.png</pathurl>
                            <rate>
                                <timebase>30</timebase>
                                <ntsc>TRUE</ntsc>
                            </rate>
                            <duration>301</duration>
                            <timecode>
                                <rate>
                                    <timebase>30</timebase>
                                    <ntsc>TRUE</ntsc>
                                </rate>
                                <string>00:00:00:00</string>
                                <frame>0</frame>
                                <displayformat>NDF</displayformat>
                                <reel>
                                    <name>AX</name>
                                </reel>
                            </timecode>
                            <media>
                                <video>
                                    <samplecharacteristics>
                                        <rate>
                                            <timebase>30</timebase>
                                            <ntsc>TRUE</ntsc>
                                        </rate>
                                        <width>720</width>
                                        <height>480</height>
                                        <anamorphic>FALSE</anamorphic>
                                        <pixelaspectratio>square</pixelaspectratio>
                                        <fielddominance>lower</fielddominance>
                                    </samplecharacteristics>
                                </video>
                                <audio>
                                    <samplecharacteristics>
                                        <depth>16</depth>
                                        <samplerate>48000</samplerate>
                                    </samplecharacteristics>
                                    <channelcount>2</channelcount>
                                </audio>
                            </media>
                        </file>
                        <filter>
                            <effect>
                                <name>Opacity</name>
                                <effectid>opacity</effectid>
                                <effectcategory>motion</effectcategory>
                                <effecttype>motion</effecttype>
                                <mediatype>video</mediatype>
                                <pproBypass>false</pproBypass>
                                <parameter authoringApp="OpenShot">
                                    <parameterid>opacity</parameterid>
                                    <name>opacity</name>
                                    <valuemin>0</valuemin>
                                    <valuemax>100</valuemax>
                                    <value>100</value>
                                    <keyframe>
                                        <when>1.0</when>
                                        <value>100.0</value>
                                    </keyframe>
                                </parameter>
                            </effect>
                        </filter>
                        <logginginfo>
                            <description/>
                            <scene/>
                            <shottake/>
                            <lognote/>
                            <good/>
                            <originalvideofilename/>
                            <originalaudiofilename/>
                        </logginginfo>
                        <colorinfo>
                            <lut/>
                            <lut1/>
                            <asc_sop/>
                            <asc_sat/>
                            <lut2/>
                        </colorinfo>
                        <labels>
                            <label2>Violet</label2>
                        </labels>
                    </clipitem>
                    <clipitem id="A2ZIIOZCH9">
                        <name>FileName.mp4</name>
                        <enabled>TRUE</enabled>
                        <duration>1558.400001525879</duration>
                        <rate>
                            <timebase>30</timebase>
                            <ntsc>TRUE</ntsc>
                        </rate>
                        <start>2214.0</start>
                        <end>3772.400001525879</end>
                        <in>0.0</in>
                        <out>1558.400001525879</out>
                        <pproTicksIn>0.0</pproTicksIn>
                        <pproTicksOut>395858534787597.6</pproTicksOut>
                        <alphatype>none</alphatype>
                        <pixelaspectratio>square</pixelaspectratio>
                        <anamorphic>FALSE</anamorphic>
                        <file id="SG00IW75Y5">
                            <name>FileName.mp4</name>
                            <pathurl>FileName.mp4</pathurl>
                            <rate>
                                <timebase>30</timebase>
                                <ntsc>TRUE</ntsc>
                            </rate>
                            <duration>301</duration>
                            <timecode>
                                <rate>
                                    <timebase>30</timebase>
                                    <ntsc>TRUE</ntsc>
                                </rate>
                                <string>00:00:00:00</string>
                                <frame>0</frame>
                                <displayformat>NDF</displayformat>
                                <reel>
                                    <name>AX</name>
                                </reel>
                            </timecode>
                            <media>
                                <video>
                                    <samplecharacteristics>
                                        <rate>
                                            <timebase>30</timebase>
                                            <ntsc>TRUE</ntsc>
                                        </rate>
                                        <width>720</width>
                                        <height>480</height>
                                        <anamorphic>FALSE</anamorphic>
                                        <pixelaspectratio>square</pixelaspectratio>
                                        <fielddominance>lower</fielddominance>
                                    </samplecharacteristics>
                                </video>
                                <audio>
                                    <samplecharacteristics>
                                        <depth>16</depth>
                                        <samplerate>2</samplerate>
                                    </samplecharacteristics>
                                    <channelcount>48000</channelcount>
                                </audio>
                            </media>
                        </file>
                        <filter>
                            <effect>
                                <name>Opacity</name>
                                <effectid>opacity</effectid>
                                <effectcategory>motion</effectcategory>
                                <effecttype>motion</effecttype>
                                <mediatype>video</mediatype>
                                <pproBypass>false</pproBypass>
                                <parameter authoringApp="OpenShot">
                                    <parameterid>opacity</parameterid>
                                    <name>opacity</name>
                                    <valuemin>0</valuemin>
                                    <valuemax>100</valuemax>
                                    <value>100</value>
                                    <keyframe>
                                        <when>1.0</when>
                                        <value>100.0</value>
                                    </keyframe>
                                </parameter>
                            </effect>
                        </filter>
                        <logginginfo>
                            <description/>
                            <scene/>
                            <shottake/>
                            <lognote/>
                            <good/>
                            <originalvideofilename/>
                            <originalaudiofilename/>
                        </logginginfo>
                        <colorinfo>
                            <lut/>
                            <lut1/>
                            <asc_sop/>
                            <asc_sat/>
                            <lut2/>
                        </colorinfo>
                        <labels>
                            <label2>Violet</label2>
                        </labels>
                    </clipitem>
                </track>
                <track MZ.TrackTargeted="0" TL.SQTrackExpanded="0" TL.SQTrackExpandedHeight="25" TL.SQTrackShy="0">
                    <enabled>TRUE</enabled>
                    <locked>FALSE</locked>
                    <clipitem id="0E25FKQBWG">
                        <name>Credits.png</name>
                        <enabled>TRUE</enabled>
                        <duration>300.0</duration>
                        <rate>
                            <timebase>30</timebase>
                            <ntsc>TRUE</ntsc>
                        </rate>
                        <start>105.6</start>
                        <end>405.59999999999997</end>
                        <in>0.0</in>
                        <out>300.0</out>
                        <pproTicksIn>0.0</pproTicksIn>
                        <pproTicksOut>76204800000000.0</pproTicksOut>
                        <alphatype>none</alphatype>
                        <pixelaspectratio>square</pixelaspectratio>
                        <anamorphic>FALSE</anamorphic>
                        <file id="KTBZK4AR5A">
                            <name>Credits.png</name>
                            <pathurl>Credits.png</pathurl>
                            <rate>
                                <timebase>30</timebase>
                                <ntsc>TRUE</ntsc>
                            </rate>
                            <duration>301</duration>
                            <timecode>
                                <rate>
                                    <timebase>30</timebase>
                                    <ntsc>TRUE</ntsc>
                                </rate>
                                <string>00:00:00:00</string>
                                <frame>0</frame>
                                <displayformat>NDF</displayformat>
                                <reel>
                                    <name>AX</name>
                                </reel>
                            </timecode>
                            <media>
                                <video>
                                    <samplecharacteristics>
                                        <rate>
                                            <timebase>30</timebase>
                                            <ntsc>TRUE</ntsc>
                                        </rate>
                                        <width>720</width>
                                        <height>480</height>
                                        <anamorphic>FALSE</anamorphic>
                                        <pixelaspectratio>square</pixelaspectratio>
                                        <fielddominance>lower</fielddominance>
                                    </samplecharacteristics>
                                </video>
                                <audio>
                                    <samplecharacteristics>
                                        <depth>16</depth>
                                        <samplerate>48000</samplerate>
                                    </samplecharacteristics>
                                    <channelcount>2</channelcount>
                                </audio>
                            </media>
                        </file>
                        <filter>
                            <effect>
                                <name>Opacity</name>
                                <effectid>opacity</effectid>
                                <effectcategory>motion</effectcategory>
                                <effecttype>motion</effecttype>
                                <mediatype>video</mediatype>
                                <pproBypass>false</pproBypass>
                                <parameter authoringApp="OpenShot">
                                    <parameterid>opacity</parameterid>
                                    <name>opacity</name>
                                    <valuemin>0</valuemin>
                                    <valuemax>100</valuemax>
                                    <value>100</value>
                                    <keyframe>
                                        <when>1.0</when>
                                        <value>100.0</value>
                                    </keyframe>
                                </parameter>
                            </effect>
                        </filter>
                        <logginginfo>
                            <description/>
                            <scene/>
                            <shottake/>
                            <lognote/>
                            <good/>
                            <originalvideofilename/>
                            <originalaudiofilename/>
                        </logginginfo>
                        <colorinfo>
                            <lut/>
                            <lut1/>
                            <asc_sop/>
                            <asc_sat/>
                            <lut2/>
                        </colorinfo>
                        <labels>
                            <label2>Violet</label2>
                        </labels>
                    </clipitem>
                    <clipitem id="YBPQ8J4LC9">
                        <name>Overlay.png</name>
                        <enabled>TRUE</enabled>
                        <duration>300.0</duration>
                        <rate>
                            <timebase>30</timebase>
                            <ntsc>TRUE</ntsc>
                        </rate>
                        <start>564.0</start>
                        <end>864.0</end>
                        <in>0.0</in>
                        <out>300.0</out>
                        <pproTicksIn>0.0</pproTicksIn>
                        <pproTicksOut>76204800000000.0</pproTicksOut>
                        <alphatype>none</alphatype>
                        <pixelaspectratio>square</pixelaspectratio>
                        <anamorphic>FALSE</anamorphic>
                        <file id="MMRR3KIDHF">
                            <name>Overlay.png</name>
                            <pathurl>Overlay.png</pathurl>
                            <rate>
                                <timebase>30</timebase>
                                <ntsc>TRUE</ntsc>
                            </rate>
                            <duration>301</duration>
                            <timecode>
                                <rate>
                                    <timebase>30</timebase>
                                    <ntsc>TRUE</ntsc>
                                </rate>
                                <string>00:00:00:00</string>
                                <frame>0</frame>
                                <displayformat>NDF</displayformat>
                                <reel>
                                    <name>AX</name>
                                </reel>
                            </timecode>
                            <media>
                                <video>
                                    <samplecharacteristics>
                                        <rate>
                                            <timebase>30</timebase>
                                            <ntsc>TRUE</ntsc>
                                        </rate>
                                        <width>720</width>
                                        <height>480</height>
                                        <anamorphic>FALSE</anamorphic>
                                        <pixelaspectratio>square</pixelaspectratio>
                                        <fielddominance>lower</fielddominance>
                                    </samplecharacteristics>
                                </video>
                                <audio>
                                    <samplecharacteristics>
                                        <depth>16</depth>
                                        <samplerate>48000</samplerate>
                                    </samplecharacteristics>
                                    <channelcount>2</channelcount>
                                </audio>
                            </media>
                        </file>
                        <filter>
                            <effect>
                                <name>Opacity</name>
                                <effectid>opacity</effectid>
                                <effectcategory>motion</effectcategory>
                                <effecttype>motion</effecttype>
                                <mediatype>video</mediatype>
                                <pproBypass>false</pproBypass>
                                <parameter authoringApp="OpenShot">
                                    <parameterid>opacity</parameterid>
                                    <name>opacity</name>
                                    <valuemin>0</valuemin>
                                    <valuemax>100</valuemax>
                                    <value>100</value>
                                    <keyframe>
                                        <when>1.0</when>
                                        <value>0.0</value>
                                    </keyframe>
                                    <keyframe>
                                        <when>31.0</when>
                                        <value>100.0</value>
                                    </keyframe>
                                    <keyframe>
                                        <when>271.0</when>
                                        <value>100.0</value>
                                    </keyframe>
                                    <keyframe>
                                        <when>301.0</when>
                                        <value>0.0</value>
                                    </keyframe>
                                </parameter>
                            </effect>
                        </filter>
                        <logginginfo>
                            <description/>
                            <scene/>
                            <shottake/>
                            <lognote/>
                            <good/>
                            <originalvideofilename/>
                            <originalaudiofilename/>
                        </logginginfo>
                        <colorinfo>
                            <lut/>
                            <lut1/>
                            <asc_sop/>
                            <asc_sat/>
                            <lut2/>
                        </colorinfo>
                        <labels>
                            <label2>Violet</label2>
                        </labels>
                    </clipitem>
                    <clipitem id="SQ3995OKWV">
                        <name>FileName.mp4</name>
                        <enabled>TRUE</enabled>
                        <duration>603.9999999999999</duration>
                        <rate>
                            <timebase>30</timebase>
                            <ntsc>TRUE</ntsc>
                        </rate>
                        <start>1868.0</start>
                        <end>2471.9999999999995</end>
                        <in>444.0</in>
                        <out>1048.0</out>
                        <pproTicksIn>112783104000000.0</pproTicksIn>
                        <pproTicksOut>266208768000000.0</pproTicksOut>
                        <alphatype>none</alphatype>
                        <pixelaspectratio>square</pixelaspectratio>
                        <anamorphic>FALSE</anamorphic>
                        <file id="SG00IW75Y5">
                            <name>FileName.mp4</name>
                            <pathurl>FileName.mp4</pathurl>
                            <rate>
                                <timebase>30</timebase>
                                <ntsc>TRUE</ntsc>
                            </rate>
                            <duration>301</duration>
                            <timecode>
                                <rate>
                                    <timebase>30</timebase>
                                    <ntsc>TRUE</ntsc>
                                </rate>
                                <string>00:00:00:00</string>
                                <frame>0</frame>
                                <displayformat>NDF</displayformat>
                                <reel>
                                    <name>AX</name>
                                </reel>
                            </timecode>
                            <media>
                                <video>
                                    <samplecharacteristics>
                                        <rate>
                                            <timebase>30</timebase>
                                            <ntsc>TRUE</ntsc>
                                        </rate>
                                        <width>720</width>
                                        <height>480</height>
                                        <anamorphic>FALSE</anamorphic>
                                        <pixelaspectratio>square</pixelaspectratio>
                                        <fielddominance>lower</fielddominance>
                                    </samplecharacteristics>
                                </video>
                                <audio>
                                    <samplecharacteristics>
                                        <depth>16</depth>
                                        <samplerate>2</samplerate>
                                    </samplecharacteristics>
                                    <channelcount>48000</channelcount>
                                </audio>
                            </media>
                        </file>
                        <filter>
                            <effect>
                                <name>Opacity</name>
                                <effectid>opacity</effectid>
                                <effectcategory>motion</effectcategory>
                                <effecttype>motion</effecttype>
                                <mediatype>video</mediatype>
                                <pproBypass>false</pproBypass>
                                <parameter authoringApp="OpenShot">
                                    <parameterid>opacity</parameterid>
                                    <name>opacity</name>
                                    <valuemin>0</valuemin>
                                    <valuemax>100</valuemax>
                                    <value>100</value>
                                    <keyframe>
                                        <when>1.0</when>
                                        <value>100.0</value>
                                    </keyframe>
                                </parameter>
                            </effect>
                        </filter>
                        <logginginfo>
                            <description/>
                            <scene/>
                            <shottake/>
                            <lognote/>
                            <good/>
                            <originalvideofilename/>
                            <originalaudiofilename/>
                        </logginginfo>
                        <colorinfo>
                            <lut/>
                            <lut1/>
                            <asc_sop/>
                            <asc_sat/>
                            <lut2/>
                        </colorinfo>
                        <labels>
                            <label2>Violet</label2>
                        </labels>
                    </clipitem>
                </track>
            </video>
            <audio>
                <numOutputChannels>2</numOutputChannels>
                <format>
                    <samplecharacteristics>
                        <depth>16</depth>
                        <samplerate>44100</samplerate>
                    </samplecharacteristics>
                </format>
                <outputs>
                    <group>
                        <index>1</index>
                        <numchannels>1</numchannels>
                        <downmix>0</downmix>
                        <channel>
                            <index>1</index>
                        </channel>
                    </group>
                    <group>
                        <index>2</index>
                        <numchannels>1</numchannels>
                        <downmix>0</downmix>
                        <channel>
                            <index>2</index>
                        </channel>
                    </group>
                </outputs>
                <track MZ.TrackTargeted="1" PannerCurrentValue="0.5" PannerIsInverted="true" PannerName="Balance" PannerStartKeyframe="-91445760000000000,0.5,0,0,0,0,0,0" TL.SQTrackAudioKeyframeStyle="0" TL.SQTrackExpanded="0" TL.SQTrackExpandedHeight="25" TL.SQTrackShy="0" currentExplodedTrackIndex="0" premiereTrackType="Stereo" totalExplodedTrackCount="2">
                    <enabled>TRUE</enabled>
                    <locked>FALSE</locked>
                    <outputchannelindex>1</outputchannelindex>
                    <clipitem id="A2ZIIOZCH9-audio" premiereChannelType="stereo">
                        <name>FileName.mp4</name>
                        <enabled>TRUE</enabled>
                        <duration>1558.400001525879</duration>
                        <rate>
                            <timebase>30</timebase>
                            <ntsc>FALSE</ntsc>
                        </rate>
                        <start>2214.0</start>
                        <end>3772.400001525879</end>
                        <in>0.0</in>
                        <out>1558.400001525879</out>
                        <pproTicksIn>0.0</pproTicksIn>
                        <pproTicksOut>395858534787597.6</pproTicksOut>
                        <file id="SG00IW75Y5"/>
                        <sourcetrack>
                            <mediatype>audio</mediatype>
                            <trackindex>1</trackindex>
                        </sourcetrack>
                        <filter>
                            <effect>
                                <name>Audio Levels</name>
                                <effectid>audiolevels</effectid>
                                <effectcategory>audiolevels</effectcategory>
                                <effecttype>audiolevels</effecttype>
                                <mediatype>audio</mediatype>
                                <pproBypass>false</pproBypass>
                                <parameter authoringApp="OpenShot">
                                    <parameterid>level</parameterid>
                                    <name>Level</name>
                                    <valuemin>0</valuemin>
                                    <valuemax>3.98109</valuemax>
                                    <value>1.0</value>
                                    <keyframe>
                                        <when>1.0</when>
                                        <value>1.0</value>
                                    </keyframe>
                                </parameter>
                            </effect>
                        </filter>
                        <logginginfo>
                            <description/>
                            <scene/>
                            <shottake/>
                            <lognote/>
                            <good/>
                            <originalvideofilename/>
                            <originalaudiofilename/>
                        </logginginfo>
                        <colorinfo>
                            <lut/>
                            <lut1/>
                            <asc_sop/>
                            <asc_sat/>
                            <lut2/>
                        </colorinfo>
                    </clipitem>
                </track>
                <track MZ.TrackTargeted="1" PannerCurrentValue="0.5" PannerIsInverted="true" PannerName="Balance" PannerStartKeyframe="-91445760000000000,0.5,0,0,0,0,0,0" TL.SQTrackAudioKeyframeStyle="0" TL.SQTrackExpanded="0" TL.SQTrackExpandedHeight="25" TL.SQTrackShy="0" currentExplodedTrackIndex="0" premiereTrackType="Stereo" totalExplodedTrackCount="2">
                    <enabled>TRUE</enabled>
                    <locked>FALSE</locked>
                    <outputchannelindex>2</outputchannelindex>
                    <clipitem id="SQ3995OKWV-audio" premiereChannelType="stereo">
                        <name>FileName.mp4</name>
                        <enabled>TRUE</enabled>
                        <duration>603.9999999999999</duration>
                        <rate>
                            <timebase>30</timebase>
                            <ntsc>FALSE</ntsc>
                        </rate>
                        <start>1868.0</start>
                        <end>2471.9999999999995</end>
                        <in>444.0</in>
                        <out>1048.0</out>
                        <pproTicksIn>112783104000000.0</pproTicksIn>
                        <pproTicksOut>266208768000000.0</pproTicksOut>
                        <file id="SG00IW75Y5"/>
                        <sourcetrack>
                            <mediatype>audio</mediatype>
                            <trackindex>2</trackindex>
                        </sourcetrack>
                        <filter>
                            <effect>
                                <name>Audio Levels</name>
                                <effectid>audiolevels</effectid>
                                <effectcategory>audiolevels</effectcategory>
                                <effecttype>audiolevels</effecttype>
                                <mediatype>audio</mediatype>
                                <pproBypass>false</pproBypass>
                                <parameter authoringApp="OpenShot">
                                    <parameterid>level</parameterid>
                                    <name>Level</name>
                                    <valuemin>0</valuemin>
                                    <valuemax>3.98109</valuemax>
                                    <value>1.0</value>
                                    <keyframe>
                                        <when>1.0</when>
                                        <value>1.0</value>
                                    </keyframe>
                                </parameter>
                            </effect>
                        </filter>
                        <logginginfo>
                            <description/>
                            <scene/>
                            <shottake/>
                            <lognote/>
                            <good/>
                            <originalvideofilename/>
                            <originalaudiofilename/>
                        </logginginfo>
                        <colorinfo>
                            <lut/>
                            <lut1/>
                            <asc_sop/>
                            <asc_sat/>
                            <lut2/>
                        </colorinfo>
                    </clipitem>
                    <clipitem id="N2D64Q4B9F-audio" premiereChannelType="stereo">
                        <name>The Epic.wav</name>
                        <enabled>TRUE</enabled>
                        <duration>4200.46875</duration>
                        <rate>
                            <timebase>30</timebase>
                            <ntsc>FALSE</ntsc>
                        </rate>
                        <start>3276.0</start>
                        <end>7476.46875</end>
                        <in>0.0</in>
                        <out>4200.46875</out>
                        <pproTicksIn>0.0</pproTicksIn>
                        <pproTicksOut>1066986270000000.0</pproTicksOut>
                        <file id="PTWYH9FRCD">
                            <name>The Epic.wav</name>
                            <pathurl>The Epic.wav</pathurl>
                            <rate>
                                <timebase>30</timebase>
                                <ntsc>TRUE</ntsc>
                            </rate>
                            <duration>4196</duration>
                            <timecode>
                                <rate>
                                    <timebase>30</timebase>
                                    <ntsc>TRUE</ntsc>
                                </rate>
                                <string>00;00;00;00</string>
                                <frame>0</frame>
                                <displayformat>DF</displayformat>
                            </timecode>
                            <media>
                                <audio>
                                    <samplecharacteristics>
                                        <depth>16</depth>
                                        <samplerate>44100</samplerate>
                                    </samplecharacteristics>
                                    <channelcount>2</channelcount>
                                </audio>
                            </media>
                        </file>
                        <sourcetrack>
                            <mediatype>audio</mediatype>
                            <trackindex>2</trackindex>
                        </sourcetrack>
                        <filter>
                            <effect>
                                <name>Audio Levels</name>
                                <effectid>audiolevels</effectid>
                                <effectcategory>audiolevels</effectcategory>
                                <effecttype>audiolevels</effecttype>
                                <mediatype>audio</mediatype>
                                <pproBypass>false</pproBypass>
                                <parameter authoringApp="OpenShot">
                                    <parameterid>level</parameterid>
                                    <name>Level</name>
                                    <valuemin>0</valuemin>
                                    <valuemax>3.98109</valuemax>
                                    <value>1.0</value>
                                    <keyframe>
                                        <when>1.0</when>
                                        <value>0.0</value>
                                    </keyframe>
                                    <keyframe>
                                        <when>91.0</when>
                                        <value>1.0</value>
                                    </keyframe>
                                    <keyframe>
                                        <when>4111.0</when>
                                        <value>1.0</value>
                                    </keyframe>
                                    <keyframe>
                                        <when>4201.0</when>
                                        <value>0.0</value>
                                    </keyframe>
                                </parameter>
                            </effect>
                        </filter>
                        <logginginfo>
                            <description/>
                            <scene/>
                            <shottake/>
                            <lognote/>
                            <good/>
                            <originalvideofilename/>
                            <originalaudiofilename/>
                        </logginginfo>
                        <colorinfo>
                            <lut/>
                            <lut1/>
                            <asc_sop/>
                            <asc_sat/>
                            <lut2/>
                        </colorinfo>
                    </clipitem>
                </track>
            </audio>
        </media>
        <timecode>
            <rate>
                <timebase>30.0</timebase>
                <ntsc>TRUE</ntsc>
            </rate>
            <string>00;00;00;01</string>
            <frame>1</frame>
            <displayformat>DF</displayformat>
        </timecode>
    </sequence>
</xmeml>


Developers

If you are a programmer (or want to become a programmer), and are interested in developing new features, fixing bugs, or improving the user interface for OpenShot, the following sections will explain how to get started and get involved!

The Big Picture

OpenShot Video Editor has 3 main components, a Python & PyQt user interface (openshot-qt), a C++ audio library (libopenshot-audio) and a C++ video library (libopenshot). If you are not familiar with Python, PyQt, or C++, those would be great topics to research and learn more about at this point.

However, many bugs and new features can be added with only Python knowledge, since the C++ components are not involved in the user interface at all. Python is an amazing language, and is super fun to learn, and is the only prerequisite skill needed to become an OpenShot developer!

WARNING:

The instructions that follow are for Ubuntu Linux, which is the easiest environment to configure for OpenShot development. If you are using another OS, I suggest running a virtual machine with Ubuntu LTS before continuing any further.

If you must use a Windows or Mac system for development, start by referring to the build notes in the libopenshot wiki. Building the library with all of its dependencies is the most challenging part of the process.

  • Windows Build Instructions
  • Mac Build Instructions



Getting the Latest Source Code

Before we can fix any bugs or add any features, we need to get the source code onto your computer.

Use git to clone our 3 repositories:


Configuring your Development Environment

In order to actually compile or run OpenShot, we need to install some dependencies on your system. The easiest way to accomplish this is with our Daily PPA. A PPA is an unofficial Ubuntu repository, which has our software packages available to download and install.

sudo add-apt-repository ppa:openshot.developers/libopenshot-daily
sudo apt-get update
sudo apt-get install openshot-qt \
                     cmake \
                     libx11-dev \
                     libasound2-dev \
                     libavcodec-dev \
                     libavdevice-dev \
                     libavfilter-dev \
                     libavformat-dev \
                     libavresample-dev \
                     libavutil-dev \
                     libfdk-aac-dev \
                     libfreetype6-dev \
                     libjsoncpp-dev \
                     libmagick++-dev \
                     libopenshot-audio-dev \
                     libswscale-dev \
                     libunittest++-dev \
                     libxcursor-dev \
                     libxinerama-dev \
                     libxrandr-dev \
                     libzmq3-dev \
                     pkg-config \
                     python3-dev \
                     qtbase5-dev \
                     qtmultimedia5-dev \
                     swig


At this point, you should have all 3 OpenShot components source code cloned into local folders, the OpenShot daily PPA installed, and all of the required development and runtime dependencies installed. This is a great start, and we are now ready to start compiling some code!

libopenshot-audio (Build Instructions)

This library is required for audio playback and audio effects. It is based on the JUCE audio framework. Here are the commands to build it:

cd libopenshot-audio
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=dist ..
make
make install


Essentially, we are switching to the libopenshot-audio/build folder, then running cmake .. on the parent folder. This finds dependencies and creates all the needed Makefiles used to compile this library. Then make uses those Makefiles to compile this library, and make install installs them in the location we specified. If CMAKE_INSTALL_PREFIX isn’t set, the files will install to /usr/local/ (by default) and make install will require administrative privileges to run.

libopenshot (Build Instructions)

This library is required for video decoding, encoding, animation, and just about everything else. It does all the heavy lifting of video editing and video playback. Here are the commands to build it:

cd libopenshot
mkdir build
cd build
cmake -DLIBOPENSHOT_AUDIO_DIR=../../libopenshot-audio/build/dist ..
make


Essentially, we are switching to the libopenshot/build folder, then running cmake .. on the parent folder. This finds dependencies and creates all the needed Makefiles used to compile this library. Then make uses those Makefiles to compile this library. Because we provided the location of our compiled libopenshot-audio installation, that version of the library will be used instead of the system version (if any).

We don’t install our libopenshot after building, because we don’t need to. For testing purposes, we can tell OpenShot to use libopenshot right from our build directory.

openshot-qt (Launch Instructions)

This is our main PyQt Python application. Because it is written in Python, it does not require any compiling to run. To launch OpenShot from the source code with our newly-built libopenshot-audio and libopenshot libraries, use the following commands:

cd openshot-qt
PYTHONPATH=../libopenshot/build/src/bindings/python
python3 src/launch.py


This should launch the OpenShot user interface. Any changes you have made to the source code files (*.py Python files, *.ui PyQt UI files, etc…) will be included. This requires the libopenshot-audio and libopenshot libraries, and if anything went wrong with the steps above, OpenShot will likely not launch.

If OpenShot launches at this point, congratulations! You now have a working local version of OpenShot, which is running off your local source code. Try making some changes to the source code and re-launch OpenShot… you should now see your changes!

GitHub Issues

Now that you have successfully compiled and launched OpenShot Video Editor, be sure to check out our list of bug reports on GitHub: OpenShot Issues. Also, feel free to send me an email: jonathan@openshot.org and introduce yourself! I’m always here to help if you have any questions.

Share your Changes

Once you have fixed a bug or added an amazing new feature, be sure to share it with the OpenShot team. Ideally, we can merge this into our main source code branch. The easiest way to share your changes is by creating a fork of our repo, pushing your changes back to GitHub, and creating a Pull Request. A Pull Request lets the OpenShot team know you have changes ready to be merged. Then we can review things, give feedback, and hopefully merge your changes into the main branch.

Contributing

Did you find a bug?

  • Please check if this bug was already reported by searching on GitHub under Issues.
  • If you’re unable to find an open issue addressing the problem, open a new one. Be sure to include a title and clear description, as much relevant information as possible, and the steps to reproduce the crash or issue.
  • Please attach log files if you are reporting a crash. Otherwise, we will not be able to determine the cause of the crash.

Please download our latest daily installer:

1.
openshot.org/download - click the ‘DAILY BUILDS’ button, then grab the latest build from the list. (Use the buttons below to download installers for a different Operating System.)
2.
Then enable ‘Debug Mode (Verbose)’ in the Preferences
3.
Quit OpenShot and delete both log files:
Windows: OpenShot stores its logs in your user profile directory (%USERPROFILE%, e.g. C:\Users\username\)
  • %USERPROFILE%/.openshot_qt/openshot-qt.log
  • %USERPROFILE%/.openshot_qt/libopenshot.log

Linux/MacOS: OpenShot stores its logs in your home directory ($HOME, e.g. /home/username/)
  • $HOME/.openshot_qt/openshot-qt.log
  • $HOME/.openshot_qt/libopenshot.log


4.
Re-launch OpenShot and trigger the crash as quickly as possible (to keep the log files small)
5.
Attach both log files

Did you write a patch that fixes a bug?

  • Open a new GitHub pull request with the patch.
  • Ensure the PR description clearly describes the problem and solution. Include the relevant issue number if applicable.
  • Before submitting, please ensure your PR passes all build / compilation / and unit tests.

OpenShot Video Editor is a volunteer effort, and a labor of love. Please be patient with any issues you find, and feel free to get involved and help us fix them!

Thanks!

OpenShot Team

Learn More

We are working hard to expand this user guide, but if you are stuck and don’t know where to turn, please submit a question or bug report here: Issues.

AUTHOR

Jonathan Thomas

COPYRIGHT

2008-2020 OpenShot Studios, LLC
June 20, 2020 2.5