找到400732个回复
@tasy5kg,aom 支持,svt-av1 有这个选项,但却是摆设。。
就算编码器支持了,不受控地频繁设立 I 帧,还是很容易使体积膨胀,所以我宁愿手动挑出尽可能少但又最重要的帧作为关键帧,尽最大可能缩减体积,同时又能并行转码多个片段,充分利用 CPU 多核。(只转一个吃不满性能,同时转两个片段再合并只需 60%~80% 时间)
@无名啊,记得AV1好像是自带场景变化检测的功能啊
https://qqleyi.com路过
我是晨曦,我喂自己袋盐!
@胡椒舰长,完全没有必要。画质吧只能看到东西在动,看不出来是个人形。是为了压缩而压缩,并不是为了电影而压缩。
先用 ffmpeg 的 scene detection,或者其他 av-scenechange 库之类的,算出每一帧变化幅度。
再想好视频要多久才设立一个关键帧,供拖拽进度条定位。(我这里设计平均 15 秒,允许间隔上一帧 1~30 秒。后面试试平均 20 秒,允许间隔 10~30 秒)
用动态规划 + 单调队列 + 路径回溯,能快速挑选出累计变化幅度最大的 576 帧(144 分钟 / 15 秒),同时满足相邻关键帧间隔 1~30 秒。
抽象出的算法描述,可见《一个小算法题:如何挑选总和最大的若干个数字?》。后面我也整理成可嵌入脚本的代码,放到那个帖子里。
现在用 Python 实现的,跑一次要 10~20 GB 内存,Mac Mini + 16GB 都吃不消,用的 Win Mini + 48GB 大内存跑的。。
想改写成 C 代码,方便用 tcc 嵌入转码视频脚本,速度又快又省内存,单脚本文件放到其他环境也方便。。
但发现 macOS 不支持运行 tcc。。现在不知用啥写较好。。
@虎老会泳游,受画质约束的话,现在做不到十几 KB 吧。。
以后技术升级为 AI 编码后,说不准真能很小。。
现在一国外大佬,AI 编码音频,能做到 2~3 Kbps 时还很清晰。。
就是算力要求太高,要 N 卡独显才能跑的动。。
@无名啊,效果不错,“分析原片所有帧相似度,按需挑出几百帧变化幅度最大的”是怎么实现的?