video-compare

video-compare

视频对比分析工具 支持多格式和交互控制

video-compare是一款分屏视频对比分析工具,基于C++14开发。该工具整合FFmpeg和SDL2库,实现交互式导航、播放控制和多种分析功能。它支持比较不同编解码器、调整算法等对视频的影响,可处理各种分辨率、帧率、扫描方式、颜色格式、容器格式的视频,还能对比图像或图像序列。工具提供可自定义的显示选项,方便用户进行深入的视频分析。

video-compare视频比较工具FFmpegSDL2C++14Github开源项目

video-compare

GitHub 发布版本

这是一个用C++14编写的分屏视频比较工具,利用FFmpeg库和SDL2。它提供交互式导航和播放控制,以及各种分析工具和可自定义的显示选项。

video-compare可用于直观比较编解码器、调整大小算法和其他修改对两个同步播放的视频文件的影响。该工具功能多样,允许比较分辨率、帧率、扫描方法、色彩格式、容器格式、编解码器或时长不同的视频。

得益于FFmpeg的灵活性,video-compare还能够比较图像或图像序列。

安装

Arch Linux

通过AUR安装:

git clone https://aur.archlinux.org/video-compare.git cd video-compare makepkg -sic

Homebrew

通过Homebrew安装:

brew install video-compare

预编译的Windows 10二进制文件

预构建的Windows 10 x86 64位版本可从此页面获取。 下载并解压缩.zip文件到您的系统,然后从命令提示符运行video-compare.exe

从源代码编译

自行构建

截图

视觉比较模式: 视觉比较模式

减法模式(加上时间偏移、200%缩放和放大): 减法模式

垂直堆叠模式: 堆叠模式

致谢

video-compare由Jon Frydensbjerg(电子邮件:jon@pixop.com)创建。代码主要基于 优秀的视频播放器GitHub项目:https://github.com/pockethook/player

特别感谢FFmpegSDL2stb的作者们。

使用方法

使用操作系统的DPI设置启动。视频像素在Retina 5K显示器等设备上会翻倍; 因此,这是在此类屏幕上显示HD 1080p视频的首选选项:

video-compare video1.mp4 video2.mp4

在支持高DPI模式的系统上允许使用该模式。视频像素将"一对一"显示。适用于 例如在Retina 5K显示器上显示UHD 4K视频:

video-compare -d video1.mp4 video2.mp4

将位深度增加到每个颜色分量10位(默认为8位)。这会提高保真度但 会影响性能。在具有高级显示器和支持30位色彩的驱动程序的系统上, 可显著减少可见的色带:

video-compare -b video1.mp4 video2.mp4

使用特定的窗口大小,而不是从视频尺寸派生窗口大小。视频 帧将被缩放以适应。如果宽度或高度任一被省略,缺失的值将根据 指定的另一个维度计算,以保持宽高比。这对于将高分辨率 视频缩小到低分辨率显示器上很有用:

video-compare -w 1280x720 video1.mp4 video2.mp4

自动缓冲区内循环播放,在缓冲区填满或到达文件末尾时触发,简化了 视频分析,无需手动重新开始播放(也提供双向"乒乓"模式,pp):

video-compare -a on video1.mp4 video2.mp4

移动右侧视频的显示时间戳,而不是假设视频已对齐。正值 会延迟左侧视频,而负值则相反地延迟右侧视频。当视频 稍微不同步时很有用:

video-compare -t 0.080 video1.mp4 video2.mp4

以全尺寸垂直堆叠显示视频,不使用滑块(也支持hstack进行水平堆叠):

video-compare -m vstack video1.mp4 video2.mp4

通过命令行指定的FFmpeg视频滤镜列表预处理一个或两个输入 (参见FFmpeg的视频滤镜文档)。 这是用于裁剪/填充(比较不同宽高比的视频)、 调整颜色、去隔行、降噪、加速/减速等的瑞士军刀:

video-compare -l crop=iw:ih-240 -r format=gray,pad=iw+320:ih:160:0 video1.mp4 video2.mp4

选择无法自动检测的解复用器(如VapourSynth):

video-compare --left-demuxer vapoursynth script.vpy video.mp4

明确选择右侧视频的解码器:

video-compare --right-decoder h264_cuvid video1.mp4 video2.mp4

为左侧视频设置硬件加速类型:

video-compare --left-hwaccel videotoolbox video1.mp4 video2.mp4

转换SDR视频的色彩空间并映射850尼特峰值亮度的HDR视频,以适应 sRGB显示器上相同的亮度水平:

video-compare -R 850 sdr_video.mp4 hdr_video.mp4

将500尼特峰值亮度的HDR视频映射到sRGB SDR显示器,并调整SDR视频 的色调,以模拟两个视频在实际HDR显示器上的相对亮度差异:

video-compare -T rel -L 500 hdr_video.mp4 sdr_video.mp4

使用双下划线(__)作为占位符,可以更简单地将视频与自身进行比较。这 使得可以执行诸如比较视频与其时间偏移版本或测试各种 滤镜集合等任务,而无需重复输入相同的、可能很长的路径:

video-compare some/very/long/and/complicated/video/path.mp4 __

当然,上述功能可以按任意顺序组合使用。不带任何参数启动video-compare可以 查看所有支持的选项。

控制

  • H: 切换屏幕上的控制帮助文本
  • 空格: 切换播放/暂停
  • 逗号 ,: 切换缓冲区内双向循环/暂停
  • 句号 .: 切换缓冲区内单向循环/暂停
  • Esc: 退出
  • 下箭头: 后退15秒
  • 左箭头: 后退1秒
  • 向下翻页: 后退600秒
  • 上箭头: 前进15秒
  • 右箭头: 前进1秒
  • 向上翻页: 前进600秒
  • J: 降低播放速度
  • L: 提高播放速度
  • S: 交换左右视频
  • A: 移动到缓冲区中的上一帧
  • D: 移动到缓冲区中的下一帧
  • F: 将两个画面保存为PNG图像到当前目录
  • P: 在控制台打印鼠标位置和光标下的像素值
  • M: 在控制台打印图像相似度指标
  • Z: 放大光标周围区域(结果显示在左下角)
  • C: 放大光标周围区域(结果显示在右下角)
  • R: 重新居中并重置缩放至100%(x1)
  • 1: 切换隐藏/显示左侧视频
  • 2: 切换隐藏/显示右侧视频
  • 3: 切换隐藏/显示HUD
  • 5: 缩放50%(x0.5)
  • 6: 缩放100%(x1)
  • 7: 缩放200%(x2)
  • 8: 缩放400%(x4)
  • 0: 切换视频/差异模式
  • 加号 +: 右侧视频时间前移1帧
  • 减号 -: 右侧视频时间后移1帧

水平移动鼠标来调整可移动滑块的位置。

使用鼠标滚轮放大/缩小光标下的像素。按住鼠标右键移动鼠标来平移视图。

左键单击鼠标可根据鼠标光标相对于窗口宽度的水平位置进行时间跳转(目标位置显示在右下角)。

按住SHIFT键同时按D可解码并移动到下一帧。

按住CTRL键的同时使用+/-进行时间调整可以更快地增减10帧。同样,按住ALT键可进行更大幅度的100帧时间调整。

构建

要求

需要安装FFmpeg头文件和开发库,以及SDL2及其TrueType字体渲染附加组件(libsdl2_ttf)。现在特别需要SDL2版本2.0.10或更高版本以支持亚像素精度渲染功能。用户在编译前可能需要升级现有的SDL2安装。

在Debian GNU/Linux上,可以通过apt安装所需的开发包:

apt install libavformat-dev libavcodec-dev libavfilter-dev libavutil-dev libswscale-dev libswresample-dev libsdl2-dev libsdl2-ttf-dev

说明

通过GNU Make编译源代码:

make

链接后的video-compare可执行文件将在源代码目录中创建。要进行系统范围的安装:

make install

注意,在大多数环境中执行此操作需要root权限(提示:使用sudo)。

注意事项

  1. 不支持音频播放。

  2. 为获得最佳体验,请将时间调整控制在几秒钟以内。

  3. 跳转需要在最近的关键帧(即I帧)上重新同步。

实用技巧

Windows资源管理器中的"发送到"集成

当你只需要指定输入文件而不需要其他参数时,可以直接从资源管理器启动工具,方法是右键点击 -> 发送到 -> video-compare。

以下是此集成的工作方式:

https://user-images.githubusercontent.com/8549626/166630445-c8c511b7-005f-48aa-83bc-0eb9676cfa2a.mp4

你可以通过选择两个文件,然后右键点击其中任何一个,按N键(聚焦"发送到"),然后按V键(选择"video-compare")来快速实现。

要让video-compare出现在"发送到"字段中,你需要打开"发送到"文件夹,可以通过在运行(Windows + R)中输入shell:sendto来访问,然后只需创建一个指向video-compare.exe的快捷方式即可。

感谢couleurm分享这个技巧并创建上面的屏幕录像。

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多