ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

FFmpegFreeUI(3FUI)v6:Windows 下 FFmpeg 的专业交互外壳——外部调用、远程任务、插件系统与 Agent 模型配置全解

FFmpegFreeUI(3FUI)v6:Windows 下 FFmpeg 的专业交互外壳——外部调用、远程任务、插件系统与 Agent 模型配置全解 桌面应用音视频视频处理【免费下载链接】FFmpegFreeUI3FUI 是 ffmpeg 在 Windows 上的轻度专业交互外壳收录大量参数界面美观交互友好。此项目面向国内使用环境让普通人也能够轻松压制视频和转换格式。项目地址https://gitcode.com/gh_mirrors/ff/FFmpegFreeUI点击查看免费下载FFmpegFreeUI简称 3FUI是运行在 Windows 上的 FFmpeg 专业交互外壳面向懂基本参数的进阶编码人员定位为一整套可扩展平台而非一键全自动软件。本文围绕仓库根目录的 README.md 展开覆盖 3FUI 的设计定位与部署前提、启动参数与远程调用含源码级实现细节、插件开发协议与编码队列事件以及 Agent 智能体的自定义模型配置读完后你可以直接掌握 3FUI 的外壳集成能力与全部可外部配置的入口。一、项目定位只调用 FFmpeg不内置任何编解码器3FUI 与 HandBrake、ShanaEncoder、ShutterEncoder 属于同一桌的常规专业级压制转换软件但它与这些产品的关键区别在于3FUI 只使用 ffmpeg 来执行任务没有内置任何编解码器。用户需要手动放置 ffmpeg 或将其添加到环境变量。从源码结构看这使 3FUI 的参数体系不必随 ffmpeg 更新而频繁变动——ffmpeg 更新后直接替换即可使用性能始终跟随 ffmpeg 本身的最新水平。核心运行规格如下来自 README 与工程配置项目说明发布形式单文件所有数据存于当前目录系统要求Windows 10 1607仅限 x64 / arm64运行环境.NET 10不自带需安装到系统可由更新器自动下载安装基底框架WinForms交互呈现LakeUI 自主维护的基于 DirectX 的渲染引擎硬件要求渲染器需要支持 D3D11 的显卡收费情况所有生产力功能免费个性化功能收费3FUI 专为国内环境设计语言只有简体中文不计划多语言功能。主要特点包括全自由转码与任意自写参数、底层逻辑基于预设方便分享方案、多数界面直接标出参数名、实时计算剩余时间与预估最终大小且可暂停任务、专为批量处理设计且无任务数量限制、不会擅自向输出文件写入软件信息、不碰注册表、不收集任何信息以及完整的色彩管理、大量烧字幕选项、对 AviSynth/VapourSynth 的便捷调用、简易混流与合并、性能监控基于 LibreHardwareMonitorLib、ffprobe/ffplay 调用、质量评测、外部/远程调用和插件支持。概念基础封装格式 ≠ 编码格式这是使用 3FUI 前必须澄清的广泛误区mp4 是封装格式而不是编码格式不存在mp4 这种编码。x264 才是编码格式严格来讲 AVC/H.264 是实现标准libx264 是 CPU 编码器mp4 只是外面的壳其内部可以塞 x264、x265、av1 等主流编码而 mkv 所支持的编码最为广泛。关于硬件编解码规格README 给出了几点关键结论NVIDIA 规格以其官方 GPU 支持矩阵为准Intel QSV 与 AMD AMF 见各自官方文档NVIDIA编解码核心只有代数和个数的差距没有规模差距。单任务场景下高端卡并不比同代低端卡快README 原文以 3090/3060、5090/5050 类比且 ffmpeg 无法在一个任务中正确调用多个编解码核心。若只为编解码买 N 卡买当代最低型号即可。游戏卡并发限制游戏卡对同时调用的数量有限制一般是 8 个约可同时启动 8 个调用 N 卡编码的 ffmpeg 进程专业卡没有此限制。二、外部调用与 FFmpeg 一致的启动参数3FUI 具有和 FFmpeg 一样的参数调用方式可以在终端中启动、在外部程序中传递也可以用快捷方式测试。README 说明这些功能在原理上走的是插件功能需要 5.0 及以上版本。参数作用使用场景-i [string]输入媒体文件首次或已启动软件-3fui_file [string]输入预设文件首次或已启动软件-ffmpeg [string]...把后面的参数全部喂给 ffmpeg首次或已启动软件-test测试用会弹出哔哔首次或已启动软件fullscreen全屏无边框模式未启动软件-3fuiVideoHelperInPointTime传递剪辑入点时间见下-3fuiVideoHelperOutPointTime传递剪辑出点时间见下规则要点README 原文-i和-3fui_file必须一起用表示使用指定预设文件对指定媒体文件进行任务预设文件可以直接指定为 Preset 文件夹即方案管理中的预设名称。-ffmpeg是纯命令模式后面的所有内容都会给 ffmpeg既可传入参数列表也可传入以ffmpeg、ffmpeg.exe或其完整路径开头的完整 FFmpeg 命令行程序会自动忽略其中的可执行文件部分。另外可用-3fuiVideoHelperInPointTime和-3fuiVideoHelperOutPointTime传递剪辑区间参数。源码实现参数解析与预设解析参数处理集中在 启动参数响应_v6.vb。从源码可以看到几个 README 未展开的实现细节预设解析优先级解析预设文件路径传入值若不是完整路径程序会补.json后缀后依次在用户自定义从社区下载预设目录和旧版Preset目录中查找查不到文件时还会尝试按名称匹配开发者内置预设见 读取预设数据。-ffmpeg的引号与转义处理处理FFmpeg参数 对完整命令行再次做 命令行拆分支持引号与反斜杠转义并把含空格或引号的参数按 WindowsProcessStartInfo.Arguments规则重新加引号避免带空格路径在任务队列执行 ffmpeg 时被截断。剪辑区间行为-i-3fui_file同时给出入点/出点时会覆盖预设中的剪辑区间并采用粗剪方法见 添加预设任务若只给了区间参数而没有输入预设则把区间直接写入当前参数面板的剪辑区间控件。-test直接弹出哔哔消息框适合验证快捷方式传参是否成功fullscreen则在 ApplicationEvents.vb 中检测命令行包含fullscreen时生效。三、远程调用UDP 端口监听把 3FUI 变成局域网编码节点在设置中打开远程调用后3FUI 监听指定端口收到消息即开始任务消息数据内容与启动参数完全一致。这意味着 3FUI 可以部署在局域网中作为编码机从局域网任意电脑通过其他程序发任务给它——只要 3FUI 能访问文件即可远程访问同样成立需要 5.0 及以上版本。注意发起程序必须使用 UDP 协议发送默认端口 10591。源码实现位于 端口监听_v6.vb几个可验证的细节默认端口定义在 设置_v6.vbPublic Property 监听的端口 As String 10591设置页 Form_v6_设置_远程调用.vb 修改后调用设置远程监听/设置远程监听端口生效。端口规范化 规则解析失败、端口为 10590被改写为 10591、或超出 1–65535 范围时一律回退到 10591。监听循环用UdpClient接收消息1 秒接收超时把 UTF-8 文本切回 UI 线程后交给 启动参数响应_v6.处理接收的参数 解析——也就是说远程消息与启动参数走的是同一套解析器README 中消息数据内容与启动参数是一样的在代码层面成立。启动失败会弹窗提示并把监听开关复位见 启动客户端。四、插件开发反射加载 委托通信的宿主协议插件通过反射加载不需要引用 3FUI只通过一组HostCall_委托与宿主通信。开发时创建一个 .NET 10 Windows 窗体或 WPF项目并在程序集的Entry类中提供共享/静态的Entry方法Public Class Entry Public Shared Sub Entry() 初始化、注册界面和队列事件 End Sub End Classpublic class Entry { public static void Entry() { // 初始化、注册界面和队列事件 } }4.1 添加界面WinForms / WPF 面板Public Shared Property HostCall_AddCustomWinformPanel As Action(Of String, Control) Public Shared Sub SetHost_AddCustomWinformPanel(action As Object) HostCall_AddCustomWinformPanel CType(action, Action(Of String, Control)) End Sub Public Shared Property HostCall_AddCustomWpfPanel As Action(Of String, UIElement) Public Shared Sub SetHost_AddCustomWpfPanel(action As Object) HostCall_AddCustomWpfPanel CType(action, Action(Of String, UIElement)) End Sub 调用示例 HostCall_AddCustomWinformPanel?.Invoke(我的插件, New MyUserControl()) WPF 使用HostCall_AddCustomWpfPanel?.Invoke(我的插件, New MyWpfControl())public static Actionstring, Control HostCall_AddCustomWinformPanel { get; set; } public static void SetHost_AddCustomWinformPanel(object action) HostCall_AddCustomWinformPanel (Actionstring, Control)action; public static Actionstring, UIElement HostCall_AddCustomWpfPanel { get; set; } public static void SetHost_AddCustomWpfPanel(object action) HostCall_AddCustomWpfPanel (Actionstring, UIElement)action; //调用示例 HostCall_AddCustomWinformPanel?.Invoke(我的插件, new MyUserControl());宿主侧的实现见 插件管理.vbWinForms 控件直接挂为主窗体的插件选项卡WPF 的UIElement会被包进Integration.ElementHost再挂入因此插件可以同时使用两种技术栈。4.2 添加编码任务Public Shared Property HostCall_AddMissionToQueueWithArgs As Action(Of String, String, String, String) Public Shared Sub SetHost_AddMissionToQueueWithArgs(action As Object) HostCall_AddMissionToQueueWithArgs CType(action, Action(Of String, String, String, String)) End Sub Public Shared Property HostCall_AddMissionToQueueWith3fuiFile As Action(Of String, String, String, String) Public Shared Sub SetHost_AddMissionToQueueWith3fuiFile(action As Object) HostCall_AddMissionToQueueWith3fuiFile CType(action, Action(Of String, String, String, String)) End Sub 参数依次为ffmpeg 参数不要以 ffmpeg 开头、显示名称、输出路径、输入路径可空 HostCall_AddMissionToQueueWithArgs?.Invoke(args, name, output, input) HostCall_AddMissionToQueueWith3fuiFile?.Invoke(presetPath, name, output, input)public static Actionstring, string, string, string HostCall_AddMissionToQueueWithArgs { get; set; } public static void SetHost_AddMissionToQueueWithArgs(object action) HostCall_AddMissionToQueueWithArgs (Actionstring, string, string, string)action; public static Actionstring, string, string, string HostCall_AddMissionToQueueWith3fuiFile { get; set; } public static void SetHost_AddMissionToQueueWith3fuiFile(object action) HostCall_AddMissionToQueueWith3fuiFile (Actionstring, string, string, string)action; HostCall_AddMissionToQueueWithArgs?.Invoke(args, name, output, input); HostCall_AddMissionToQueueWith3fuiFile?.Invoke(presetPath, name, output, input);宿主侧对应 使用命令行添加任务到编码队列 与 使用预设文件添加任务到编码队列预设文件路径的解析直接复用了启动参数那套读取预设数据所以插件里传预设名/路径的行为与-3fui_file一致。4.3 编码队列事件6.1.28 起插件实现SetHost_SubscribeQueueEvents注册器类型是Action(Of String, Object)C# 为Actionstring, object。调用注册器时第一个参数是事件筛选器第二个参数必须是Action(Of String, String)C# 为Actionstring, string回调回调收到的第一个参数是事件名第二个参数是 JSON 字符串。Public Shared Property HostCall_SubscribeQueueEvents As Action(Of String, Object) Public Shared Sub SetHost_SubscribeQueueEvents(action As Object) HostCall_SubscribeQueueEvents CType(action, Action(Of String, Object)) End Sub Public Shared Sub Entry() HostCall_SubscribeQueueEvents?.Invoke(*, AddressOf OnQueueEvent) 也可以只订阅一个事件HostCall_SubscribeQueueEvents?.Invoke(task.completed, AddressOf OnQueueEvent) End Sub Private Shared Sub OnQueueEvent(eventName As String, json As String) 按需反序列化 json不要在这里阻塞编码线程 Dim data System.Text.Json.JsonDocument.Parse(json) Dim taskId data.RootElement.GetProperty(task).GetProperty(id).GetString() End Subpublic static Actionstring, object HostCall_SubscribeQueueEvents { get; set; } public static void SetHost_SubscribeQueueEvents(object action) HostCall_SubscribeQueueEvents (Actionstring, object)action; public static void Entry() { HostCall_SubscribeQueueEvents?.Invoke(*, OnQueueEvent); //只订阅完成事件HostCall_SubscribeQueueEvents?.Invoke(task.completed, OnQueueEvent); } private static void OnQueueEvent(string eventName, string json) { using var data System.Text.Json.JsonDocument.Parse(json); var taskId data.RootElement.GetProperty(task).GetProperty(id).GetString(); }注意事项README 与源码一致回调可能来自后台线程插件应自行切回 UI 线程回调中的异常会被宿主隔离不会中断编码队列——见 注册编码队列事件 中的逐回调Try/Catch与插件回调异常不得影响编码队列注释。筛选器支持*与事件名精确匹配不区分大小写空筛选器等价于全部。支持的事件名事件名触发时机task.added任务加入队列包括恢复未处理任务task.started任务实际开始执行task.paused任务暂停成功task.resumed任务恢复成功task.stopped任务被停止task.completed所有编码阶段成功完成task.failed编码阶段退出码非零或发生异常task.log新增一条非进度日志task.progress新增一条进度日志宿主按约 1 秒节流task.removed任务从队列移除事件 JSON 的主要字段为eventName、timestamp、task和log。task包含id、name、inputPath、outputPath、status、statusCode、progress、progressText、currentStage、realtimeOutput和nonProgressOutputtask.log/task.progress额外提供log.sequence、log.time、log.text、log.category、log.categoryCode、log.isError与log.stage。事件序列化的字段结构可在 编码队列事件处理 中逐字段核对task.log与task.progress的分流在 编码任务_v6.vb 中触发。进度日志经过宿主节流普通日志不会触发task.progress因此可按需选择低频的task.log或完整的task.progress。4.4 媒体流选择器参数依次为文件路径、视频/音频/字幕结果目标对象、输入文件索引以及三个已选流索引字符串。目标对象需要提供Text属性所有参数均可传Nothing/null。Public Shared Property HostCall_MediaStreamVisualSelector As Action(Of String, Object, Object, Object, String, String, String, String) Public Shared Sub SetHost_MediaStreamVisualSelector(action As Object) HostCall_MediaStreamVisualSelector CType(action, Action(Of String, Object, Object, Object, String, String, String, String)) End Sub HostCall_MediaStreamVisualSelector?.Invoke(filePath, videoTarget, audioTarget, subtitleTarget, 0, 0, 0, )public static Actionstring, object, object, object, string, string, string, string HostCall_MediaStreamVisualSelector { get; set; } public static void SetHost_MediaStreamVisualSelector(object action) HostCall_MediaStreamVisualSelector (Actionstring, object, object, object, string, string, string, string)action; HostCall_MediaStreamVisualSelector?.Invoke(filePath, videoTarget, audioTarget, subtitleTarget, 0, 0, 0, );宿主侧会弹出 Form_v6_媒体流选择器 并把选中结果写回目标对象的Text属性见 打开媒体流可视化选择器。4.5 插件的安装与发布、加载流程生成项目后将输出目录中与项目同名的.dll后缀改为.3fui.dll放入 3FUI 程序目录的Plugin文件夹并重启该文件夹可能需要手动创建插件依赖的其他程序集也要一起复制但不要改它们的扩展名。从 启动时加载插件 与 加载单个插件 可以看到加载协议的实际约束只扫描程序目录下Plugin/*.3fui.dll要求存在{程序集名}.Entry类且其中有一个共享/静态的Entry方法VB 用SharedC# 用static找不到会弹窗并跳过初始化宿主回调通过 注入宿主回调 按方法名SetHost_AddCustomWinformPanel、SetHost_AddCustomWpfPanel、SetHost_AddMissionToQueueWithArgs、SetHost_AddMissionToQueueWith3fuiFile、SetHost_MediaStreamVisualSelector、SetHost_SubscribeQueueEvents反射注入因此插件无需引用 3FUI 的程序集即可通信单个插件加载失败只会弹窗提示不会阻塞其他插件。五、Agent 智能体自定义模型、推理级别与上下文总量3FUI Agent 是专属于 3FUI 的副驾驶可接入任何兼容 OpenAI SDK 的端点来使用任何模型能控制整个参数面板、协助管理任务并具备联网能力、文件系统访问、读取文本文件和图片、使用 Windows PowerShell 终端的能力对话支持中途切换模型数据完全存于本地并与所有模型和端点共享交互为纯本地渲染的流式展现支持基础 Markdown 语法。对于端点/models接口未返回的模型或需要显式指定推理级别/上下文总量的场景可手动创建并编辑Agent/CustomModels.json——3FUI 不会主动创建或覆盖这个文件修改后在 Agent 页面点击重载连接即可重新读取。{ version: 1, global: { models: [ { id: global-custom-model, reasoning_efforts: [low, medium, high], context_window_tokens: 200000 } ] }, endpoints: [ { endpoint: https://api.example.com/v1, models: [ { id: endpoint-custom-model, reasoning_efforts: [none, low, medium, high, xhigh], context_window_tokens: 1000000 }, { id: model-with-default-efforts, reasoning_efforts: [] } ] } ] }字段与规则README 与 Agent自定义模型配置_v6.vb 源码一致global.models应用到所有端点endpoints中的配置只应用于endpoint与当前 Agent 端点地址一致的项目比较时忽略地址末尾的/和大小写见 端点匹配。id是实际发送给接口的模型名称。新增模型的reasoning_efforts可以省略或留空此时使用 3FUI 的默认推理级别。context_window_tokens是该模型的上下文总量单位为 token省略或设为0时继续使用 3FUI 内置值不能使用负数源码中负数会直接抛出格式错误。自定义模型会与端点返回的模型合并并按id去重同一模型在全局、指定端点或端点响应中重复出现时推理级别合并去重指定端点中大于0的上下文总量会覆盖同一模型的全局值见 合并模型项。如果端点的/models接口不可用但当前配置提供了可用模型Agent 会直接使用自定义模型列表配置文件格式无效时不会影响端点原有模型Agent 页面会显示对应提示。源码中的额外约束文件路径固定为程序目录下的Agent/CustomModels.jsonversion必须为1文件大小上限 1 MBJSON 解析允许注释与尾逗号见 加载。补充一点源码级背景3FUI 内置了一张推理级别能力表在端点未显式返回能力时对已知模型追加额外的推理级别当前规则为gpt前缀的模型额外支持xhigh见 Agent推理级别能力表_v6.vb。因此reasoning_efforts中的xhigh并非只有自定义配置能给出内置表同样会参与合并。六、问题反馈的正确姿势README 的反馈渠道一节给出了明确原则这里同样值得强调3FUI 不针对非正常操作做预防此类操作极易引发报错故意卡 bug 造成的损失与开发者无关。反馈问题请优先走 Q 群渠道群号见 README 开头不要在 B 站评论区汇报问题。不要把错误信息发给生活 AI去算卦ffmpeg 的输出并非所有情况都有具体原因尤其是功能未支持参数不正确这类情况没有完整上下文时任何模型都难以猜准。正确做法把完整错误信息和命令行发给技术人员不想暴露文件名可手动抹掉如有条件提供输入文件的详细参数很多播放器可以查看。七、许可、引用与新手学习资源3FUI 使用MIT开源许可见 LICENSE.txt可以自由使用和分发README 声明仅在 GitHub 开源其他平台的同源代码并非官方。多语言需求可自行开仓库维护所有字符串并在 MIT 许可范围内行使权利。引用程序集及其许可证引用程序集许可证作用LakeUIGPL-3.0-only界面主框架版权所有WindowsAPICodePack微软软件许可证提供更舒适的文件夹选择对话框LibreHardwareMonitorLibMPL-2.0LHM 性能监控Microsoft.Agents.AI.OpenAIMITAgent 基底框架和 OpenAI 支持新手入门方面README 建议先系统学习视频基础参数分辨率、帧率、色深、色度采样、封装与编码的区别等再学习 3FUI 专属教程文中推荐了极客湾、影视飓风的科普视频以及终末诗的视频压缩教学与 3FUI v5/v6 入门教程具体链接见 README 原文随版本更新。学习完基础概念后再使用 3FUI 的自由参数能力能显著降低试错成本。小结3FUI v6 的技术面可以归纳为四条主线其一纯 FFmpeg 外壳的设计让它始终跟随 ffmpeg 的最新能力代价是对使用者有基本参数要求其二与 FFmpeg 一致的启动参数加上 UDP 远程调用使它既能作为命令行工作流的一环也能作为局域网编码节点部署两者共用同一套参数解析器其三插件协议以反射 委托实现覆盖自定义界面、任务注入、队列事件订阅和媒体流选择四类宿主能力且宿主对插件异常做了隔离其四Agent 智能体通过本地CustomModels.json提供了模型级的推理级别与上下文总量控制入口。以上所有行为均可在 FFmpegFreeUI/功能/ 目录下的对应源码文件中逐条核对。赞分享桌面应用音视频视频处理【免费下载链接】FFmpegFreeUI3FUI 是 ffmpeg 在 Windows 上的轻度专业交互外壳收录大量参数界面美观交互友好。此项目面向国内使用环境让普通人也能够轻松压制视频和转换格式。项目地址https://gitcode.com/gh_mirrors/ff/FFmpegFreeUI点击查看免费下载相关推荐Agent Zero 模型配置完整指南密钥与端点一次配到位Agent Zero 模型配置完整指南密钥与端点一次配到位 Agent Zero 模型配置并不复杂把 API 密钥和模型端点一次填好你的 Agent 马上人工智能大模型AI AgentAgent 框架自主智能体多智能体工具调用MCP 服务浏览器控制3FUIFFmpegFreeUI预设系统详解从可序列化预设模型到阶段化 FFmpeg 命令行生成3FUIFFmpegFreeUI预设系统详解从可序列化预设模型到阶段化 FFmpeg 命令行生成 FFmpegFreeUI3FUI的预设系统是把图形界桌面应用音视频视频处理tsParticles Destroy 外部交互插件配置、源码实现与集成实战tsParticles Destroy 外部交互插件配置、源码实现与集成实战 tsParticles 的 destroy 外部交互插件让鼠标悬停或 HTML前端上一篇oh-my-openagent 实战为 PHP 项目配置 Intelephense LSP安装、配置、验证全流程下一篇告别Jimp图像处理烦恼2025最全错误解决方案指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表