Bash 即使管道为';不接受输入

Bash 即使管道为';不接受输入,bash,ffmpeg,cygwin,Bash,Ffmpeg,Cygwin,因此,我为Cygwin编写了一个使用Windows的ImageMagick和FFmpeg的脚本,但我不确定这里的结果是否也适用于Linux上的bash。因此,脚本所做的是我有一些卡通视频文件,我使用Waifu2x将图像增强并放大到4K,然后使用ImageMagick将其传输到FFmpeg,如果分辨率稍有不同,也可以使用FFmpeg将其调整为3840x2160。这里是我为这个示例编写的一个小脚本,它简化了如何输出到FFmpeg,因为真正的脚本非常冗长和复杂 #!/bin/bash fun(){ c

因此,我为Cygwin编写了一个使用Windows的ImageMagick和FFmpeg的脚本,但我不确定这里的结果是否也适用于Linux上的bash。因此,脚本所做的是我有一些卡通视频文件,我使用Waifu2x将图像增强并放大到4K,然后使用ImageMagick将其传输到FFmpeg,如果分辨率稍有不同,也可以使用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
无法写入管道,则它似乎拒绝写入文件。我不确定这种行为是否是有意的,和/或它是否在LinuxBash上也这样做。我如何才能绕过这个问题,让它写入文件,即使它无法写入管道,但同时写入两个文件,而不是写入文件并尝试将其读回管道?

您是否尝试过使用
-p
选项执行
tee
?即使
tee
无法写入其标准输出,它也会使
tee
继续写入,这意味着如果
ffmpeg
失败,它应该能够处理

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

您是否尝试过使用
-p
选项进行
tee
?即使
tee
无法写入其标准输出,它也会使
tee
继续写入,这意味着如果
ffmpeg
失败,它应该能够处理

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