Shotcut - a free, open source, cross-platform video editor

build-shotcut-linux build-shotcut-macos build-shotcut-windows

Shotcut - a free, open source, cross-platform video editor

screenshot

Install

Binaries are regularly built and are available at https://www.shotcut.org, on the Download page.

Contributors

Dependencies

Shotcut's direct (linked or hard runtime) dependencies are:

  • MLT: multimedia authoring framework
  • Qt 5: application and UI framework
  • FFmpeg: multimedia format and codec libraries
  • Frei0r: video plugins
  • SDL: cross-platform audio playback

See https://shotcut.org/credits/ for a more complete list including indirect and bundled dependencies.

Licence

GPLv3. See COPYING.

How to build

Warning: building shotcut should only be reserved to beta testers or contributors who know what they are doing.

Qt Creator

The fastest way to build and try Shotcut development version is probably using Qt Creator.

To make this easier, we provide SDKs on the web site with each release that includes Shotcut and all of its dependencies. These SDK pages also include setup instructions and tips on how to compile MLT and other dependencies after updating.

From command line

First, check dependencies are satisfied and various paths correctly set to find different libraries and include files (Qt 5, MLT, frei0r and so forth).

Build Makefile:

qmake PREFIX=/usr/local/

Compile shotcut:

make -j8
make install

If you do not make install Shotcut will fail when you run it because it cannot locate its QML files. If you want to run shotcut from a build folder without installing you can make a symbolic link to the qml folder. It depends on where you build folder is, but assuming it is a sibling of the source tree folder:

cd build
mkdir -p share/shotcut 
cd share/shotcut
ln -s ../../../shotcut/src/qml

Translation

If you want to translate Shotcut to another language, please use Transifex.

Owner
MLT Framework
Multimedia Processing Framework
MLT Framework
Comments
  • Crackling audio during loud parts (race car)

    Crackling audio during loud parts (race car)

    Hello,

    I am using v16.06.08 on OSX 10.9.5 to edit some motorsports footage, that I shot recently. Sadly, in the encoded video (H.265, MP4, AC3, constant 256 kbps, 48 kHz) the audio gets crackling when a loud car passes by. It sounds a bit like you would crinkle plastic foil. It is not loud, but still disturbing. The source audio (2 ch., AC3, 256 kbps, 48 kHz) is fine. So it's not my microphone that got to it's limits here. The source MTS-files are played correctly by Quicktime as well as MPlayer and VLC. Since the last two are likely to use FFMPEG codecs, just like Shotcut does, it is maybe not the codec that is faulty. Actually, the audio is already crackling while just watching the single movies in Shotcut. I have already tried different combinations of H.264, H.265, AC3 and AAC to work out, in which case the audio could be fine. And I've gone back to v16.02 (before FFMPEG was upgraded to v3.0). Nothing helped.

    I already had that same problem earlier in the year in a rallye video, where I guessed, that it came from my feet squeezing the grass under them. I also know (!), that everything worked fine last year with previous Shotcut versions (straight piped M1 Procar is evidence enough).

    I hope, that you have got all the information you need. It would be nice to see this fixed.

    Thanks a lot,

    Flo

  • Error stabilizing the video int the version 19.06

    Error stabilizing the video int the version 19.06

    Operating System: Archlinux 64amd

    Software Version: Shotcut 19.06

    When exporting a project with the stabilization filter, the video shows small points and white lines. Attached some screenshots. This has been happening since version 19.02. vlcsnap-00003 vlcsnap-00002

  • debian packages

    debian packages

    It would be great to install shotcut through debian packages, either :

    • simply through a .deb file
    • providing a third party debian source
    • through an ubuntu PPA
    • by proposing shotcut to be distributed by debian and/or ubuntu
  • flatpak: Shotcut is now available on Flathub

    flatpak: Shotcut is now available on Flathub

    I want to inform you, that Shotcut is now available on Flathub: https://flathub.org/apps/details/org.shotcut.Shotcut

    build manifest: https://github.com/flathub/org.shotcut.Shotcut

    You will need at least flatpak version 0.11.4 to have it work correctly.

  • stabilize filter ui: Move the 'Analyze' button up under the 'Analyze …

    stabilize filter ui: Move the 'Analyze' button up under the 'Analyze …

    …Options' to make it clearer that this button is only related to the analyze properties

    Imo this makes it clearer to the user that the analyze goes with the analyze settings and that the other settings don't require you to press the analyze button again.

    It would be even neater if we could auto-analyze when the user enabled the filter, but that would require some hysteresis and would have to handle the case where the user didn't wait for the analysis to complete etc.

    Another idea is tracking what settings were used to indicate to the user when analyze had to be run again. That might be a simpler change that better fits with how the current filter uis are designed.

  • BUG: Japanese text error

    BUG: Japanese text error

    When use dynamic text filter, when I input such as "にほん", or other odd number of Japanese text, and split the video track, the dynamic text filter in new one clip does not show correctly, it shows

    20151217182245

    same error ocurs when drag the video file to timeline which use odd number of Japanese text, such as にほん.mp4 に3ほん.MP4 にほん2.MP4 And timeline is black.

  • Video Export Failed (Windows 10 64bit; Shotcut 32bit 18.05.08).

    Video Export Failed (Windows 10 64bit; Shotcut 32bit 18.05.08).

    Hello, I just installed the latest version of the Shotcut. And I just do some simple video editing and it's failed. Here is the xml and the log.

    <?xml version='1.0' encoding='utf-8'?>
    <mlt version="6.7.0" producer="main bin" LC_NUMERIC="en_US" title="Shotcut version 18.05.08" root="C:\Program Files\Shotcut">
      <profile width="1920" display_aspect_num="16" height="1080" colorspace="709" progressive="1" frame_rate_num="25" description="HD 1080p 25 fps" sample_aspect_den="1" display_aspect_den="9" sample_aspect_num="1" frame_rate_den="1"/>
      <consumer crf="21" movflags="+faststart" f="mp4" g="125" rescale="bilinear" progressive="1" channels="2" aspect="1.77778" bf="3" preset="fast" ab="384k" real_time="-4" deinterlace_method="yadif" r="25" vcodec="libx264" threads="0" mlt_service="avformat" target="D:/rrr.mp4" top_field_first="2" height="1080" ar="48000" width="1920" acodec="aac"/>
      <producer out="00:00:29.960" in="00:00:00.000" title="Anonymous Submission" id="producer0">
        <property name="length">00:00:30.000</property>
        <property name="eof">pause</property>
        <property name="resource">D:/后会无期.HD1024高清国语中字.mp4</property>
        <property name="audio_index">1</property>
        <property name="video_index">0</property>
        <property name="mute_on_pause">0</property>
        <property name="mlt_service">avformat-novalidate</property>
        <property name="seekable">1</property>
        <property name="aspect_ratio">1</property>
        <property name="shotcut:hash">8abfdb1910586f3d1dc055fb141334e2</property>
        <property name="ignore_points">0</property>
        <property name="shotcut:caption">后会无期.HD1024高清国语中字.mp4</property>
        <property name="shotcut:detail">D:/后会无期.HD1024高清国语中字.mp4</property>
        <property name="shotcut:comment"/>
        <property name="shotcut:skipConvert">1</property>
        <property name="global_feed">1</property>
        <property name="xml">was here</property>
      </producer>
      <producer out="03:59:59.960" in="00:00:00.000" title="Anonymous Submission" id="producer1">
        <property name="length">04:00:00.000</property>
        <property name="eof">pause</property>
        <property name="resource">D:/FFmpegKit/TestPic/14182277_xl.jpg</property>
        <property name="ttl">1</property>
        <property name="aspect_ratio">1</property>
        <property name="progressive">1</property>
        <property name="seekable">1</property>
        <property name="mlt_service">qimage</property>
        <property name="shotcut:hash">f4a264a5b72e41eb19eb31d59daeb87c</property>
        <property name="ignore_points">0</property>
        <property name="global_feed">1</property>
        <property name="xml">was here</property>
      </producer>
      <producer out="03:59:59.960" in="00:00:00.000" title="Anonymous Submission" id="producer2">
        <property name="length">04:00:00.000</property>
        <property name="eof">pause</property>
        <property name="resource">D:/FFmpegKit/TestPic/4a4768dfed35099ebde9084cf7ace2c6.jpg</property>
        <property name="ttl">1</property>
        <property name="aspect_ratio">1</property>
        <property name="progressive">1</property>
        <property name="seekable">1</property>
        <property name="loop">1</property>
        <property name="mlt_service">pixbuf</property>
        <property name="shotcut:hash">e43884519d360a789cd0bc583ad47104</property>
        <property name="ignore_points">0</property>
        <property name="global_feed">1</property>
        <property name="xml">was here</property>
      </producer>
      <playlist title="Shotcut version 18.05.08" id="main bin" autoclose="1">
        <property name="shotcut:projectAudioChannels">2</property>
        <property name="xml_retain">1</property>
        <entry out="00:00:29.960" in="00:00:00.000" producer="producer0"/>
        <entry out="00:00:05.240" in="00:00:00.000" producer="producer1"/>
        <entry out="00:00:05.240" in="00:00:00.000" producer="producer2"/>
      </playlist>
      <producer out="00:00:12.960" in="00:00:00.000" id="black">
        <property name="length">00:00:13.000</property>
        <property name="eof">pause</property>
        <property name="resource">black</property>
        <property name="aspect_ratio">1</property>
        <property name="mlt_service">color</property>
        <property name="set.test_audio">0</property>
      </producer>
      <playlist id="background" autoclose="1">
        <entry out="00:00:12.960" in="00:00:00.000" producer="black"/>
      </playlist>
      <producer out="00:00:29.960" in="00:00:00.000" title="Anonymous Submission" id="producer3">
        <property name="length">00:00:30.000</property>
        <property name="eof">pause</property>
        <property name="resource">D:/后会无期.HD1024高清国语中字.mp4</property>
        <property name="audio_index">1</property>
        <property name="video_index">0</property>
        <property name="mute_on_pause">0</property>
        <property name="mlt_service">avformat-novalidate</property>
        <property name="seekable">1</property>
        <property name="aspect_ratio">1</property>
        <property name="shotcut:hash">8abfdb1910586f3d1dc055fb141334e2</property>
        <property name="ignore_points">0</property>
        <property name="shotcut:caption">后会无期.HD1024高清国语中字.mp4</property>
        <property name="shotcut:detail">D:/后会无期.HD1024高清国语中字.mp4</property>
        <property name="shotcut:comment"/>
        <property name="shotcut:skipConvert">1</property>
        <property name="global_feed">1</property>
        <property name="xml">was here</property>
        <filter out="00:00:29.960" id="filter0">
          <property name="background">colour:0</property>
          <property name="mlt_service">affine</property>
          <property name="shotcut:filter">affineSizePosition</property>
          <property name="transition.fill">1</property>
          <property name="transition.distort">0</property>
          <property name="transition.rect">0 149 1920 756 1</property>
          <property name="transition.valign">middle</property>
          <property name="transition.halign">center</property>
          <property name="transition.threads">0</property>
        </filter>
      </producer>
      <playlist id="playlist0" autoclose="1">
        <property name="shotcut:video">1</property>
        <property name="shotcut:name">V1</property>
        <entry out="00:00:12.960" in="00:00:00.000" producer="producer3"/>
      </playlist>
      <producer out="00:00:05.240" in="00:00:00.000" title="Anonymous Submission" id="producer4">
        <property name="length">04:00:00.000</property>
        <property name="eof">pause</property>
        <property name="resource">D:/FFmpegKit/TestPic/4a4768dfed35099ebde9084cf7ace2c6.jpg</property>
        <property name="ttl">1</property>
        <property name="aspect_ratio">1</property>
        <property name="progressive">1</property>
        <property name="seekable">1</property>
        <property name="loop">1</property>
        <property name="mlt_service">pixbuf</property>
        <property name="shotcut:hash">e43884519d360a789cd0bc583ad47104</property>
        <property name="ignore_points">0</property>
        <property name="global_feed">1</property>
        <property name="xml">was here</property>
      </producer>
      <playlist id="playlist1" autoclose="1">
        <property name="shotcut:video">1</property>
        <property name="shotcut:name">V2</property>
        <blank length="00:00:02.840"/>
        <entry out="00:00:05.240" in="00:00:00.000" producer="producer4"/>
      </playlist>
      <tractor out="00:00:12.960" global_feed="1" in="00:00:00.000" title="Shotcut version 18.05.08" id="tractor0">
        <property name="shotcut">1</property>
        <property name="shotcut:projectAudioChannels">2</property>
        <track producer="background"/>
        <track producer="playlist0"/>
        <track producer="playlist1"/>
        <transition id="transition0">
          <property name="a_track">0</property>
          <property name="b_track">1</property>
          <property name="mlt_service">mix</property>
          <property name="always_active">1</property>
          <property name="sum">1</property>
        </transition>
        <transition id="transition1">
          <property name="a_track">0</property>
          <property name="b_track">1</property>
          <property name="version">0.9</property>
          <property name="mlt_service">frei0r.cairoblend</property>
          <property name="disable">1</property>
        </transition>
        <transition id="transition2">
          <property name="a_track">0</property>
          <property name="b_track">2</property>
          <property name="mlt_service">mix</property>
          <property name="always_active">1</property>
          <property name="sum">1</property>
        </transition>
        <transition id="transition3">
          <property name="a_track">1</property>
          <property name="b_track">2</property>
          <property name="version">0.9</property>
          <property name="mlt_service">frei0r.cairoblend</property>
          <property name="disable">0</property>
        </transition>
      </tractor>
    </mlt>
    
    

    ` [libx264 @ 08ad60e0] using SAR=1/1 [libx264 @ 08ad60e0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 [libx264 @ 08ad60e0] profile High, level 4.0 [libx264 @ 08ad60e0] 264 - core 152 r2854 e9a5903 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=2 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=6 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=125 keyint_min=12 scenecut=40 intra_refresh=0 rc_lookahead=30 rc=crf mbtree=1 crf=21.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 [h264 @ 0e9a66e0] Reinit context to 1024x416, pix_fmt: yuv420p [h264 @ 0e9a7980] Reinit context to 1024x416, pix_fmt: yuv420p [h264 @ 245b8440] Reinit context to 1024x416, pix_fmt: yuv420p [producer avformat] audio: total_streams 1 max_stream 1 total_channels 2 max_channels 2 [producer avformat-novalidate] D:/后会无期.HD1024高清国语中字.mp4 checking VFR: pkt.duration 1000 [h264 @ 0e9d9080] Reinit context to 1024x416, pix_fmt: yuv420p [h264 @ 0e9d9080] Reinit context to 1024x416, pix_fmt: yuv420p [mp4 @ 08c434e0] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead. [mp4 @ 08c434e0] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead. [h264 @ 0e9d9080] Reinit context to 1024x416, pix_fmt: yuv420p [h264 @ 0e9d9080] Reinit context to 1024x416, pix_fmt: yuv420p [h264 @ 0e9d9080] Reinit context to 1024x416, pix_fmt: yuv420p Current Frame: 99, percentage: 30 Current Frame: 100, percentage: 30 Current Frame: 101, percentage: 31 [h264 @ 0e9d9080] Reinit context to 1024x416, pix_fmt: yuv420p Current Frame: 102, percentage: 31 Current Frame: 104, percentage: 32 Current Frame: 105, percentage: 32 Current Frame: 106, percentage: 32 Current Frame: 107, percentage: 32 Current Frame: 108, percentage: 33 Current Frame: 109, percentage: 33 Current Frame: 110, percentage: 33 Current Frame: 112, percentage: 34 Current Frame: 114, percentage: 35 Current Frame: 115, percentage: 35 Current Frame: 116, percentage: 35 [h264 @ 0e9d9080] Reinit context to 1024x416, pix_fmt: yuv420p Current Frame: 117, percentage: 36 Current Frame: 118, percentage: 36 Failed with exit code -1073741819

    `

    What's going wrong with this version of Shotcut? Cause I have done the same operation on the Shotcut(18.03.06) and everything goes well.

  • Keyboard focus gets stuck sometimes

    Keyboard focus gets stuck sometimes

    One way to reproduce:

    • Create a video or audio track
    • Type something into trackhead text field
    • Click once on toolbar (or any other qwidget-based component)
    • Click in the text field again

    The text field will not show the caret, and you cannot type anything into the field. Clicking on another qml-based embedded component (for example the filter menu) then clicking back is a workaround for restoring the focus.

    I have reproduced this behavior outside shotcut in a minimal example with a qwidget and qquickview, using createWindowContainer. I then wrote it into a QTest testcase:

    #include <QWidget>
    #include <QDebug>
    #include <QTest>
    
    class Bug : public QObject
    {
        Q_OBJECT
    private slots:
        void testDoubleWindowActivation();
    };
    
    void Bug::testDoubleWindowActivation()
    {
        QWindow * view = new QWindow;
    
        QWidget w;
        QWidget * container = QWidget::createWindowContainer(view, &w);
        w.show();
    
        QTest::qWait(100);
        qDebug() << qApp->focusObject();
        QCOMPARE(qApp->focusObject(), &w);
    
        view->requestActivate();
        QTest::qWait(100);
        qDebug() << qApp->focusObject();
        QCOMPARE(qApp->focusObject(), view);
    
        w.setFocus();
        QTest::qWait(100);
        qDebug() << qApp->focusObject();
        QCOMPARE(qApp->focusObject(), &w);
    
        view->requestActivate();
        QTest::qWait(100);
        qDebug() << qApp->focusObject();
        //the following check fails because focusObject was never set back to the qquickview
        QCOMPARE(qApp->focusObject(), view);
    }
    
    QTEST_MAIN(Bug)
    #include "main.moc"
    

    Observing focus events inside qt, I see that at least all the way up to the QWindow+wm-event layer there is no trace of focus events coming in when clicking on the qml component, so I don't see myself fixing this easily without help. Reading bug reports and googling around, I get the feeling that QQuickWidget is regarded as a more robust way of embedding qquickviews. I modified my testcase to use QQuickWidget, and now the focus actually behaved as expected.

    I'm looking into having shotcut using qquickwidgets instead of createWindowContainer for embedded qml components.

  • qmelt.exe hangs forever

    qmelt.exe hangs forever

    I am getting an issue where when I am rendering a video, qmelt.exe will hang with 0% CPU usage until it is force quit. It does not produce an error It does not say "Job Failed" in the main shotcut window It just stops at about 60% seemingly forever (I force killed the application after 10 minutes of 0% CPU usage)

    The project files can be found here (I included all of them. Its a big download) *If any are missing, please let me know their filenames so I can add them to the archive Link The main project file is named "nightfall.mlt"

    I believe that it is an issue with the Audio Spectrum Visualisation filter.

    I was able to produce this error on a machine with the following specs i7 6500U 2 x 4 GB of DDR4 RAM 256GB SSD + 1TB HDD Windows 10 Home Version 1709

  • 14.07 crashes when you try to launch it in windows 8

    14.07 crashes when you try to launch it in windows 8

    Great tool, i just downloaded and installed the new version on windows 8 on a brand new laptop and it crashes when you try to launch it. I have GPU 4.0+ . any ideas?

    Log file is below.

    [Info   ] <Application::Application(int&, char**)> Starting Shotcut version 14.07.01 
    [Info   ] <Application::Application(int&, char**)> Windows version 144 
    [Info   ] <Application::Application(int&, char**)> number of logical cores = 4 
    [Info   ] <Application::Application(int&, char**)> locale = QLocale(English, Default, UnitedStates) 
    [Info   ] <Application::Application(int&, char**)> install dir = "C:/Program Files (x86)/Shotcut" 
    [Debug  ] <static ShotcutSettings& ShotcutSettings::singleton()> language "en_US" 
    [Debug  ] <static ShotcutSettings& ShotcutSettings::singleton()> deinterlacer "onefield" 
    [Debug  ] <static ShotcutSettings& ShotcutSettings::singleton()> external monitor "" 
    [Debug  ] <static ShotcutSettings& ShotcutSettings::singleton()> GPU processing false 
    [Debug  ] <static ShotcutSettings& ShotcutSettings::singleton()> interpolation "nearest" 
    [Debug  ] <static ShotcutSettings& ShotcutSettings::singleton()> video mode "" 
    [Debug  ] <static ShotcutSettings& ShotcutSettings::singleton()> realtime true 
    [Debug  ] <static void MainWindow::changeTheme(const QString&)> begin 
    [Debug  ] <static void MainWindow::changeTheme(const QString&)> end 
    [Debug  ] <MainWindow::MainWindow()> begin 
    [Info   ] <GLTestWidget::GLTestWidget(QWidget*)> OpenGL context version 4 0 
    [Debug  ] <Database::Database(QObject*)> Database version is 1 
    [Warning] <static QMetaObject::Connection QObject::connectImpl(const QObject*, void**, const QObject*, void**, QtPrivate::QSlotObjectBase*, Qt::ConnectionType, const int*, const QMetaObject*)> QObject::connect: signal not found in QTimer
    [Debug  ] <Mlt::Controller::Controller()> begin 
    [Debug  ] <Mlt::Controller::Controller()> end 
    [Debug  ] <void MainWindow::setupSettingsMenu()> begin 
    [Debug  ] <void MainWindow::setupSettingsMenu()> end 
    [Debug  ] <void MainWindow::readPlayerSettings()> begin 
    [Debug  ] <void MainWindow::readPlayerSettings()> end 
    [Debug  ] <void MainWindow::configureVideoWidget()> begin 
    [Debug  ] <void MainWindow::configureVideoWidget()> end 
    [Debug  ] <RecentDock::RecentDock(QWidget*)> begin 
    [Debug  ] <RecentDock::RecentDock(QWidget*)> end 
    [Debug  ] <PlaylistDock::PlaylistDock(QWidget*)> begin 
    [Debug  ] <PlaylistDock::PlaylistDock(QWidget*)> end 
    [Debug  ] <TimelineDock::TimelineDock(QWidget*)> begin 
    [Warning] <static bool QObject::disconnectImpl(const QObject*, void**, const QObject*, void**, const QMetaObject*)> QObject::disconnect: signal not found in QDockWidget
    [Debug  ] <TimelineDock::TimelineDock(QWidget*)> end 
    [Debug  ] <FiltersDock::FiltersDock(QWidget*)> begin 
    [Debug  ] <FiltersDock::FiltersDock(QWidget*)> end 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "audio_balance" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "audio_channelcopy" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "audio_fadein" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "audio_fadeout" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "audio_gain" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "audio_loudness" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "audio_mono" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "audio_pan" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "audio_swapchannels" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "blur" "meta_boxblur.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "blur" "meta_movit.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "color" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "color" "meta_frei0r_coloradj.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "color" "meta_movit.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "crop" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "crop" "meta_movit.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "fadein_brightness" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "fadein_movit" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "fadeout_brightness" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "fadeout_movit" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "glow" "meta_frei0r.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "glow" "meta_movit.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "invert" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "mirror" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "mirror" "meta_movit.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "movit_diffusion" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "rotate" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "saturation" "meta_frei0r.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "saturation" "meta_movit.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "sepia" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "sharpen" "meta_frei0r.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "sharpen" "meta_movit.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "stabilize" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "vignette" "meta_movit.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "vignette" "meta_oldfilm.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "wave" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "webvfx" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "webvfx_circular_frame" "meta.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "white" "meta_frei0r.qml" 
    [Debug  ] <QActionList getFilters(FiltersDock*, Ui::FiltersDock*)> reading filter metadata "white" "meta_movit.qml" 
    [Debug  ] <EncodeDock::EncodeDock(QWidget*)> begin 
    
  • Extending last clip in timeline is extremely slow.

    Extending last clip in timeline is extremely slow.

    First of all, this app is great! a miracle in Linux.

    Say you import a long length video, it's difficult to set an start/end point in the Source preview, so I choose an approx range and move it to the Timeline to zoom in. When extending any of the (start/end) extremes far away from what I've previously chosen it gets buggy.

    Sorry but I couldn't make an account in the forum to disscuss these,

    1. It would be great to select multiple clips in the timeline, in order to move/delete them all.
    2. Do you have any plan to use a less quality video proxy in the preview to make editing fast? I believe the actual way to improve perfomance is setting Interpolation to Nearest Neighbor
    3. Do you think it would be better (and technically easy) to split video/audio into different tracks?
  • crash when closing a project and audio channels = 6

    crash when closing a project and audio channels = 6

    Shotcut version 22.10.25 Windows 11 Settings > Audio Channels = 6

    Open a project and choose File > Close. Sometimes (depends on the project test %sign.mlt reproducible for me) crashes.

  • Hardcoded absolute paths to 3rd party binaries

    Hardcoded absolute paths to 3rd party binaries

    Shotcut contains absolute paths to binaries it executes in various parts of its code, like this one: QFileInfo ffmpegPath(qApp->applicationDirPath(), "ffmpeg");

    I assume the binaries are also packaged along with Shotcut in some way in the binary releases.

    This however is causing trouble when packaging Shotcut for a Linux distribution by building from source and not bundling the binaries (which is desirable from package purity standpoint). On NixOS in particular (I'm not sure how other distros cope with this), it wouldn't even be possible to execute binaries built for common Linux distros, even if someone wanted to package it that way - which is not desirable anyway.

    In NixOS it's currently handled this ugly and fragile way, which can break easily with a slight change to the source code: https://github.com/NixOS/nixpkgs/blob/3c5cc34fac30437567fb71882c19112fbde27bee/pkgs/applications/video/shotcut/default.nix#L57

    (here's a PR to update to the latest version: https://github.com/NixOS/nixpkgs/pull/201905)

    Could the paths to the individual binaries Shotcut uses be added to the CMake interface via defines, and only default to the currently used paths if not overriden by the build system? This would make the packaging job much easier and more robust.

    (Or, for a simpler solution, a switch that would just use binariy names without a path, having them looked up in PATH. That should solve the issue at least for the general distro case.)

    I understand the reason for the bundling is to ensure the binaries work well with Shotcut, there's probably a certain version range that's compatible for a given release. In addition to the above, if you wanted to provide the range of compatible versions for the packaging (which would certainly be useful), unless there's a better mechanism (I don't know of any), you could record the compatible versions somewhere in the documentation or the release notes?

    Os: NixOS, version: 22.10.25

  • Windows sound settings are ignored / impossible to select audio output device.

    Windows sound settings are ignored / impossible to select audio output device.

    Shotcut has no method to select an audio output device. Windows has built-in facilities to direct application audio to a specific device, but shotcut bypasses this and forces the audio into the default device.

    Here's a screenshot of windows' settings with shotcut assigned to a specific device and the audio playing through the default anyway: image

  • Linux Wayland Export Issues

    Linux Wayland Export Issues

    Hi I'm Using the 22.10.25 Flatpak in Fedora Silverblue in this case with wayland user windowing system. Although looking at the app Flatseal, Shotcut is by default set not to use Wayland.

    When exporting a video with libx264 it sometimes crashes. This is the export log output of a successful export:

    Failed to create wl_display (No such file or directory) qt.qpa.plugin: Could not load the Qt platform plugin "wayland" in "" even though it was found. Gtk-Message: 14:04:51.601: Failed to load module "canberra-gtk-module" Gtk-Message: 14:04:51.601: Failed to load module "canberra-gtk-module" [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fefb8009700] st: 0 edit list: 1 Missing key frame while searching for timestamp: 1001 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fefb8009700] st: 0 edit list 1 Cannot find an index entry before timestamp: 1001. [libx264 @ 0x7fefc0202040] using SAR=1/1 [libx264 @ 0x7fefc0202040] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 [h264 @ 0x7fefb800b780] Reinit context to 1920x1088, pix_fmt: yuvj420p [libx264 @ 0x7fefc0202040] profile High, level 4.0, 4:2:0, 8-bit [libx264 @ 0x7fefc0202040] 264 - core 164 - H.264/MPEG-4 AVC codec - Copyleft 2003-2022 - http://www.videolan.org/x264.html - options: cabac=1 ref=2 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=6 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=6 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=90 keyint_min=9 scenecut=40 intra_refresh=0 rc_lookahead=30 rc=crf mbtree=1 crf=20.0 qcomp=0.60 qpmin=23 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fefb815c980] st: 0 edit list: 1 Missing key frame while searching for timestamp: 1001 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fefb815c980] st: 0 edit list 1 Cannot find an index entry before timestamp: 1001. [h264 @ 0x7fefb815b280] Reinit context to 1920x1088, pix_fmt: yuvj420p [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fefb8125000] st: 0 edit list: 1 Missing key frame while searching for timestamp: 1001 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fefb8125000] st: 0 edit list 1 Cannot find an index entry before timestamp: 1001. [h264 @ 0x7fefb8150dc0] Reinit context to 1920x1088, pix_fmt: yuvj420p [producer avformat] audio: total_streams 1 max_stream 1 total_channels 2 max_channels 2 [AVIOContext @ 0x7fefb8012240] Statistics: 479660 bytes read, 5 seeks [mp3 @ 0x7fefb899dac0] Skipping 0 bytes of junk at 0. [mp3 @ 0x7fefb899dac0] Estimating duration from bitrate, this may be inaccurate [mp3 @ 0x7fefb899e600] Skipping 0 bytes of junk at 0. [mp3 @ 0x7fefb899e600] Estimating duration from bitrate, this may be inaccurate [producer avformat] audio: total_streams 1 max_stream 0 total_channels 2 max_channels 2 [AVIOContext @ 0x7fefb8144a00] Statistics: 131200 bytes read, 3 seeks [filter swresample] 2(stereo) f32le 44100Hz -> 2(stereo) f32le 48000Hz

    [h264 @ 0x7fefb81327c0] Reinit context to 1920x1088, pix_fmt: yuvj420p

    When I use Flatseal to turn on Wayland support for Shotcut: The app loads fine and interestingly has a smaller ui and font scaling (better use of screen space) External factors: I have Large Text enabled in Fedoras accessibility settings.. The export doesn't error and opening logs look like this:

    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7feb58009700] st: 0 edit list: 1 Missing key frame while searching for timestamp: 1001 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7feb58009700] st: 0 edit list 1 Cannot find an index entry before timestamp: 1001. [libx264 @ 0x7feb60202040] using SAR=1/1

    Separate Issue: The rich text filter text position changes slightly in export. (Turns out turning on wayland in Flatseal fixes this, the preview window then shows accurate positions of text)

    Separate Issue: 1920 video was put on the timeline and the 'video mode' was automatically set to 2160p. When changing it back to 1080p after the whole edit, text and items in the timeline with 'size and position' filters on them come out too large! It doesn't correct.

    PS: The app also sometimes crashes when moving things around the timeline. Usually if I grab a clip and try move it to a different track too quickly.

  • Zoom Timeline to Fit only scales half of 3hr video, Slider all the way left, Max 1.5hrs?

    Zoom Timeline to Fit only scales half of 3hr video, Slider all the way left, Max 1.5hrs?

    I loaded a 3hr video downloaded from twitch as MP4, tried to scale the whole video to be visible in Timeline, and it only shows 1.5hrs in Timeline. I can scroll to see the rest. Everything else is acting as normal thus far in this file. Moving the slider over about 1/8th or 12.5% of the width takes me to appx 12:30 in video length visible in the Timeline window, whether docked or undocked and at full screen width but not maximized; maximized only slightly changes the numbers displayed in the Timeline for length, but overall is about half the video length.

    M1 MBP 16gb Monterey 12.6.1

Olive is a free non-linear video editor for Windows, macOS, and Linux.
Olive is a free non-linear video editor for Windows, macOS, and Linux.

Olive is a free non-linear video editor for Windows, macOS, and Linux.

Nov 30, 2022
A free, fast, cross-platform volumetric codec for everyone.

The open source Universal Volumetric (".uvol") compressed interchange format for streaming mesh sequences. This project also includes a cross-platform player implementation using h.264 video for texture.

Nov 30, 2022
Vulkan Video Sample Application demonstrating an end-to-end, all-Vulkan, processing of h.264/5 compressed video content.
Vulkan Video Sample Application demonstrating an end-to-end, all-Vulkan, processing of h.264/5 compressed video content.

This project is a Vulkan Video Sample Application demonstrating an end-to-end, all-Vulkan, processing of h.264/5 compressed video content. The application decodes the h.264/5 compressed content using an HW accelerated decoder, the decoded YCbCr frames are processed with Vulkan Graphics and then presented via the Vulkan WSI.

Nov 21, 2022
Video stabilization is a software-based approach in real-time to eliminating environmental effects (wind, heavy vehicle etc.) and enhance the visual performance that degrade video streaming quality.
Video stabilization is a software-based approach in real-time to eliminating environmental effects (wind, heavy vehicle etc.) and enhance the visual performance that degrade video streaming quality.

Video Stabilization Contents General Info Installation To Do General Info Video stabilization is a software-based approach in real-time to eliminating

Nov 23, 2022
Minimalist video maker -- simplify your music score video making process!

VisualScores 极简视频制作程序,简化你的乐谱视频制作! 如果需要编译,请解压 lib 文件夹中压缩包。 使用前请参考 manual 文件夹中的用户手册。 请勿修改、移动或删除 resource 文件夹中的任何文件。 VisualScores Minimalist video maker

Sep 7, 2022
Kodi is an award-winning free and open source software media player and entertainment hub for digital media
Kodi is an award-winning free and open source software media player and entertainment hub for digital media

website • docs • community • add-ons Welcome to Kodi Home Theater Software! Kodi is an award-winning free and open source software media player and en

Dec 1, 2022
Free and open-source media player written in C++

Liquid Media Player Free and open-source media player written in C++. Currently in development. Build Guide Windows Install the MSYS2 Building Platfor

Sep 20, 2022
Free plugin-based video converter
Free plugin-based video converter

SEZE II Смотреть на русском SEZE is a plugin-based video converter for Windows/Linux. You can write your video filter in C++ (see section "How to make

Nov 21, 2022
Open h.265 video codec implementation.
Open h.265 video codec implementation.

libde265 - open h.265 codec implementation libde265 is an open source implementation of the h.265 video codec. It is written from scratch and has a pl

Nov 30, 2022
Open Source H.264 Codec

OpenH264 OpenH264 is a codec library which supports H.264 encoding and decoding. It is suitable for use in real time applications such as WebRTC. See

Dec 2, 2022
An Open Source PSVita/TV MP4 player with 1080p playback and subtitle support
An Open Source PSVita/TV MP4 player with 1080p playback and subtitle support

Vita-Media-Player An Open Source PSVita/TV MP4 player with 1080p playback and subtitle support 1080i output supported on the PSTV natively and on the

Nov 25, 2022
GStreamer open-source multimedia framework

GStreamer open-source multimedia framework

Nov 30, 2022
Vireo is a lightweight and versatile video processing library written in C++11

Overview Vireo is a lightweight and versatile video processing library that powers our video transcoding service, deep learning recognition systems an

Nov 27, 2022
Video player for 3ds
Video player for 3ds

Video player for 3DS Patch note v1.0.1 Added allow skip frames option v1.0.0 Initial release Summary Video player for 3DS Performance 256x144(144p)@30

Nov 21, 2022
Plugin for VLC that pauses/plays video on mouse click

Pause Click plugin for VLC VLC plugin that allows you to pause/play a video by clicking on the video image. Can be configured to work nicely with doub

Nov 29, 2022
A WFH utility to visually indicate user engagement of audio and video
A WFH utility to visually indicate user engagement of audio and video

DIY: In meeting indicator - WFH Utility The need for in meeting indicator at home So many of you have gotten accustomed to work from home by now. This

Jun 28, 2021
Real-Time Intermediate Flow Estimation for Video Frame Interpolation filter for VapourSynth

Description RIFE filter for VapourSynth, based on rife-ncnn-vulkan. Usage rife.RIFE(clip clip[, int model=0, int gpu_id=auto, int gpu_thread=2, bint t

Nov 23, 2022
SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.
SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.

SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.

Dec 5, 2022
Anki-like app for spaced repetition of video clips
Anki-like app for spaced repetition of video clips

ReeePlayer The ReeePlayer application is designed for spaced repetition of fragments (clips) of video and audio files with similar principle as in Ank

Oct 28, 2022