vim 使用命令替换来区分 ffmpeg 输出

vim diff fffmpeg output using command substitution

为什么这不起作用:

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

我怎样才能让它工作?

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

如果你想要一个适合 diffing 的输出,你必须使用 ffprobeffmpeg 附带):

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

Why?

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

通过使用 ffmpeg,您实际上是在依赖不正确地使用错误工具的副作用。

另一方面,

ffprobe 专门用于获取有关源文件的信息。

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


也就是说,ffprobe 可能与 ffmpeg 共享很多代码,因为您需要 2>&1 hack 来使其输出 Vim 友好。哦好吧……