Итак, я сделал скрипт для Cygwin, который использует Windows ImageMagick и FFmpeg, но я не уверен, будут ли результаты здесь применимы и для bash в Linux. Итак, что скрипт делает, у меня есть несколько мультипликационных видеофайлов, и я использую 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. Как я могу обойти это и сделать так, чтобы он записывал в файл, даже если он не может записывать в канал, но записывать в оба одновременно, а не записывать в файл и пытаться прочитать его обратно в канал?