FFVCL/FFOCX 系统架构

系统架构 FFVCL/FFOCX - FFmpeg Delphi VCL/ActiveX OCX - 视频转换、播放控件、DVD Ripper

FFOCX 注意

  • 目前仅支持 MemoryAccessAdapter, GDI(Screen/Wave)Capture, DShowCapture

系统架构

  • Add-ons 用于 FFEncoder, FFPlayer, FFDecoder 的输入和输出.
  • FFEncoder 用于音频和视频格式的转换: 输入 -> 解码(解压) -> 编码(压缩) -> 输出.
  • FFPlayer 用于播放音频和视频文件.
  • FFDecoder 用于获得媒体文件信息以及解码视频帧画面或音频采样数据.
  • FFLogger 捕获其他组件输出的日志(包括 Add-ons, FFEncoder, FFPlayer, FFDecoderFFmpeg 库).
  • FFLoader 用于运行时期加载动态库.
  • DLLs 包括 FFmpeg 库, SDL 库, SoundTouch 库 和 libmfx 库.

Add-ons

  • MemoryAccessAdapter 为输入和输出提供内存读写接口 (open, read/write, seek, close).
  • FrameInputAdapter 提供直接输入视频帧的接口 (Bitmap canvas, Bitmap data, Bitmap DeviceContext, YUV).
  • FrameOutputAdapter 提供直接输出视频帧的接口 (RGB, MJPEG, H.263, H.264, YUV).
  • PacketInputAdapter 提供直接输入视频包的接口 (H.263, H.264, MJPEG, M4V, MPEGVideo, VC1).
  • WaveInputAdapter 提供直接输入 PCM Wave 数据的接口.
  • WaveOutputAdapter 提供直接输出 PCM Wave 数据的接口.
  • GDICapture 提供屏幕捕捉接口作为视频输入和录音接口作为音频输入.
  • DShowCapture(FFmpeg 库内置) 提供摄像头捕捉接口作为视频输入和录音接口作为音频输入.
  • 更多信息请参考示例程序.

FFEncoder

  • FFEncoder 功能强大, 且有一点复杂, 请参考 Encoder 说明文档和示例程序.
  • 需要的 DLLs: AVCodec, AVDevice, AVFilter, AVFormat, AVUtil, SwResample, SwScale 以及 libmfx(可选).

FFPlayer

  • FFPlayer 使用简单, 但不够强大, 请参考示例程序.
  • 需要的 DLLs: AVCodec, AVDevice, AVFilter, AVFormat, AVUtil, SwResample, SwScale, SDL 以及 SoundTouch(可选).

FFDecoder

  • FFDecoder 使用简单, 请参考示例程序.
  • 需要的 DLLs: AVCodec, AVFilter, AVFormat, AVUtil, SwResample, SwScale.

FFLogger

  • FFLogger 是一个辅助组件, 当需要的时候会自动创建一个全局实例, 并且只允许一个实例.

FFLoader

  • FFLoader 是一个辅助类, 程序启动时候会自动创建一个全局实例. 可以无视之.

FFmpeg 库

  • FFmpeg GPL/LGPL 库: AVCodec, AVDevice, AVFilter, AVFormat, AVUtil, SwResample, SwScale.
  • AVCodec 提供音频、视频的解码器和编码器.
  • AVDevice 提供摄像头捕捉、DirectShow 采集.
  • AVFilter 提供可实现特效的视频滤镜.
  • AVFormat 提供音频、视频容器(格式)的分离器(输入)和合成器(输出).
  • AVUtil 提供一些通用的函数.
  • SwResample 提供音频重采样.
  • SwScale 提供视频帧重采样(格式转换、尺寸变换等).

SDL 库

  • SDL 提供音频回放和视频渲染.

SoundTouch 库

  • SoundTouch 提供音频重采样以进行音频变速播放.

libmfx 库

  • libmfx 提供 Intel QSV 调度.