FFmpegFreeUI 文档
本文档包含了从新手入门到插件开发的全部内容,请仔细阅读。
软件介绍
FFmpegFreeUI(简称 3FUI)是一款运行于 Windows 平台的专业 FFmpeg 图形用户界面,基于 .NET 10 框架和纯 WinForm 技术,并结合 SunnyUI 与自绘控件打造了专业高效的暗黑风格。我们致力于打破当前转码软件市场中普遍存在的臃肿捆绑、广告水印、功能限制、定价混乱及设计业余的局面。
3FUI 永久保持纯净、免费与自由,并及时收录最新的编码器与参数标准,是您追求纯粹与专业的理想之选。
核心理念
3FUI 的核心目标是成为一款面向轻度专业用户的参数化转码工具,它允许用户通过图形界面直观地调整全面的通用参数,从而轻松完成视频压制与格式转换。请注意,3FUI 是一款纯粹的参数驱动型软件,**不提供“一键式”傻瓜方案**。如果您对视频技术参数缺乏基本概念,强烈建议您首先阅读本文的“新手入门”章节。
主要特性
- 基于预设: 轻松创建、管理并与他人分享转码方案。
- 信息透明: 界面直观标示参数名称,并精确显示 FFmpeg 输出信息,便于学习与调试。
- 任务管理: 实时计算剩余时间、预估文件大小、支持任务暂停,并可自动并发执行多达10个任务。
- 纯净无痕: 不会在输出文件中写入任何软件信息,不修改注册表,不在系统任何位置产生垃圾文件(除不可控的崩溃转储外),且绝不收集任何用户数据。
- 插件扩展: 支持通过插件(VB/C#/WPF)扩展软件功能,并能与编码队列无缝集成。
Linux & macOS 支持
理论上,通过 Wine 或 Steam 自带的 Proton 转译层,可以在 macOS 和 Linux 系统上直接运行本软件。由于开发者精力与资源所限,我们无法提供官方技术支持,欢迎您加入社区与其他用户共同探讨跨平台使用经验。
下载版本说明
由于插件系统的实现机制,软件需要保留一些 DLL 文件以确保其功能稳定。虽然主程序 EXE 文件可以单独运行,但这将导致插件功能完全失效。
ReadyToRun
: 推荐版本,性能更佳。SelfContained
: 备用版本,如果 ReadyToRun 无法在您的设备上运行,请尝试此版本。Debug
: 调试版,供开发者或有特殊需求的用户使用。PluginExample
: 示例插件。请在程序目录下创建Plugin
文件夹,将插件(.3fui.dll
文件)放入其中后重启软件即可加载。
常见问题 (FAQ)
为什么不提供需要安装运行库的最小体积版本?
要求用户安装一个尚未正式发布的 .NET 预览版运行库,会带来不佳的用户体验和后续的维护难题。当未来 Windows 系统原生集成该运行库后,我们会考虑发布最小体积版。
文件为什么这么大?
软件本体仅有数百KB,体积主要源于我们选择自带完整的 .NET 运行时,以确保开箱即用。如果您希望获得最小体积,可以自行修改项目设置并重新编译。
所有版本都无法运行怎么办?
- 确保您的操作系统是 Windows 10 (1809) 或更高版本。
- 检查 Windows 更新,确保 .NET Framework 3.5 和 4.8 的累积更新已安装。
- 检查杀毒软件或安全防护软件是否对程序进行了拦截。
- 尝试从 GitHub 克隆仓库并自行编译。
- 如果以上方法均无效,可能需要考虑修复或重装您的操作系统。
新手入门指南
第一步:准备 FFmpeg
- 前往 FFmpeg 官网下载最新的 Windows 发行版。推荐来自 gyan.dev 或 BtbN 的版本。
- 请下载 full 或 gpl 的版本(例如
ffmpeg-git-full.7z
),以确保包含如libx264
在内的常用编码器。 - 将压缩包中的
ffmpeg.exe
文件解压。 - 将
ffmpeg.exe
放置于与FFmpegFreeUI.exe
相同的文件夹内,或将其所在路径添加至系统环境变量(推荐)。
完成以上步骤后,即可开始使用 3FUI。
第二步:学习基础知识
如果您对视频参数完全不了解,强烈建议您观看以下科普内容,建立基础概念:
- 极客湾 | 视频基础参数科普
- 极客湾 | 电影和游戏的帧数效果差别
- 影视飓风 | 视频的封装与编码
- 影视飓风 | 色深和色度采样
- 影视飓风 | 帧率的旧事
- 大河李斯特 | 视频格式与基础参数科普
- 大河李斯特 | 视频压缩、色度半采样、视频中的高低频
- 大河李斯特 | FFmpeg 是什么
编码器详解
视频编码器
类别 | 提供的编码器 | 备注 |
---|---|---|
复制流 | copy |
不进行重新编码,直接复制原始视频流。 |
H.266/VVC | libx266 , libvvenc |
技术前沿,但目前不成熟,软解性能消耗巨大且缺乏硬件加速与播放器支持。 |
AV1 | libaom-av1 , libsvtav1 , av1_nvenc , av1_qsv , av1_amf |
新一代高效编码。无硬件加速时,推荐使用 libsvtav1 软编码。 |
H.265/HEVC | libx265 , hevc_nvenc , hevc_qsv , hevc_amf |
当下兼顾画质与体积的理想选择。 |
H.264/AVC | libx264 , h264_nvenc , h264_qsv , h264_amf |
兼容性极佳,通过精细调参依旧表现出色,但已接近技术瓶颈。 |
ProRes | prores_ks , prores_aw |
专业级中间编码,Windows/Linux 使用 prores_ks 。 |
FFV1 | ffv1 |
数学无损编码,适用于博物馆级归档,不适合个人存储,可作为高质量编辑的中转格式。 |
硬件加速标识
标识 | 适用硬件 |
---|---|
lib... |
CPU (软件编码) |
nvenc |
NVIDIA 显卡 |
amf |
AMD 显卡 |
qsv |
Intel 显卡 |
关于 NVIDIA 显卡硬件编解码能力的详细矩阵,请参考 NVIDIA 官方页面。
核心参数概念
比特率控制
方式 | 说明 |
---|---|
恒定质量 (CRF / CQ / QP) | 存储首选。 您设定一个质量目标(如 CRF=23),编码器会动态调整比特率以在视频的每一部分都维持这个质量水平。软编码通常使用 -crf ,硬件加速使用 -cq 或 -qp 。 |
动态码率 (VBR) | 硬件加速的常用选项,与恒定质量类似。VBR HQ 是其高质量版本。 |
恒定速率 (CBR) | 强制在所有时间点都使用固定的比特率,通常用于流媒体直播场景,不适合本地存储。 |
质量设定 (-crf / -cq / -qp)
这是控制画质与体积最关键的参数。数值越 **低**,画质越 **高**,体积越 **大**。反之,数值越高,画质越低,体积越小。
- 通用默认值通常在
23
左右。 - 视觉无损的参考值约在
16-18
。 - 请勿将此值设为
0
,除非您确切知道其代表的无损压缩含义。
插件开发指南
通过插件系统,您可以为 3FUI 扩展各种自定义功能。插件开发采用反射机制,您无需引用 3FUI 主程序即可独立开发。
环境准备
- 安装 Visual Studio 2022 (预览版),并勾选“.NET 桌面开发”工作负载。
- 手动下载并安装 .NET 10 SDK (预览版)。
开发流程
- 在 VS2022 中创建一个新的“Windows 窗体应用”项目 (VB/C# 或 WPF),目标框架选择 .NET 10。
- 创建一个名为
Entry
的公开静态类 (public static class)。 - 在该类中,创建一个名为
Entry
的公开静态方法 (public static void),此方法是插件的初始化入口。 - 根据需要在
Entry
类中实现以下接口方法,以与 3FUI 交互。
接口1: 添加自定义 WinForm 界面
// 定义属性,用于接收宿主(3FUI)的回调
public static Action HostCall_AddCustomWinformPanel { get; set; }
// 定义方法,供宿主调用以设置回调
public static void SetHost_AddCustomWinformPanel(object action)
{
HostCall_AddCustomWinformPanel = (Action)action;
}
// 示例:在插件初始化时,调用回调将自己的控件添加到主界面
public static void Entry()
{
HostCall_AddCustomWinformPanel?.Invoke("我的插件", new MyCustomControl());
}
接口2: 将任务添加到编码队列
// 定义属性
public static Action HostCall_AddMissionToQueue { get; set; }
// 定义设置方法
public static void SetHost_AddMissionToQueue(object action)
{
HostCall_AddMissionToQueue = (Action)action;
}
// 示例:调用回调添加一个新任务
public void AddNewTask()
{
string ffmpeg_params = "-i \"input.mkv\" -c:v libx265 -crf 23 \"output.mkv\"";
string display_name = "My Task: input.mkv";
string output_path = "C:\\path\\to\\output.mkv";
HostCall_AddMissionToQueue?.Invoke(ffmpeg_params, display_name, output_path);
}
发布插件
项目生成后,找到与您的项目同名的 .dll
文件,将其后缀修改为 .3fui.dll
。这个文件就是您要发布的插件。将其放入 3FUI 的 Plugin
文件夹内即可。
反馈与支持
如需反馈问题或寻求帮助,请加入我们的交流群:1050613952。请在群内提供完整的调试信息截图(包括命令行),以便我们快速定位问题。