【发布时间】:2018-12-13 03:27:27
【问题描述】:
所以,我为 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 上这样做。我怎样才能解决这个问题并让它写入文件,即使它无法写入管道,但同时写入两者而不是写入文件并尝试将其读回管道?
【问题讨论】: