У меня есть этот Баш скрипт для пакетного преобразования некоторых mp4 файлов:Баш скрипт для преобразования FFmpeg не петля
#!/bin/bash
ls dr*.mp4 | grep -v -E "\.[^\.]+\." | sed "s/.mp4//g" | while read f
do
TARGET="$f.ffmpeg.mp4"
if ! [ -f $TARGET ]
then
echo $TARGET
ffmpeg -nostdin -i $f.mp4 -s 320x180 -vc h264 -acodec copy -f mp4 -y $TARGET
fi
TARGET="$f.ffmpeg.flv"
if ! [ -f $TARGET ]
then
echo $TARGET
ffmpeg -nostdin -i $f.mp4 -s 320x180 -acodec copy -y $TARGET
fi
TARGET="$f.jpg"
if ! [ -f $TARGET ]
then
echo $TARGET
ffmpeg -nostdin -i $f.ffmpeg.mp4 -ss 0 -vframes 1 -f image2 $TARGET
fi
TARGET="$f.ffmpeg.ogv"
if ! [ -f $TARGET ]
then
echo $TARGET
ffmpeg -nostdin -i $f.mp4 -s 320x176 -ar 11025 -acodec libvorbis -y $TARGET
fi
done
Он работает один раз, но делает и преобразует имя входного файла в 4 различных форматах, но делает а не цикл к следующему имени входного файла. Я попытался перетасовать порядок различных преобразований, но сценарий выполняется ровно один раз для одного имени файла. Я попытался запустить FFmpeg с -nostdin флагом, но он говорит
"Unrecognized option 'nostdin'"
версия FFmpeg является FFmpeg версия 0.10.6-6: 0.10.6-0ubuntu0jon1 ~ lucid2 - Я просто обновить пакет FFmpeg из http://ppa.launchpad.net/jon-severinsson/ffmpeg/ubuntu и не может найти более новую версию. Базовая система
Distributor ID: Ubuntu
Description: Ubuntu 10.04.1 LTS
Release: 10.04
Codename: lucid
Что такое вывод 'ls dr * .mp4 | grep -v -E "\. [^ \.] + \." | sed "s/.mp4 // g" '? – slhck