首页 > 解决方案 > vim diff fffmpeg 输出使用命令替换

问题描述

为什么这不起作用:

vim -d <(ffmpeg -i vid1.mp4 2>&1) <(ffmpeg -i vid2.mp4 2>&1) 

我怎样才能让它工作?

目前它只是完全清除我的屏幕并导致我的终端冻结,对所有 ctrl-c ctrl-d 和 ctrl-z 完全没有响应。我每次都必须退出我的终端。

标签: bashmacosvimterminalneovim

解决方案


如果您想要一个适合差异的输出,则必须使用ffprobe(附带):ffmpeg

$ vim -d <(ffprobe -i vid1.mp4 2>&1) <(ffprobe -i vid2.mp4 2>&1)

为什么?

ffmpeg是一个媒体转换器,在处理过程中会输出很多东西,包括源文件的一些信息。在不提供输出文件/流/任何内容的情况下使用它只是为了获取有关源文件的信息并不是它应该如何使用的方式,而且,嗯……它无论如何都不能正常工作:你得到你的信息,但终端可能是留在一个奇怪的状态,操作返回一个非零状态。

通过使用ffmpeg,您基本上依赖于错误使用错误工具的副作用。

ffprobe另一方面,它专门用于获取源文件的信息。

通过使用ffprobe,您依赖于正确使用正确工具的预期结果。


也就是说,ffprobe可能与它共享大量代码,ffmpeg因为您需要该2>&1hack 以使其输出对 Vim 友好。哦,好吧……</p>


推荐阅读