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 的输出,你必须使用 ffprobe
(ffmpeg
附带):
$ 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 友好。哦好吧……
为什么这不起作用:
vim -d <(ffmpeg -i vid1.mp4 2>&1) <(ffmpeg -i vid2.mp4 2>&1)
我怎样才能让它工作?
目前它只是完全清除我的屏幕并导致我的终端冻结,对所有 ctrl-c ctrl-d 和 ctrl-z 完全没有反应。我每次都必须退出我的终端。
如果你想要一个适合 diffing 的输出,你必须使用 ffprobe
(ffmpeg
附带):
$ 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 友好。哦好吧……