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*.dllandsw*.dllin 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).
