|
|
本帖最后由 kli 于 2026-7-1 08:38 编辑
找 AI 用 python 写的 FFmpeg GUI 外壳
契机是 HandBrake 又又又又又又又又又换了.NET 10(软件开发框架) ,我的老Windows 10 ltsc 2021 装了.NET 10 ,运行 HandBrake还是要报错, 我当时就在想,一个破 FFmpeg 的外壳, 需要这么追新吗?
然后在52pj看到了另外一个 FFmpeg的 gui外壳 https://www.52pojie.cn/forum.php?mod=viewthread&tid=2099752&highlight=FFmpeg
也是用的.NET 10 ,我又用不了 -- 20260613 换方法运行体验了下上面这个,感觉好难用啊,进界面是队列,但是队列界面不能添加文件,如此种种....
我一气之下就气了一下, 借着这个拼接命令的灵感 ,找 ai 根据我以前用的一个bat(里面是我各种FFmpeg命令的 的模版,每次都手动改了goto1234保存在发送文件运行) 写一个简易GUI
第一个版本居然就实现了我大部分的想法
后续又和Ai聊了半个月添加了各种功能,感觉已经实现了HandBrake 90% ,启动还快
第二页是轻量的mkvtoolnix, 没有实现轨道的默认 语言 这些设置, 只有简单的流复制和转码合并 ,画中画功能是聊了很久才聊成功的, 免费的ai不行,我也不会写代码,找bug都没办法
后续也是有点聊不动了,主要代码量有点多了,每次免费ai都偷工减料要我自己替换,不给我一次输出全部的,python的缩进又严格,天天出bug
可能不会更新别的功能了,现在的我自己是够用了,在复杂点我都直接去用shotcut了
用的github预编译自动打包的,简单测试了下,好像没问题
需要自己准备FFmpeg全家桶
https://github.com/BtbN/FFmpeg-Builds/releases
推荐下载share版本的,因为我3个程序都用上了,共享运行库的版本体积小点,就是文件琐碎点
单文件版的每个都包含了全部运行库,加起来多了2倍体积,不推荐
GUI外壳下载地址
https://wwbow.lanzouu.com/b009i236id
密码:ccy5
有小更新,画中画从视频流添加了图片支持,用来添加水印,以前的那个也可以,只需要先把图片转成一个视频...
github地址,有pyw脚本源码,太长了,贴不出来,想要自己找ai话聊改功能的自己去下载吧
https://github.com/kli2013/FFmpegLiteGUI
小更新了下,添加了画中画时从视频流图片支持
画中画现在可以添加图片作为水印,初衷是舞台多机位融合的,后来才想起来最常用的功能是打水印
20260601更新了一些功能
1、mpv预览,mpv播放器可以拖动进度条,这样可以填截取时间
2、画中画功能添加了简易的绘制框,这样就能代替预览查看主从视频的位置和偏移,绘制和预览的时候会自动应用当前的裁剪属性(锁定绘制比例),应用后会自动更改缩放里的数值,
如果绘制框没有实时应用新的缩放比例,先保存一下重新打开,可以用iw/2测试,这个时候绘制框和预览框应该是显眼的一长条,
如果要用新裁剪重新绘制矩形,先关闭上一次的缩放(取消勾选)
多个从视频位置都可以相互预览
-20260624更新
第一页转换页面也加上了水印功能,在高级里,以前一直围着第二页合并页的画中画打转,忽略了第一页里的批量加水印应用场景
-20260701更新
1、可视化裁剪增加根据时间重新获取画面的功能,在外部设置页面启用了截取并设置了时间,可视化裁剪会直接使用该时间启动窗口
2、截取添加了 -ss 在 -i 之后的精确到帧模式(必须转码), 以前只是简单的集成截取,默认的 -ss 在 -i 之前的快速模式,这个模式可以copy无损截取,就是前后可能2-3秒出入,基于关键帧就近原则
3、附带了一个外挂程序,可以快速的给水印(画中画)编辑运动轨迹,支持多轨道一起,但是不建议搞太多,因为命令太长可能会达到FFmpeg的命令字符上限
尝试集成到主程序里的,但是每个轨道都要单独打开编辑,感觉太慢了,所以还是独立出来,反正用的人估计也不多
4、因为附带了外挂程序,所以改用文件夹模式打包,解压后结构是 程序exe和一个子文件夹_internal
FFmpeg三件套可以放exe同目录,也可以放_internal子文件夹里,当然最好的地方是系统的环境变量里, 环境变量里可以给其他程序用
报告一些已知bug
1、偶尔在子窗口打开太多又忘了关闭时,会窗口沉底,alt+tab切换不出来也唤醒不了,可以在任务管理器里找到进程右键置顶唤醒, 或者直接结束进程重新打开
2、因为前期集成水印功能时,为了解决动态水印和主视频时间不匹配,使用了无限循环,但是会结束不了转换进程(因为在无限输出),所以引入了shortest=1参数, 作用是按最短时长的视频结束, (主视频<无限循环) = 按主视频时间
shortest=1参数导致了一个问题是,
如果截取和水印功能一起使用,截取的-t会被shortest=1行为覆盖,转换结果会错乱,
比如一个15秒的主视频, 从3秒开始截取,同时开启水印(画中画), 转换结果会还是15秒, 不过会在12秒时定格, 也就是画面可能正常截取了,但是音频没有
其他错乱情况一时忘了
感觉要十分精通FFmpeg命令才能解决这么复杂的情况, 我截取功能用的太少 ,搅尽脑汁搞定水印的各种显示行为都谢天谢地了
总之,使用截取时不要同时打水印(画中画) ,真有这种复杂需求,最好分步骤先预处理或者直接使用其他非线性视频编辑器(pr、shotcut、剪映)
-----附赠2个图片处理小程序(转换和切割),逻辑都是先设置模板,然后按当前模板导入新图片到列表,列表里可以是不同的转换设置,
比如同一批图片有的想左转有的想右转,其他大部分转换程序都必须转完一批在重新添加一批,我这个程序的设计思路就可以一起添加完在同时转换
没有图片拼接是我不知道怎么把我的拼接思路描述给ai....(平时拼图片的情况少,没有相关体会)
|
|