FFVCL/FFOCX 系统架构
FFOCX 注意
- 目前仅支持 MemoryAccessAdapter, GDI(Screen/Wave)Capture, DShowCapture
系统架构
- Add-ons 用于 FFEncoder, FFPlayer, FFDecoder 的输入和输出.
- FFEncoder 用于音频和视频格式的转换: 输入 -> 解码(解压) -> 编码(压缩) -> 输出.
- FFPlayer 用于播放音频和视频文件.
- FFDecoder 用于获得媒体文件信息以及解码视频帧画面或音频采样数据.
- FFLogger 捕获其他组件输出的日志(包括 Add-ons, FFEncoder, FFPlayer, FFDecoder 和 FFmpeg 库).
- 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 库
SoundTouch 库
- SoundTouch 提供音频重采样以进行音频变速播放.
libmfx 库