bash - vim diff fffmpeg 输出使用命令替换
问题描述
为什么这不起作用:
vim -d <(ffmpeg -i vid1.mp4 2>&1) <(ffmpeg -i vid2.mp4 2>&1)
我怎样才能让它工作?
目前它只是完全清除我的屏幕并导致我的终端冻结,对所有 ctrl-c ctrl-d 和 ctrl-z 完全没有响应。我每次都必须退出我的终端。
解决方案
如果您想要一个适合差异的输出,则必须使用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 友好。哦,好吧……</p>
推荐阅读
- sql - 从 SELECT 语句的字段列表中的子查询返回 COUNT
- docker - Docker 和 hyper-v 问题
- python - 用漂亮的汤在网上刮掉约会表
- php - 如何将我的视图页面放入 laravel 中的 html 标记
- firebase - 查询会在任何更改时触发还是仅在结果更改时触发?
- r - 将两个数据框连接在一起,并使用最近的结果作为添加的行
- python - 使用 Microsoft Graph Delta 查询进行事件同步的问题
- mysql - 无法将 wordpress 网站移动到新文件夹
- latex - 如何在乳胶中调整表格中的文本
- flutter - facebook登录窗口弹出并立即关闭除我之外的所有帐户