Project Icon

WebmGenerator

多功能视频处理工具 支持webm、mp4和gif输出

WebmGenerator是一款开源的视频处理工具,可用于剪辑、过滤和合并视频片段。支持webm、mp4和高质量gif输出,具备实时效果过滤和场景转场功能。该工具提供交互式剪辑选择、YouTube-dlp集成和自动场景隔离等特性,方便用户处理视频。此外,WebmGenerator还支持关键帧滤镜调整、自动比特率调整和自定义输出格式,适用于各类视频编辑需求。

WebmGenerator

UI 预览

Windows 下载地址:https://github.com/dfaker/WebmGenerator/releases

这是一个用于剪辑、过滤和拼接视频片段的工具,支持 webm (VP8, VP9)、mp4 (x264, H.265, SVT AV1) 和高质量 gif 输出,包括实时效果过滤和场景间过渡效果。

wiki 中有一些可能的输出示例

外部依赖:

所有这些应放在与脚本相同的文件夹中或 PATH 环境变量中。

Python 依赖:

要直接使用 Python 3 运行,需要以下包:

  • python-mpv
  • pygubu
  • numpy
  • pathvalidate
  • tkinterdnd2

pip 可以用一条命令为你安装所有这些:

pip3 install -r requirements.txt

对于 Linux 用户,可能没有安装 tkinter,以 Ubuntu 为例,运行以下命令安装:sudo apt-get install python3-tk

或者,Windows 用户可以使用最新的打包版本:https://github.com/dfaker/WebmGenerator/releases

使用方法

运行 webmGenerator.py 或直接将视频文件拖放到 webmGenerator.py 上启动。

启动 - 初始界面

初始界面

程序最初在"剪辑"选项卡中打开,左侧面板有一个切片设置框:

  • 设置切片长度 - 设置初始添加子片段时的长度,之后可以随时调整大小。
  • 设置目标长度 - 你想要达到的最终时长。
  • 设置目标修剪 - 如果使用过渡效果在片段之间交叉剪辑时预期的片段重叠量,如果打算使用硬切,则设为零。
  • 设置拖动偏移 - 拖动预览时,当前播放位置从子片段末尾向后偏移的量(按住 Ctrl 键则从开头向前偏移)。较大的值在对齐视频间事件时很有用。

下方是:

  • 播放音量控制。
  • 状态行 00.00s 0.00% (-0.00s) 显示你已选择的总秒数、达到目标时长的百分比,以及目标修剪预计会从总时长中扣除的秒数(例如,在片段之间添加 0.25 秒交叉淡入淡出会扣除的时间)。
  • 进度指示器显示你距离达到目标长度还有多远,当选定片段的总时长超过目标长度时会变成红色。

下方是你的源视频框,你可以点击加载视频来加载一个或多个源视频进行剪辑,或快速清除所有子片段选择以重新开始剪辑过程。

剪辑片段 - 子片段选择

子片段选择

加载片段后,底部的深灰色面板会变成视频时间轴,你可以在任何地方左击或点击并拖动来浏览视频。

右击会弹出上下文菜单,允许你:

  • "添加新子片段" - 将在您右键单击的位置周围添加一个新的待剪辑子片段到时间轴上,初始时其持续时间与您在"切片长度"中设置的相同。
  • "删除子片段" - 移除您右键单击位置下的子片段。
  • "克隆子片段" - 复制您右键单击位置下的子片段。
  • "复制子片段" - 将您右键单击位置下子片段的时间戳复制到内部剪贴板。
  • "粘贴子片段" - 从内部剪贴板粘贴时间戳到您右键单击位置下的子片段,可能粘贴到不同的视频上。
  • "扩展到兴趣标记" - 将您右键单击位置下的子片段延伸,使起始和结束标记与下一个兴趣或场景变化标记对齐。
  • "添加兴趣标记" - 在时间位置添加可视指示器,不影响输出但在观看和决定代表性场景时很有用。
  • "微调到最低误差±#秒" - 尝试移动起始和结束标记(不超过前后1-2秒),以找到制作循环视频的"完美循环",将在后台处理并在完成时更新您右键单击位置下的子片段。
  • "在此处查找最多#秒的循环" - 扫描您在时间轴上右键单击的位置周围,找到最多#秒长的最佳"完美循环"。

添加片段后,您可以拖动蓝色和红色的起始和结束标记来改变子片段的起始和结束点,播放器会跳转到您拖动起始或结束点的位置。

当起始和结束标记被点击后,它会保持选中状态并显示白色边框,可以使用左右箭头键精确地将选中的标记向前或向后移动一帧。

标记之间的绿色中央条也可以拖动,以在保持相同子片段持续时间的同时前后移动整个时间窗口。

在时间轴上滚动鼠标滚轮可以放大和缩小,然后可以使用时间轴窗口顶部的灰色条来滑动查看放大后的片段的早期或晚期部分。

在子片段底部的绿色选择条上滚动鼠标滚轮将前后移动该子片段(包括起始和结束点),同时保持总持续时间不变。

更多剪辑 - 标记和大小目标

上图显示了使用"添加兴趣标记"添加的时间轴标记的存在,以及多个已添加和调整大小的子片段。注意,选择这三个部分后,最终输出时长为1分56秒,因为这超过了选定的"目标长度",所以进度条呈红色。

添加效果 - 滤镜

一旦定义了所有子片段,您可能想使用"滤镜"选项卡添加视觉滤镜、降噪或裁剪,但如果不需要应用任何滤镜,可以跳过此选项卡。

右侧窗格实时显示应用所选滤镜后的输出视频预览。

左侧窗格显示:

  • 子片段导航块,显示当前子片段名称、时间跨度和在选定片段顺序中的位置,此块左右两侧的箭头允许您浏览已选择的子片段。
  • 清除、复制和粘贴按钮,分别用于移除当前片段的所有滤镜、将当前子片段的所有滤镜复制到剪贴板以供后续粘贴,以及将当前复制的滤镜粘贴到新片段上。
  • 滤镜选择框,包含可用滤镜的下拉列表和一个将所选滤镜添加到当前子片段的按钮。

下方是应用于当前子片段的滤镜堆栈,此片段已添加了"色相"调整和预配置的"libpostproc"滤镜,用于对编码质量差的视频进行降噪和去块。

每个滤镜下方的按钮可用于移除、启用或上下移动滤镜顺序,如果滤镜有任何输入选项,它们会显示为这些按钮下方的输入字段。例如,图中的色相滤镜已配置为将"h"色相值偏移0.42,并将"s"饱和度值增加3.4。

调整时间效果 - 时间轴滤镜

某些过滤器值的左侧有两个按钮"T"和"S"。点击"T"将停止使用提供的过滤器值,并将参数切换为使用时间轴关键帧值。按"S"则选择该参数,并在下方时间轴上显示该参数当前的关键帧值。

示例展示了正在使用的叠加过滤器,"x"和"y"坐标参数都启用了时间轴关键帧值。"y"参数被选中,并设置了4个关键帧值,使叠加的蝙蝠侠面具在场景中缓慢上移,跟随演员的脸部。

右击下方时间轴会显示一个菜单,允许添加或删除关键帧值。滚动鼠标滚轮将增加或减少现有关键帧值,并定位到剪辑中的关键帧时间——建议在此操作期间降低预览速度以进行更精确的调整。

旋转和对齐的高级控制 - 时间轴过滤

目前时间轴有一些相当实验性的控制,我们无疑会对它们进行改进:

在下方时间轴栏:

  • "左"、"右" - 逐帧向前和向后定位。
  • "Shift+左"、"Shift+右" - 大幅向前和向后定位。
  • "Ctrl+左"、"Ctrl+右" - 在已定义关键帧之间的中点向前和向后定位。
  • "上箭头"、"下箭头" - 在当前时间为选定属性添加新关键帧,如果此时已存在关键帧则增加或减少其值。
  • "N" - 跳转到当前放置的关键帧之间最大间隔的中点。
  • "I" - 添加样条插值的中间关键帧,为您的关键帧添加更多插值点并平滑动作,每秒视频将添加0-23个插值关键帧,按键可增加计数,然后循环回零。

当在视频播放器上选择角度属性时:

  • "Ctrl+Shift+左键单击+拖动鼠标" - 绘制一条线,释放鼠标时将创建一个关键帧,旋转视频使该线与最接近的90度角对齐,使您刚刚绘制的线变为水平或垂直。
  • "Ctrl+左键单击+拖动鼠标" - 与上述相同,但在添加旋转视频关键帧后,跳转到当前放置的关键帧之间最大间隔的中点。

当在视频播放器上选择X或Y属性时:

  • 在视频上右击并选择"设置X和Y扭曲的目标位置",这将是进一步点对齐的位置。
  • 在视频上"左键单击",您点击的点将根据当前关键帧递增,有效地将该点移动以匹配在"设置X和Y扭曲的目标位置"中设置的红色目标的X或Y位置。
  • "Ctrl+左键单击" - 与上述相同,但在添加移动的X或Y视频关键帧后,跳转到当前放置的关键帧之间最大间隔的中点。

拼接 - 排序和转场

最后是"合并"选项卡,如果您在当前剪辑会话中没有访问过它,首次访问时它会自动将所有当前剪辑添加到序列中。

顶部的"可用剪辑"框显示所有当前选择的子剪辑,以及应用过滤器后它们的预览效果,每个下方的按钮用于将它们添加到下方的"序列"框中。

"合并风格"下拉菜单允许您在将所有选定剪辑连接在一起,或将它们作为单独的独立剪辑输出之间切换。

"序列"面板是选定子剪辑在输出中出现的顺序,左右箭头按钮在最终视频顺序中向前和向后移动子剪辑,"删除"按钮从计划序列中完全移除剪辑,同时将其保留在顶部的"可用剪辑"中以供稍后重新添加。

由于我们处于序列模式,我们有两个选项来控制剪辑之间的淡入淡出效果(如果有的话):

  • "转场持续时间" - 剪辑之间的转场效果持续多长时间,如果您想要硬切换,请将其设置为零。
  • "转场风格" - 剪辑之间转场效果的外观,示例可在 https://trac.ffmpeg.org/wiki/Xfade 查看 在下方框架中,我们有输出剪辑的配置:
  • 输出格式 - 允许在mpv、webm和gif之间选择输出格式。
  • 输出文件名前缀 - 将添加到最终视频文件名开头的名称,如果可能的话,会自动从输入视频中猜测。
  • 最大文件大小 - 允许输出的最大大小(以MB为单位),如果最终视频大于此大小,将尝试以降低的质量(或对于.gif文件降低大小)再次编码,如果设置为零,则允许任何大小的输出。
  • 大小匹配策略 - 如何处理不同大小的输入视频。
  • 限制最大尺寸 - 最终视频的最大输出宽度或高度(以较大者为准),如果输出更大,将会缩小,如果更小则保持不变。
  • 音频通道 - 控制输出中音频的存在或缺失,包括无声,以及各种单声道和立体声比特率。
  • 速度调整 - 将对最终剪辑进行加速处理,同时保持声音真实,可能的最小和最大值为0.5x和2x,但通常超过0.12x会变得令人分心。

制作视频 - 编码

编码

当你对序列满意时,可以点击"编码"开始编码过程,编码运行的进度将在底部显示为进度条,提交的编码作业按顺序处理。

该工具首先会对子剪辑进行剪切并应用滤镜,然后保存在名为tempVideoFiles的临时文件夹中,每次退出后都会清理这个文件夹。 在所有剪辑都剪切和过滤后,它们将被合并,如果通过了最大文件大小限制(如果有的话),将被保存到与脚本相同目录下名为finalVideos的文件夹中。如果设置了大小限制,最终编码步骤将使用相同的tempVideoFiles以较低的质量重复进行。

菜单和选项

菜单

窗口顶部的三个菜单中包含了许多选项和实用工具:

  • 新建项目 - 清除所有配置,关闭所有剪辑并刷新以开始新会话。
  • 打开项目 - 从*.webmproj文件打开先前保存的项目。
  • 保存项目 - 将项目保存为*.webmproj文件。
  • 运行场景变化检测 - 扫描当前视频寻找场景变化,在检测到场景变化时添加时间线标记。
  • 从Youtube-dlp支持的URL加载视频 - 从任何youtube-dlp支持的网站加载视频或流,支持数百个网站。
  • 加载图像作为静态视频 - 将图像作为视频剪辑加载,加载时会询问图像应该填充到的持续时间。
  • 监视剪贴板并自动添加URL - 启动一个监视线程,监控剪贴板中的URL并尝试自动下载。
  • 取消当前youtube-dlp下载 - 特别是对于直播流,事件结束后流可能会持续数小时,这可以优雅地结束并保存文件。
  • 更新Youtube-dl - 随着网站布局和API的变化,youtube-dlp可能会过时并停止工作,这允许你更新新的提取器。
  • 将剪辑分割成n个相等的子剪辑 - 将当前视频分割成你要求的任意数量的相等子剪辑,适用于分割长视频,其中编辑点不重要。
  • 将剪辑分割成n秒的子剪辑 - 类似,但将剪辑切割成尽可能多的n秒片段,如果需要,最后一个片段会被剪短。
  • 切换生成音频频谱 - 在时间线背景中显示视频剪辑的声波,以帮助相对于音频事件定位剪切。
  • 清除当前剪辑上的所有剪辑 - 清除当前视频上定义的所有子剪辑。
  • 通过文本范围添加子剪辑 - 接受文本形式的范围,例如"1:23到1:48.2"或"12秒-13.5秒",并将它们添加为新的子剪辑,接受多种格式。

configuration.json

statsWorkers - 允许运行的线程数,负责视频的背景分析,如场景变化和音频响度隔离。

encodeWorkers - 将并行运行以执行最终编码的ffmpeg实例数。

imageWorkers - 专门用于提供滤镜预览图像和时间线缩略图的线程数。

encoderStageThreads - 如果最终编码器支持多线程编码,则使用的线程数。 maxSizeOptimizationRetries - 系统在放弃之前尝试达到文件大小目标的最大次数。

tempFolder - 存储正在处理中的视频文件的文件夹。

tempDownloadFolder - 存放youtube-dlp下载内容的文件夹。

downloadNameFormat - 控制youtube-dlp如何格式化最终文件名输出的命名掩码。

defaultProfile - 最初在编码选项卡中选择和设置的默认配置文件。

defaultPostProcessingFilter - 在编码选项卡中应用的默认后处理滤镜。

defaultSliceLength - 使用'b'键或添加新子片段菜单选项添加的子片段的默认长度。

defaultTargetLength - 剪辑选项卡上长度计数器和警告栏设置的目标持续时间。

defaultTrimLength - 场景之间淡入淡出所假定占用的默认时间量。

defaultDragOffset - 拖动整个子片段时,搜索位置将跳回视频内的时间量。

defaultVideoFolder - 打开新视频文件时的默认文件夹。

defaultImageFolder - 打开新图像文件时的默认文件夹。

defaultAudioFolder - 打开新音频文件时的默认文件夹。

defaultFontFolder - 打开新字体文件时的默认文件夹。

defaultSubtitleFolder - 打开新字幕*.srt文件时的默认文件夹。

loopNudgeLimit1loopNudgeLimit2loopSearchLower1loopSearchUpper1loopSearchLower2loopSearchUpper2 - "循环工具"菜单在扫描期间使用的最大和最小范围。

seekSpeedNormal - 标准搜索速度。

seekSpeedFast - 按住shift键时的搜索速度。

seekSpeedSlow - 按住ctrl-shift键时的搜索速度。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号