FFmpeg GUI
截图
网页版
WPF桌面版
架构
项目名 | 项目名(中文) | 介绍 |
---|---|---|
Core | 核心 | 提供Host和WPF、Web的契约以及公共方法 |
Host | 主机 | 对FFmpeg进行包装,实现其功能,并通过NamedPipe进行发布 |
WebAPI | 服务端 | 使用ASP.NetCore实现的服务器 |
Web | Web客户端 | 使用Vue.js实现的网页端 |
WPF | 桌面GUI | 桌面端的GUI实现 |
WebApp | 桌面客户端 | 对WebAPI、Web和Host进行包装的、使用内置浏览器显示的、基于WinForms的桌面客户端(不再使用) |
构建与部署
准备工作
- 确保安装了 .NET 6 SDK:
- 确保安装了npm(Node.js):
- 确保在
bin
目录中放置了ffmpeg二进制文件(shared版):下载 。测试使用的版本为4.4.1:下载 。共有三个exe文件和8个dll文件。 - 确保在
/bin
目录中放置了MediaInfo.dll:下载
自动构建
执行PowerShell:./build.ps1
。
若提示“无法加载文件 ******.ps1,因为在此系统中禁止执行脚本”,需要首先在管理员模式下运行PowerShell并执行set-executionpolicy remotesigned
,然后按Y确认。
生成文件位于Generation/Publish
下,其中WebPackage
为Web部署包,WPF
为桌面程序。
部署基于Windows +IIS的Web版本
- 进入
Generation/Publish/WebPackage
- 编辑
api
的appsettings.json
,主要修改InputDir
和OutputDir
项,指定输入和输出目录。其它修改项详见文件内的注释。 - 在合适的位置新建一个网站文件夹,将
Generation/Publish/WebPackage
内的所有内容复制到新建的文件夹之中。 - 确保安装了DotNET 6 Hosting Bundle,并在Windows中启用了IIS。
- 在IIS中新建网站,指定物理目录为之前新建的目录。右键其中的api目录,设置为虚拟应用程序。
- 运行Host的exe,然后打开设置的url即可使用。
-
若要在IIS中启用自动启动Host功能,还需要:
- IIS > 应用程序池。
- 为网站选择高级设置。
- 将标识(Identity)更改为 LocalSystem。
- 重启 IIS。
-
若输入或输出文件夹位于网络位置等IIS无权限的位置,则需要:
- 设置
appsettings.json
中的InputDirAccessable
和/或OutputDirAccessable
为false
,告知程序无权限访问,那么后端将通过Host对文件进行访问。 - 关闭通过WebAPI自动启动Host功能,因为自动启动的Host将继承IIS的权限,依旧无法访问。
- 这种模式下,HTTP上传和下载功能将不可用(懒得写)。
- 设置
-
Host启动参数:
-s (默认: false) 注册开机启动 -u (默认: false) 取消开机启动 -d (默认: false) 设置工作目录为程序所在目录 --help 显示帮助信息
开发注意事项
- Clone仓库后,只需安装好相关SDK,即可进行构建,无需额外设置。
libs
目录中二进制文件来自于:FzLib和Wpf.Notifications,均为开源产品。