gpt4 book ai didi

bash - 即使管道不接受输入,也同时输出到管道和文件

转载 作者:行者123 更新时间:2023-12-04 23:08:09 25 4
gpt4 key购买 nike

因此,我为 Cygwin 制作了一个使用 Windows 的 ImageMagick 和 FFmpeg 的脚本,但我不确定这里的结果是否也适用于 Linux 上的 bash。所以,脚本的作用是我有一些卡通视频文件,我正在使用 Waifu2x 将图像增强和放大到 4K,然后使用 ImageMagick 将其通过管道传输到 FFmpeg,它也用于将其大小调整为 3840x2160,以防万一分辨率略有不同。这是我为这个示例编写的一个小脚本,用于简化它输出到 FFmpeg 的方式,因为真正的脚本非常冗长和复杂。

#!/bin/bash
fun(){
convert out.png JPG:-|tee "$outfile"
}
fun|ffmpeg -f image2pipe -r 60 -i - -c:v libx265 -movflags +faststart "$outputfile"

现在,我注意到如果 FFmpeg 编码失败,函数会继续执行,但无法输出到 $outfile。 .我想要做的是让它能够在编码失败的情况下输出到该文件,因为我还将所有图像写入缓存文件夹以供 FFmpeg 在编码失败时运行,但我也想同时写入FFmpeg 和文件的管道。似乎正在发生的是命令 tee如果无法写入管道,则似乎拒绝写入文件。我不确定这种行为是否是有意的,和/或它是否也在 Linux bash 上这样做。我怎样才能解决这个问题并让它写入文件,即使它无法写入管道,但同时写入两者而不是写入文件并尝试将其读回管道?

最佳答案

你试过tee-p选项?它使 tee即使 tee 继续写作无法写入其标准输出,这在您的情况下意味着它应该可以应付 ffmpeg失败。

fun() {
convert out.png JPG:- | tee -p "$outfile"
}

关于bash - 即使管道不接受输入,也同时输出到管道和文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51177890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com