【发布时间】:2021-07-17 00:45:15
【问题描述】:
为什么这不起作用:
vim -d <(ffmpeg -i vid1.mp4 2>&1) <(ffmpeg -i vid2.mp4 2>&1)
我怎样才能让它工作?
目前它只是完全清除我的屏幕并导致我的终端冻结,对所有 ctrl-c ctrl-d 和 ctrl-z 完全没有响应。我每次都必须退出我的终端。
【问题讨论】:
标签: bash macos vim terminal neovim
为什么这不起作用:
vim -d <(ffmpeg -i vid1.mp4 2>&1) <(ffmpeg -i vid2.mp4 2>&1)
我怎样才能让它工作?
目前它只是完全清除我的屏幕并导致我的终端冻结,对所有 ctrl-c ctrl-d 和 ctrl-z 完全没有响应。我每次都必须退出我的终端。
【问题讨论】:
标签: bash macos vim terminal neovim
如果你想要一个适合区分的输出,你必须使用ffprobe(附带ffmpeg):
$ vim -d <(ffprobe -i vid1.mp4 2>&1) <(ffprobe -i vid2.mp4 2>&1)
为什么?
ffmpeg是一个媒体转换器,在处理过程中会输出很多东西,包括源文件的一些信息。在不提供输出文件/流/任何东西的情况下使用它只是为了获取源文件的信息不是它应该如何使用的,嗯……它无论如何都不能正常工作:你得到你的信息,但终端可能是留在一个奇怪的状态,操作返回一个非零状态。
通过使用ffmpeg,您实际上是在依赖错误使用错误工具的副作用。
另一方面,ffprobe 专门用于获取有关源文件的信息。
通过使用ffprobe,您将获得正确使用正确工具的预期结果。
也就是说,ffprobe 可能与 ffmpeg 共享大量代码,因为您需要 2>&1 hack 以使其输出对 Vim 友好。哦,好吧……
【讨论】: