Ffvcl - Delphi Ffmpeg Vcl Components 5.0.1 -

FFVCL (Delphi FFmpeg VCL Components) version 5.0.1 is a native component suite for Delphi developers that provides a comprehensive wrapper for FFmpeg libraries, specifically version 1.0.x at its release . It is designed to be more flexible and powerful than the standard command-line interface by allowing direct integration of video encoding and playback into Delphi applications . Core Architecture

The suite is built on a modular architecture that manages different stages of media processing :

FFEncoder: Handles transcoding processes, including input, decoding (decompression), encoding (compression), and final output .

FFPlayer: A dedicated component for playing a wide variety of audio and video files without requiring external codecs .

FFDecoder: Responsible for providing detailed media file information and decoding specific video frames or audio samples .

FFLogger: A global assistant component that captures logs generated by the FFmpeg libraries and other suite components . FFVCL - Delphi FFmpeg VCL Components 5.0.1

FFLoader: Manages the dynamic linking and loading of necessary DLLs at runtime, including FFmpeg, SDL, SoundTouch, and libmfx . Version 5.0 Key Updates

Version 5.0 introduced several specific improvements over previous versions :

FFmpeg 1.0.1 Support: Native integration with the FFmpeg 1.0.x stable branch .

GDICapture: A new integrated successor to the previous ScreenCapture and WaveCapture components, allowing for more streamlined screen and audio recording .

Component Renaming: For better clarity, EventStreamAdapter was renamed to MemoryAccessAdapter, and the unit StreamProtocol became MemoryProtocol . FFVCL (Delphi FFmpeg VCL Components) version 5

Improved Decoder/Encoder: Added specific properties like InputCount for encoders and detailed aspect ratio members (DisplayAspectRatio, SampleAspectRatio) for the decoder . Functional Features

Advanced Capture & Input: Supports screen capturing (GDI), webcam capturing (DirectShow), and direct frame input via Bitmap canvas or YUV data .

Frame/Packet Control: Developers can directly input or output raw video frames (RGB, MJPEG, H.264) and audio packets (PCM wave) .

Editing & Processing: Includes support for video filters (scale, flip, negate), text and image overlays, and joining multiple input files into a single output .

Performance: Supports multi-threaded encoding, configurable thread priority, and batch file processing . Development Specifications Demuxing: Play virtually any media container (MP4, AVI,

Delphi Compatibility: Supports a wide range of versions, including Delphi 6, 7, 2007 through XE8, and newer versions up to Delphi 13 Florence .

Deployment: Running applications requires placing specific BPL files (e.g., FFmpeg_Dx.bpl, FFmpegVcl_Dx.bpl) in the application folder or adding them to the Windows PATH . What's new? - FFVCL – Delphi FFmpeg VCL Components

AV1 videos play very slowly

Solution: Enable hardware decoding. Set FFMediaPlayer1.VideoDecoder.HardwareAccel := haAuto; This uses D3D11VA on supported GPUs.

1. Multi-format Playback Engine

  • Demuxing: Play virtually any media container (MP4, AVI, MKV, MOV, FLV, WMV, MPEG-TS, etc.).
  • Codec Support: Decode H.264, H.265 (HEVC), VP9, AV1, MP3, AAC, AC3, Opus, and legacy codecs (MPEG-2, MJPEG).
  • Hardware Acceleration: Leverage DXVA2, D3D11VA, NVIDIA NVENC/NVDEC, Intel QuickSync, and AMD AMF to reduce CPU load during playback.

"FFmpeg DLL not found"

Solution: Place the DLLs in C:\Windows\System32 (not recommended) or use SetDLLDirectory() in your Delphi code:

SetDLLDirectory(PChar(ExtractFilePath(ParamStr(0)) + 'ffmpeg_libs'));

1. Media Player with Extended Features

Build your own VLC-like player with custom filters, speed control (1.5x, 2x playback), frame stepping, and subtitle support. FFVCL handles all the FFmpeg decoding; you only design the UI and add special features.

Prerequisites

  • Delphi 10.4 Sydney or newer (RAD Studio 11/12 recommended). Version 5.0.1 may work with XE8 and later but is optimized for Unicode and high-DPI.
  • FFmpeg shared DLLs (download from gyan.dev or BtbN). Place av*.dll and sw*.dll in your project’s output or system path.

3. High-DPI and 4K/8K Awareness

Modern Delphi VCL applications often look blurry on high-resolution monitors. FFVCL 5.0.1 includes per-monitor DPI support for video rendering surfaces (VCL panels or custom paint boxes).