1 #ifndef OPENSHOT_H 2 #define OPENSHOT_H 3 4 /** 5 * @file 6 * @brief This header includes all commonly used headers for libopenshot, for ease-of-use. 7 * @author Jonathan Thomas <jonathan@openshot.org> 8 * 9 * @mainpage OpenShot Video Editing Library C++ API 10 * 11 * Welcome to the OpenShot Video Editing Library (libopenshot) C++ API. This library was developed to 12 * make high-quality video editing and animation solutions freely available to the world. With a focus 13 * on stability, performance, and ease-of-use, we believe libopenshot is the best cross-platform, 14 * open-source video editing library in the world. This library powers 15 * <a href="http://www.openshot.org">OpenShot Video Editor</a> (version 2.0+), the highest rated video 16 * editor available on Linux (and soon Windows & Mac). It could also <b>power</b> your next video editing project! 17 * 18 * Our documentation is quite extensive, including descriptions and examples of almost every class, method, 19 * and parameter. Getting started is easy. 20 * 21 * All you need is a <b>single</b> include to get started: 22 * @code 23 * #include "OpenShot.h" 24 * @endcode 25 * 26 * ### The Basics ### 27 * To understand libopenshot, we must first learn about the basic building blocks:. 28 * - <b>Readers</b> - A reader is used to read a video, audio, image file, or stream and return openshot::Frame objects. 29 * - A few common readers are openshot::FFmpegReader, openshot::TextReader, openshot::ImageReader, openshot::ChunkReader, and openshot::FrameMapper 30 * 31 * - <b>Writers</b> - A writer consumes openshot::Frame objects, and is used to write / create a video, audio, image file, or stream. 32 * - A few common writers are openshot::FFmpegWriter, openshot::ImageWriter, and openshot::ChunkWriter 33 * 34 * - <b>Timeline</b> - A timeline allows many openshot::Clip objects to be trimmed, arranged, and layered together. 35 * - The openshot::Timeline is a special kind of reader, built from openshot::Clip objects (each clip containing a reader) 36 * 37 * - <b> Keyframe</b> - A Keyframe is used to change values of properties over time on the timeline (curve-based animation). 38 * - The openshot::Keyframe, openshot::Point, and openshot::Coordinate are used to animate properties on the timeline. 39 * 40 * ### Example Code ### 41 * Now that you understand the basic building blocks of libopenshot, lets take a look at a simple example, 42 * where we use a reader to access frames of a video file. 43 44 * @code 45 * // Create a reader for a video 46 * FFmpegReader r("MyAwesomeVideo.webm"); 47 * r.Open(); // Open the reader 48 * 49 * // Get frame number 1 from the video 50 * std::shared_ptr<Frame> f = r.GetFrame(1); 51 * 52 * // Now that we have an openshot::Frame object, lets have some fun! 53 * f->Display(); // Display the frame on the screen 54 * f->DisplayWaveform(); // Display the audio waveform as an image 55 * f->Play(); // Play the audio through your speaker 56 * 57 * // Close the reader 58 * r.Close(); 59 * @endcode 60 * 61 * ### A Closer Look at the Timeline ### 62 * The <b>following graphic</b> displays a timeline, and how clips can be arranged, scaled, and layered together. It 63 * also demonstrates how the viewport can be scaled smaller than the canvas, which can be used to zoom and pan around the 64 * canvas (i.e. pan & scan). 65 * \image html /doc/images/Timeline_Layers.png 66 * 67 * ### Build Instructions ### 68 * Build instructions are available for all three major Operating Systems: 69 * * [Building libopenshot for Windows](doc/INSTALL-WINDOWS.md) 70 * * [Building libopenshot for MacOS](doc/INSTALL-MAC.md) 71 * * [Building libopenshot for Linux](doc/INSTALL-LINUX.md) 72 * 73 * ### Want to Learn More? ### 74 * To continue learning about libopenshot, take a look at the <a href="annotated.html">full list of classes</a> available. 75 * 76 * \anchor License 77 * ### License & Copyright ### 78 * Copyright (c) 2008-2021 OpenShot Studios, LLC 79 * <http://www.openshotstudios.com/>. This file is part of 80 * OpenShot Library (libopenshot), an open-source project dedicated to 81 * delivering high quality video editing and animation solutions to the 82 * world. For more information visit <http://www.openshot.org/>. 83 * 84 * OpenShot Library (libopenshot) is free software: you can redistribute it 85 * and/or modify it under the terms of the GNU Lesser General Public License 86 * as published by the Free Software Foundation, either version 3 of the 87 * License, or (at your option) any later version. 88 * 89 * OpenShot Library (libopenshot) is distributed in the hope that it will be 90 * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of 91 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 92 * GNU Lesser General Public License for more details. 93 * 94 * You should have received a copy of the GNU Lesser General Public License 95 * along with OpenShot Library. If not, see <http://www.gnu.org/licenses/>. 96 */ 97 98 // Include the version number of OpenShot Library 99 #include "OpenShotVersion.h" 100 101 // Include all other classes 102 #include "AudioBufferSource.h" 103 #include "AudioReaderSource.h" 104 #include "AudioResampler.h" 105 #include "CacheDisk.h" 106 #include "CacheMemory.h" 107 #include "ChunkReader.h" 108 #include "ChunkWriter.h" 109 #include "Clip.h" 110 #include "ClipBase.h" 111 #include "Coordinate.h" 112 #ifdef USE_BLACKMAGIC 113 #include "DecklinkReader.h" 114 #include "DecklinkWriter.h" 115 #endif 116 #include "DummyReader.h" 117 #include "EffectBase.h" 118 #include "Effects.h" 119 #include "EffectInfo.h" 120 #include "Enums.h" 121 #include "Exceptions.h" 122 #include "ReaderBase.h" 123 #include "WriterBase.h" 124 #include "FFmpegReader.h" 125 #include "FFmpegWriter.h" 126 #include "Fraction.h" 127 #include "Frame.h" 128 #include "FrameMapper.h" 129 #ifdef USE_IMAGEMAGICK 130 #include "ImageReader.h" 131 #include "ImageWriter.h" 132 #include "TextReader.h" 133 #endif 134 #include "KeyFrame.h" 135 #include "PlayerBase.h" 136 #include "Point.h" 137 #include "Profiles.h" 138 #include "QtHtmlReader.h" 139 #include "QtImageReader.h" 140 #include "QtTextReader.h" 141 #include "TimelineBase.h" 142 #include "Timeline.h" 143 #include "Settings.h" 144 #ifdef USE_OPENCV 145 #include "ClipProcessingJobs.h" 146 #include "CVStabilization.h" 147 #include "CVTracker.h" 148 #include "CVObjectDetection.h" 149 #include "TrackedObjectBBox.h" 150 #endif 151 152 #endif 153