mlt

mltframeworkLGPL-2.1活跃维护

MLT 是一个多媒体框架,为视频编辑和播放器提供音视频处理、特效与格式转换能力,常被用作非线性编辑软件(如 Kdenlive)的底层引擎。

MLT Multimedia Framework

v7.42.0发布于 2026-10-03 18:34 UTC1,873star +2 / 7 天402fork同步于 2026-11-10 05:52 UTC

怎么上手

README 里没有找到可直接复制的安装命令

README 里没有找到可直接复制的安装命令,请到 README 或官方文档查看安装方式。

硬件要求

README 没有说明硬件要求。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

这个项目的说明还在生成中,先参考下面「最近发版」和 README。

最近发版

5 个版本v7.42.0
  1. v7.42.0最新正式版2026-10-03 · 2026-10-03 18:34 UTC

    What's Changed

    Framework

    • Added list-based image-conversion callback dispatch on mlt_frame. Use mlt_frame_append_convert_image() to register a converter instead of setting frame->convert_image directly. Multiple converters are tried in registration order; the first that succeeds wins. New public API:
      • mlt_frame_prepend_convert_image()
      • mlt_frame_append_convert_image()
      • mlt_frame_convert_image()
      • mlt_frame_next_convert_image()
      • mlt_frame_has_convert_image()
      • mlt_frame_copy_convert_image()
    • API behavior change: mlt_frame_s::convert_image is now read-only after init and is permanently set to the dispatcher mlt_frame_convert_image(). External code that set this field directly to a custom function will no longer have that function called. If you really need that (never heard of someone who does), clear the frame's "_convert_image_callbacks" property and use mlt_frame_append_convert_image() instead.
    • fx_cut (Adjustment Clip) now applies its filters only to tracks below it. Higher tracks composite on top of the filtered result. New image-stack helpers used by tractor stacking and this path:
      • mlt_frame_prepend_image_from_service()
      • mlt_frame_push_image_with_fx_cut()
    • Fixed crash applying a Movit (OpenGL) filter to an fx_cut (Adjustment Clip). Cross-producer image sharing (including the reverse fx_cut share) finalizes an in-progress Movit chain to rgba64 and does not copy producer-keyed _movit chain state. Same-producer prepends keep the GPU chain. Playlist fx_cut frames now set _producer so Movit can key the chain.
    • Copy meta. and set. properties from the producer onto fx_cut frames so producer annotations reach tractor output. New public API:
      • mlt_producer_pass_frame_properties()
      • Mlt::Producer::pass_frame_properties()
    • Changed the default audio sample format to float32 (mlt_audio_f32le). Added mlt_audio_format_id() and an mlt_audio_format property on the multi consumer. Integer/float conversion is lossless and symmetric (s16 and u8 round-trips are exact).
    • Deprecated audio services that only support integer samples.
    • Propagate per-track audio-level metadata to output frames (meta.audio.*).
    • Improved mlt_property_is_anim() so strings that merely contain = (for example URLs) are not treated as animation.
    • mlt_properties_get_data() no longer returns a data pointer for rect properties.
    • Fixed signed integer overflow in mlt_luma_map_from_pgm.
    • Fixed fx_cut in-point handling in mlt_transition.
    • Fixed Android mlt++ builds by disabling ELF symbol versioning.
    • Fixed a macOS crash in numeric property conversion caused by setlocale. Parsing and formatting no longer change the process LC_NUMERIC.

    Modules

    • Image converters (movit.convert, avcolor_space, imageconvert) are now attached data-driven via loader.ini key image_convert.
    • Movit rgba64 is now a valid input as well as output: FlatInput is created with GL_UNSIGNED_SHORT and set_pixel_data() uses the 16-bit overload. Previously rgba64 was uploaded as 8-bit, which distorted the image when an OpenGL filter ran on an fx_cut.
    • Added placebo GPU module (placebo.render, placebo.shader) using libplacebo for scaling, debanding, dithering, tonemapping, and mpv-style .hook shaders (D3D11 / Vulkan / OpenGL).
    • Fixed deadlock in the decklink consumer when pausing, seeking, and resuming playback.
    • Added ducking to the mix transition (duck_threshold, duck_attenuation, duck_level, duck_fade_in, duck_fade_out, and an optional prefix for duck_level on the frame).
    • Added #frame+1# keyword in dynamictext (1-based frame number).
    • Added more audio formats to the audiolevel filter.
  2. v7.40.02026-06-25 · 2026-06-25 00:45 UTC
    查看更新说明

    What's Changed

    Framework

    • Some fixes for win32_fopen().
    • Security fixes for time formatting in mlt_properties.
    • Security fix to disable deprecated ante & post properties in mlc_consumer.
    • Added more properties to metaschema.yaml (new version 7.2):
      • audio_formats
      • video_formats
      • layout-hint
      • hide-label
      • normalized_default

    Modules

    • Added audio_formats and image_formats properties to all service metadata.
    • Many improvements to the openfx module:
      • fixed potential overflows in snprintf() calls
      • multi-threading: frame- and slice-based
      • many compatibility fixes
      • added support for 2D and 3D numeric parameters (uses mlt_rect)
      • fixed preview scaling
      • fixed the default for choice (values in metaschema.yaml) parameters
      • fixed some effects rendering upside-down.
    • Added rnnoise module for background audio noise reduction (depends on librnnoise).
    • Added HDR10 SMPTE ST 2084 (PQ) properties to the decklink consumer:
      • hdr_red_x
      • hdr_red_y
      • hdr_green_x
      • hdr_green_y
      • hdr_blue_x
      • hdr_blue_y
      • hdr_white_x
      • hdr_white_y
      • hdr_max_luminance
      • hdr_min_luminance
      • hdr_max_cll
      • hdr_max_fall
    • Added the .lot file name extension for the loader producer to use glaxnimate.
    • Visual quality improvements for animations in the qtblend filter and transition.
    • Updated spatialaudio module to the libspatialaudio 0.4.0 API.
    • Fixed a signed int overflow in pgm producer.
    • MSVC compatibility fixes for kdenlivetitle producer and frei0r, plusgpl, jackrack, openfx, rtaudio, & resample modules.
    • Fixed choppy playback and deadlocks in the decklink consumer.
    • Fixed libopus audio encoder warning about frame_duration in avformat consumer.
    • Fixed crash in avformat consumer with unsupported attached_pic format.
    • Fixed plugin bundles for vst2 filters on macOS.
    • Fixed the frame position in the consumer producer.
    • Hardened string formatting for metadata properties in the vorbis producer.
    • Fixed typewriter in qtext filter lags when rate properties changed.

    Other

    • Skip Qt preflight for XML-only consumers in melt.

    New Contributors

    Full Changelog: https://github.com/mltframework/mlt/compare/v7.38.0...v7.40.0

  3. v7.38.02026-04-22 · 2026-04-22 23:36 UTC
    查看更新说明

    What's Changed

    The highlights of this version are basic, minimal support for OpenFX plugins and hardware scaling for preview scaling with hwaccel decoding.

    Framework

    • Added dynamic hash table for mlt_properties for better performance.
    • Fixed memory corruption in mlt_pool.
    • Added warning on file open failure when parsing in mlt_properties.

    Modules

    • Added basic support for OpenFX filter plugins. OpenFX has many features. This is a summary of what is NOT yet included:
      • GPU rendering
      • exotic parameter types: Integer2D, Integer3D, Double3D, Custom, Bytes, Page, PushButton
      • plugin-driven keyframe animation; but MLT-driven does work
      • tile-, slice-, or frame-based multi-threading (only plugin internal threading)
      • multi-resolution
      • temporal clip access
      • overlays & dialogs
      • timeline queries (e.g. getTime())
      • generator, transition, retimer
      • parametric curves
    • Added hwaccel_scale filter with preview scaling (scale_vaapi, scale_vulkan, scale_d3d11, scale_vt (macOS)).
    • Added an environment variable MLT_AVFORMAT_HWACCEL_PPS to provide a limiter to hwaccel because transfering uncompressed video between memory CPU and GPU memory is heavy. PPS = maximum pixels per second. Anything over it skips hwaccel.
    • Added lut parameter to avformat producer.
    • Added attached_pic property to avformat consumer.
    • Added movit.overlay_blend video filter.
    • Added compositing property to movit.overlay transition.
    • Added constant-power crossfade to mix audio transition.
    • Added rounded corner support for rect in kdenlivetitle.
    • Added typewriter properties to subtitle filter.
    • Added underline and strikethrough to the text and qtext filters.
    • Changed qtext style property to support family named styles.
    • Added anchor point support for arbitrary rotations in qtblend.
    • Allow relative paths for images in kdenlivetitle.
    • Updated Glaxnimate module to version 0.6.0.
    • Switched to QImage scaling when downscaling in qtblend.
    • Deprecated obscure and watermark filters.
    • Install the jackrack module's blacklist files.
    • Fixed subtitle stream type metadata.
    • Fixed mutex initialization in avformat no-validate mode.
    • Fixed crash when using linearblend deinterlacer.
    • Fixed black bar with HEVC hwaccel decode and scale on Windows.
    • Fixed crash with hardware scaler and interlaced video.
    • Fixed converting 8-bit full to limited range with hwaccel.
    • Fixed alpha in 12-bit ProRes with alpha.
    • Fixed movit linear color not matching CPU filters.
    • Fixed multi consumer making extra linear color conversions.
    • Fixed regression writing raw FLAC.
    • Fixed qtblend filter returning unexpectedly large frames.
    • Fixed qtext outline encroaching on fill color.
    • Fixed wrong last+ frame when eof=loop in Glaxnimate.
    • Fixed brightness filter on track below a clip with transparency.

    Other

    • Fixed crash during exit cleanup in melt.
    • Continued build improvements for MSVC.
    • A lot of metadata fixes and improvements.
    • Many fixes to API documentation.
    • Added C++ and Python to the API docs.
    • Added two 10-bit VP9 encoding presets.

    New Contributors

    Full Changelog: https://github.com/mltframework/mlt/compare/v7.36.1...v7.38.0

  4. v7.36.12025-12-31 · 2025-12-31 23:05 UTC
    查看更新说明

    This version fixes a regression creating a xml-clip producer or producer with a null profile. This broke, for example, nesting a MLT XML project file within another project in Shotcut.

    Full Changelog: https://github.com/mltframework/mlt/compare/v7.36.0...v7.36.1

  5. v7.36.02025-12-30 · 2025-12-30 01:10 UTC
    查看更新说明

    What's Changed

    This version adds image processing in linear color on the CPU (previously only Movit). Plus, it extends 10-bit video processing on the CPU to many more services.

    Framework

    • Added mlt_image_default_colorspace()
    • Added mlt_image_default_trc()
    • Added mlt_image_default_primaries()
    • Added mlt_color_convert_trc()
    • Added the mlt_consumer property mlt_color_trc to drive a new color_transform normalizer filter. This sets the color transfer function to use for image/video effects. It is beneficial and correct to use linear color for any pixel mixing whether for blending or interpolation.
    • Removed atexit(mlt_factory_close) in mlt_factory_init(). Close the factory yourself if you feel the need to (not generally needed when exiting a process).
    • Prevent possible crash in mlt_service_connect_producer().
    • Added mlt_profile_is_valid() and Mlt::Profile::is_valid().
    • Fixed crash on invalid profile (CVE-2025-65834) in:
      • mlt_consumer_start()
      • mlt_factory_producer()
      • xml producer

    Modules

    • Drop support for Qt 5.
    • Fixed bad color in luma transition's dissolve (regression in v7.34.0).
    • Fixed HLG HDR broken in decklink consumer (regression in v7.34.0).
    • Fixed warnings when flushing audio in the avformat consumer.
    • Added support for hwaccel=vulkan to the avformat producer.
    • Added a color_transform normalizer filter to the core module to convert all image/video producers to and from linear color. It is abstract in the core module and drives the following filters:
      • avfilter.zscale
      • sws_colortransform
      • avfilter.scale
    • Added filter sws_colortransform that is more efficient than avfilter.swscale but requires FFmpeg 8.
    • Changed the default property values of the null consumer:
      • real_time: -1
      • terminate_on_pause: 1
    • Changed the luma and movit.luma transitions to progress linearly with linear color_trc.
    • Fixed the alpha channel dropped by the xml-clip producer.
    • Added mlt_image_rgba64 format to:
      • avcolor_space filter
      • avdeinterlace filter
      • affine filter and transition
      • audiolevelgraph filter
      • audiospectrum filter
      • audiowaveform filter
      • autofade filter
      • avformat producer and consumers
      • box_blur filter
      • brightness filter
      • pillar_echo filter
      • color producer
      • dropshadow filter
      • dynamictext filter (when used with qtext)
      • frei0r.alpha0ps filter
      • frei0r.alphagrad filter
      • frei0r.alphaspot filter
      • frei0r.bluescreen0r filter
      • frei0r.select0r filter
      • frei0r.transparency filter
      • gpsgraphic filter
      • gpstext filter
      • gradientmap filter
      • hslprimaries filter
      • hslrange filter
      • kdenlivetitle producer
      • lift_gamma_gain filter
      • lightshow filter
      • mask_apply (when used with qtblend)
      • movit.convert filter
      • outline filter
      • qtblend filter and transition
      • qtcrop filter
      • qtext producer
      • shape filter
      • spot_remover filter
      • strobe filter
      • subtitle filter (when used with qtext)
      • swscale filter
      • text filter (when used with qtext)
      • timeremap link
      • timer filter (when used with qtext)
      • vqm transition
    • Changed the mask_apply filter default transition to qtblend.
    • Removed the maximum for the alpha property on the brightness filter so that you can increase the opacity of an existing alpha channel.
    • Fixed background image scaling in the gpsgraphic filter.
    • Fix audio artifacts with pcm_s24le in mkv in avformat producer.

    Other

    • Fixed melt on Windows not reading file path/name with extended characters (regression in v7.34.0).
    • Removed bitrate and quality limits in the vp9 and webm `avfo

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    MLT FRAMEWORK

    MLT is a LGPL multimedia framework designed for video editing.

    This document provides a quick reference for the minimal configuration, build and installation of MLT.

    See the docs/ directory for usage details.

    See the website for development details and a contributing guide.


    Development Environment (Dev Container)

    This repository provides a standardized development environment using the Development Containers specification. It is compatible with VS Code, CLion, DevPod, and other IDEs supporting the .devcontainer standard.

    Prerequisites

    • Docker (or Podman)
    • An IDE with Dev Container support.

    Hardware Acceleration and Audio Support

    By default, the container runs in Restricted Mode (secure/headless). In this mode:

    • Audio is routed to a dummy driver (no sound).
    • GPU access might be limited to software rendering.
    Enabling Real Hardware Access

    To enable Full GPU Acceleration (DRI) and Physical Audio (ALSA/PulseAudio/PipeWire), follow these steps:

    1. Modify devcontainer.json: Uncomment the following lines inside the runArgs array:

      "--ipc=host",
      "--privileged"
      
      • What this does: --ipc=host allows shared memory access for high-performance video frames, and --privileged grants the container direct access to host devices (GPU nodes and Sound Cards).
    2. Trigger a Rebuild: Changes to runArgs require a container recreation.

      • In VS Code: Run the command Dev Containers: Rebuild Container.
      • In CLion: Select Restart and Rebuild Container.
    3. Switch the Audio Driver: The Dockerfile defaults to SDL_AUDIODRIVER=dummy. Once in privileged mode, you must tell the MLT consumer to use a real driver:

      • Temporary (CLI):
      SDL_AUDIODRIVER=alsa melt video.mp4
      
      • Permanent: Edit the ENV SDL_AUDIODRIVER line in your .devcontainer/Dockerfile to alsa or pulseaudio.

    Warning: Using --privileged mode reduces the security isolation between the container and your host machine. Use it only when real-time hardware playback is required for development.


    Configuration

    Configuration is triggered by running CMake from inside a build directory, not from the project root.

    mkdir -p build
    cd build
    cmake ..
    

    Alternatively, you can configure CMake with Ninja:

    cmake -G Ninja ..
    

    More information on usage is found by viewing CMakeLists.txt and the CMake manual page.


    Compilation

    Once configured, it should be sufficient to run:

    cmake --build .
    

    Alternatively, you can compile with Ninja:

    ninja
    

    Alternatively, you can compile using CMake or Ninja with one less CPU core (recommended only on systems with many CPU cores):

    cmake --build . --parallel $(($(nproc) - 1))
    # or
    ninja -j $(($(nproc) - 1))
    

    All generated files (Makefiles, Ninja files, cache, object files, binaries) will remain inside the build/ directory.


    Testing

    To execute the MLT tools without installation, or to test a new version on a system with an already installed MLT version, run:

    source ../setenv
    ctest --output-on-failure # -j $(($(nproc) - 1))
    

    NB:

    • This applies to the current shell only
    • It assumes a bash or Bourne-compatible shell is in use
    • The command must be executed from inside the build/ directory

    Installation

    Installation is triggered by running:

    sudo cmake --install .
    

    This installs the files generated in the build/ directory, without affecting the project source tree.

    Note: After installation, some Linux systems may require running sudo ldconfig to refresh the shared library cache, especially if the install prefix is not already part of the system linker configuration.


    Summary

    mkdir build
    cd build
    cmake ..
    cmake --build .
    source ../setenv
    ctest --output-on-failure
    sudo cmake --install .
    

    This approach keeps the source tree clean and allows the entire build to be removed safely by deleting the build/ directory.


    More Information

    For more detailed information, please refer to https://mltframework.org/docs/install/.